@ -112,6 +112,73 @@ func TestNodeAbstractResourceProvider(t *testing.T) {
}
}
// Make sure ProvideBy returns the final resolved provider
func TestNodeAbstractResourceSetProvider ( t * testing . T ) {
node := & NodeAbstractResource {
// Just enough NodeAbstractResource for the Provider function.
// (This would not be valid for some other functions.)
Addr : addrs . Resource {
Mode : addrs . DataResourceMode ,
Type : "terraform_remote_state" ,
Name : "baz" ,
} . InModule ( addrs . RootModule ) ,
Config : & configs . Resource {
Mode : addrs . ManagedResourceMode ,
Type : "terraform_remote_state" ,
Name : "baz" ,
// Just enough configs.Resource for the Provider method. Not
// actually valid for general use.
Provider : addrs . Provider {
Hostname : addrs . DefaultProviderRegistryHost ,
Namespace : "awesomecorp" ,
Type : "happycloud" ,
} ,
} ,
}
p , exact := node . ProvidedBy ( )
if exact {
t . Fatalf ( "no exact provider should be found from this confniguration, got %q\n" , p )
}
// the implied non-exact provider should be "terraform"
lpc , ok := p . ( addrs . LocalProviderConfig )
if ! ok {
t . Fatalf ( "expected LocalProviderConfig, got %#v\n" , p )
}
if lpc . LocalName != "terraform" {
t . Fatalf ( "expected non-exact provider of 'terraform', got %q" , lpc . LocalName )
}
// now set a resolved provider for the resource
resolved := addrs . AbsProviderConfig {
Provider : addrs . Provider {
Hostname : addrs . DefaultProviderRegistryHost ,
Namespace : "awesomecorp" ,
Type : "happycloud" ,
} ,
Module : addrs . RootModule ,
Alias : "test" ,
}
node . SetProvider ( resolved )
p , exact = node . ProvidedBy ( )
if ! exact {
t . Fatalf ( "exact provider should be found, got %q\n" , p )
}
apc , ok := p . ( addrs . AbsProviderConfig )
if ! ok {
t . Fatalf ( "expected AbsProviderConfig, got %#v\n" , p )
}
if apc . String ( ) != resolved . String ( ) {
t . Fatalf ( "incorrect resolved config: got %#v, wanted %#v\n" , apc , resolved )
}
}
func TestNodeAbstractResource_ReadResourceInstanceState ( t * testing . T ) {
mockProvider := mockProviderWithResourceTypeSchema ( "aws_instance" , & configschema . Block {
Attributes : map [ string ] * configschema . Attribute {