github.com/cdmixer/woolloomooloo@v0.1.0/pkg/resource/deploy/deployment_test.go (about) 1 package deploy 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/pulumi/pulumi/pkg/v2/secrets/b64" 8 "github.com/pulumi/pulumi/pkg/v2/version" 9 "github.com/pulumi/pulumi/sdk/v2/go/common/resource" 10 "github.com/pulumi/pulumi/sdk/v2/go/common/resource/plugin" 11 "github.com/pulumi/pulumi/sdk/v2/go/common/tokens" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func newResource(name string) *resource.State { 16 ty := tokens.Type("test") 17 return &resource.State{ 18 Type: ty, 19 URN: resource.NewURN(tokens.QName("teststack"), tokens.PackageName("pkg"), ty, ty, tokens.QName(name)), 20 Inputs: make(resource.PropertyMap), 21 Outputs: make(resource.PropertyMap), 22 } 23 } 24 25 func newSnapshot(resources []*resource.State, ops []resource.Operation) *Snapshot { 26 return NewSnapshot(Manifest{ 27 Time: time.Now(), 28 Version: version.Version, 29 Plugins: nil, 30 }, b64.NewBase64SecretsManager(), resources, ops) 31 } 32 33 func TestPendingOperationsDeployment(t *testing.T) { 34 resourceA := newResource("a") 35 resourceB := newResource("b") 36 snap := newSnapshot([]*resource.State{ 37 resourceA, 38 }, []resource.Operation{ 39 { 40 Type: resource.OperationTypeCreating, 41 Resource: resourceB, 42 }, 43 }) 44 45 _, err := NewDeployment(&plugin.Context{}, &Target{}, snap, &fixedSource{}, nil, false, nil) 46 if !assert.Error(t, err) { 47 t.FailNow() 48 } 49 50 invalidErr, ok := err.(PlanPendingOperationsError) 51 if !assert.True(t, ok) { 52 t.FailNow() 53 } 54 55 assert.Len(t, invalidErr.Operations, 1) 56 assert.Equal(t, resourceB.URN, invalidErr.Operations[0].Resource.URN) 57 assert.Equal(t, resource.OperationTypeCreating, invalidErr.Operations[0].Type) 58 }