github.com/pdecat/terraform@v0.11.9-beta1/backend/init/init_test.go (about) 1 package init 2 3 import ( 4 "os" 5 "reflect" 6 "testing" 7 8 backendLocal "github.com/hashicorp/terraform/backend/local" 9 ) 10 11 func TestInit_backend(t *testing.T) { 12 // Initialize the backends map 13 Init(nil) 14 15 backends := []struct { 16 Name string 17 Type string 18 }{ 19 { 20 "local", 21 "*local.Local", 22 }, { 23 "remote", 24 "*remote.Remote", 25 }, { 26 "atlas", 27 "*atlas.Backend", 28 }, { 29 "azurerm", 30 "*azure.Backend", 31 }, { 32 "consul", 33 "*consul.Backend", 34 }, { 35 "etcdv3", 36 "*etcd.Backend", 37 }, { 38 "gcs", 39 "*gcs.Backend", 40 }, { 41 "inmem", 42 "*inmem.Backend", 43 }, { 44 "manta", 45 "*manta.Backend", 46 }, { 47 "s3", 48 "*s3.Backend", 49 }, { 50 "swift", 51 "*swift.Backend", 52 }, { 53 "azure", 54 "init.deprecatedBackendShim", 55 }, 56 } 57 58 // Make sure we get the requested backend 59 for _, b := range backends { 60 f := Backend(b.Name) 61 bType := reflect.TypeOf(f()).String() 62 63 if bType != b.Type { 64 t.Fatalf("expected backend %q to be %q, got: %q", b.Name, b.Type, bType) 65 } 66 } 67 } 68 69 func TestInit_forceLocalBackend(t *testing.T) { 70 // Initialize the backends map 71 Init(nil) 72 73 enhancedBackends := []struct { 74 Name string 75 Type string 76 }{ 77 { 78 "local", 79 "nil", 80 }, { 81 "remote", 82 "*remote.Remote", 83 }, 84 } 85 86 // Set the TF_FORCE_LOCAL_BACKEND flag so all enhanced backends will 87 // return a local.Local backend with themselves as embedded backend. 88 if err := os.Setenv("TF_FORCE_LOCAL_BACKEND", "1"); err != nil { 89 t.Fatalf("error setting environment variable TF_FORCE_LOCAL_BACKEND: %v", err) 90 } 91 92 // Make sure we always get the local backend. 93 for _, b := range enhancedBackends { 94 f := Backend(b.Name) 95 96 local, ok := f().(*backendLocal.Local) 97 if !ok { 98 t.Fatalf("expected backend %q to be \"*local.Local\", got: %T", b.Name, f()) 99 } 100 101 bType := "nil" 102 if local.Backend != nil { 103 bType = reflect.TypeOf(local.Backend).String() 104 } 105 106 if bType != b.Type { 107 t.Fatalf("expected local.Backend to be %s, got: %s", b.Type, bType) 108 } 109 } 110 }