mirror of
https://github.com/opentffoundation/opentf.git
synced 2026-04-19 12:02:06 -04:00
This adds unit tests (that will fail at compile time) if various structs don't implement the right interfaces for locking
64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
package consul
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/hashicorp/terraform/backend"
|
|
"github.com/hashicorp/terraform/backend/remote-state"
|
|
"github.com/hashicorp/terraform/state/remote"
|
|
)
|
|
|
|
func TestRemoteClient_impl(t *testing.T) {
|
|
var _ remote.Client = new(RemoteClient)
|
|
var _ remote.ClientLocker = new(RemoteClient)
|
|
}
|
|
|
|
func TestRemoteClient(t *testing.T) {
|
|
addr := os.Getenv("CONSUL_HTTP_ADDR")
|
|
if addr == "" {
|
|
t.Log("consul tests require CONSUL_HTTP_ADDR")
|
|
t.Skip()
|
|
}
|
|
|
|
// Get the backend
|
|
b := backend.TestBackendConfig(t, New(), map[string]interface{}{
|
|
"address": addr,
|
|
"path": fmt.Sprintf("tf-unit/%s", time.Now().String()),
|
|
})
|
|
|
|
// Test
|
|
remotestate.TestClient(t, b)
|
|
}
|
|
|
|
func TestConsul_stateLock(t *testing.T) {
|
|
addr := os.Getenv("CONSUL_HTTP_ADDR")
|
|
if addr == "" {
|
|
t.Log("consul lock tests require CONSUL_HTTP_ADDR")
|
|
t.Skip()
|
|
}
|
|
|
|
path := fmt.Sprintf("tf-unit/%s", time.Now().String())
|
|
|
|
// create 2 instances to get 2 remote.Clients
|
|
sA, err := backend.TestBackendConfig(t, New(), map[string]interface{}{
|
|
"address": addr,
|
|
"path": path,
|
|
}).State()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
sB, err := backend.TestBackendConfig(t, New(), map[string]interface{}{
|
|
"address": addr,
|
|
"path": path,
|
|
}).State()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
remote.TestRemoteLocks(t, sA.(*remote.State).Client, sB.(*remote.State).Client)
|
|
}
|