github.com/muratcelep/terraform@v1.1.0-beta2-not-internal-4/not-internal/terraform/schemas_test.go (about) 1 package terraform 2 3 import ( 4 "github.com/muratcelep/terraform/not-internal/addrs" 5 "github.com/muratcelep/terraform/not-internal/configs/configschema" 6 "github.com/muratcelep/terraform/not-internal/providers" 7 ) 8 9 func simpleTestSchemas() *Schemas { 10 provider := simpleMockProvider() 11 provisioner := simpleMockProvisioner() 12 13 return &Schemas{ 14 Providers: map[addrs.Provider]*ProviderSchema{ 15 addrs.NewDefaultProvider("test"): provider.ProviderSchema(), 16 }, 17 Provisioners: map[string]*configschema.Block{ 18 "test": provisioner.GetSchemaResponse.Provisioner, 19 }, 20 } 21 } 22 23 // schemaOnlyProvidersForTesting is a testing helper that constructs a 24 // plugin library that contains a set of providers that only know how to 25 // return schema, and will exhibit undefined behavior if used for any other 26 // purpose. 27 // 28 // The intended use for this is in testing components that use schemas to 29 // drive other behavior, such as reference analysis during graph construction, 30 // but that don't actually need to interact with providers otherwise. 31 func schemaOnlyProvidersForTesting(schemas map[addrs.Provider]*ProviderSchema) *contextPlugins { 32 factories := make(map[addrs.Provider]providers.Factory, len(schemas)) 33 34 for providerAddr, schema := range schemas { 35 36 resp := &providers.GetProviderSchemaResponse{ 37 Provider: providers.Schema{ 38 Block: schema.Provider, 39 }, 40 ResourceTypes: make(map[string]providers.Schema), 41 DataSources: make(map[string]providers.Schema), 42 } 43 for t, tSchema := range schema.ResourceTypes { 44 resp.ResourceTypes[t] = providers.Schema{ 45 Block: tSchema, 46 Version: int64(schema.ResourceTypeSchemaVersions[t]), 47 } 48 } 49 for t, tSchema := range schema.DataSources { 50 resp.DataSources[t] = providers.Schema{ 51 Block: tSchema, 52 } 53 } 54 55 provider := &MockProvider{ 56 GetProviderSchemaResponse: resp, 57 } 58 59 factories[providerAddr] = func() (providers.Interface, error) { 60 return provider, nil 61 } 62 } 63 64 return newContextPlugins(factories, nil) 65 }