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  }