Testing pulumi functions that require config in golang
The pulumi.WithMocks
does not currently mock the config nor does it read from the provided config. To overcome this it is necessary to create a new WithMocks
function. Originally from this GitHub Issue comment.
func WithMocksAndConfig(project, stack string, config map[string]string, mocks pulumi.MockResourceMonitor) pulumi.RunOption {
return func(info *pulumi.RunInfo) {
info.Project, info.Stack, info.Mocks, info.Config = project, stack, mocks, config
}
}
And a test function that uses it.
func TestExample(t *testing.T) {
config := map[string]string{
"project:example.foo": "goof",
"project:example.bar": "gold",
}
err := pulumi.RunErr(func(ctx *pulumi.Context) error {
rv, err := Example(ctx, "hello, world")
assert.NoError(t, err)
assert.NotNil(t, rv)
return nil
}, WithMocksAndConfig("project", "stack", config, mocks(0)))
assert.NoError(t, err)
}