| package swift |
| |
| import ( |
| "fmt" |
| "os" |
| "testing" |
| "time" |
| |
| "github.com/hashicorp/terraform/internal/backend" |
| ) |
| |
| // verify that we are doing ACC tests or the Swift tests specifically |
| func testACC(t *testing.T) { |
| skip := os.Getenv("TF_ACC") == "" && os.Getenv("TF_SWIFT_TEST") == "" |
| if skip { |
| t.Log("swift backend tests require setting TF_ACC or TF_SWIFT_TEST") |
| t.Skip() |
| } |
| t.Log("swift backend acceptance tests enabled") |
| } |
| |
| func TestBackend_impl(t *testing.T) { |
| var _ backend.Backend = new(Backend) |
| } |
| |
| func testAccPreCheck(t *testing.T) { |
| v := os.Getenv("OS_AUTH_URL") |
| if v == "" { |
| t.Fatal("OS_AUTH_URL must be set for acceptance tests") |
| } |
| } |
| |
| func TestBackendConfig(t *testing.T) { |
| testACC(t) |
| |
| // Build config |
| container := fmt.Sprintf("terraform-state-swift-testconfig-%x", time.Now().Unix()) |
| archiveContainer := fmt.Sprintf("%s_archive", container) |
| |
| config := map[string]interface{}{ |
| "archive_container": archiveContainer, |
| "container": container, |
| } |
| |
| b := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(config)).(*Backend) |
| |
| if b.container != container { |
| t.Fatal("Incorrect container was provided.") |
| } |
| if b.archiveContainer != archiveContainer { |
| t.Fatal("Incorrect archive_container was provided.") |
| } |
| } |
| |
| func TestBackend(t *testing.T) { |
| testACC(t) |
| |
| container := fmt.Sprintf("terraform-state-swift-testbackend-%x", time.Now().Unix()) |
| |
| be0 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ |
| "container": container, |
| })).(*Backend) |
| |
| be1 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ |
| "container": container, |
| })).(*Backend) |
| |
| client := &RemoteClient{ |
| client: be0.client, |
| container: be0.container, |
| } |
| |
| defer client.deleteContainer() |
| |
| backend.TestBackendStates(t, be0) |
| backend.TestBackendStateLocks(t, be0, be1) |
| backend.TestBackendStateForceUnlock(t, be0, be1) |
| } |
| |
| func TestBackendArchive(t *testing.T) { |
| testACC(t) |
| |
| container := fmt.Sprintf("terraform-state-swift-testarchive-%x", time.Now().Unix()) |
| archiveContainer := fmt.Sprintf("%s_archive", container) |
| |
| be0 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ |
| "archive_container": archiveContainer, |
| "container": container, |
| })).(*Backend) |
| |
| be1 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ |
| "archive_container": archiveContainer, |
| "container": container, |
| })).(*Backend) |
| |
| defer func() { |
| client := &RemoteClient{ |
| client: be0.client, |
| container: be0.container, |
| } |
| |
| aclient := &RemoteClient{ |
| client: be0.client, |
| container: be0.archiveContainer, |
| } |
| |
| defer client.deleteContainer() |
| client.deleteContainer() |
| aclient.deleteContainer() |
| }() |
| |
| backend.TestBackendStates(t, be0) |
| backend.TestBackendStateLocks(t, be0, be1) |
| backend.TestBackendStateForceUnlock(t, be0, be1) |
| } |