github.com/myhau/pulumi/pkg/v3@v3.70.2-0.20221116134521-f2775972e587/resource/deploy/deployment_test.go (about) 1 package deploy 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/pulumi/pulumi/pkg/v3/secrets/b64" 8 "github.com/pulumi/pulumi/pkg/v3/version" 9 "github.com/pulumi/pulumi/sdk/v3/go/common/resource" 10 "github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin" 11 "github.com/pulumi/pulumi/sdk/v3/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 t.Parallel() 35 36 resourceA := newResource("a") 37 resourceB := newResource("b") 38 snap := newSnapshot([]*resource.State{ 39 resourceA, 40 }, []resource.Operation{ 41 { 42 Type: resource.OperationTypeCreating, 43 Resource: resourceB, 44 }, 45 }) 46 47 _, err := NewDeployment(&plugin.Context{}, &Target{}, snap, nil, NewNullSource("test"), nil, false, nil) 48 assert.NoError(t, err) 49 } 50 51 func TestGlobUrn(t *testing.T) { 52 t.Parallel() 53 54 globs := []struct { 55 input string 56 expected []resource.URN 57 unexpected []resource.URN 58 }{ 59 { 60 input: "**", 61 expected: []resource.URN{ 62 "urn:pulumi:stack::test::typ$aws:resource::aname", 63 "urn:pulumi:stack::test::typ$aws:resource::bar", 64 "urn:pulumi:stack::test::typ$azure:resource::bar", 65 }, 66 }, 67 { 68 input: "urn:pulumi:stack::test::typ*:resource::bar", 69 expected: []resource.URN{ 70 "urn:pulumi:stack::test::typ$aws:resource::bar", 71 "urn:pulumi:stack::test::typ$azure:resource::bar", 72 }, 73 unexpected: []resource.URN{ 74 "urn:pulumi:stack::test::ty:resource::bar", 75 "urn:pulumi:stack::test::type:resource::foobar", 76 }, 77 }, 78 { 79 input: "**:aname", 80 expected: []resource.URN{"urn:pulumi:stack::test::typ$aws:resource::aname"}, 81 unexpected: []resource.URN{"urn:pulumi:stack::test::typ$aws:resource::somename"}, 82 }, 83 { 84 input: "*:*:stack::test::typ$aws:resource::*", 85 expected: []resource.URN{ 86 "urn:pulumi:stack::test::typ$aws:resource::aname", 87 "urn:pulumi:stack::test::typ$aws:resource::bar", 88 }, 89 unexpected: []resource.URN{ 90 "urn:pulumi:stack::test::typ$azure:resource::aname", 91 }, 92 }, 93 { 94 input: "stack::test::typ$aws:resource::none", 95 expected: []resource.URN{"stack::test::typ$aws:resource::none"}, 96 unexpected: []resource.URN{ 97 "stack::test::typ$aws:resource::nonee", 98 }, 99 }, 100 } 101 for _, tt := range globs { 102 tt := tt 103 t.Run(tt.input, func(t *testing.T) { 104 t.Parallel() 105 106 targets := NewUrnTargets([]string{tt.input}) 107 for _, urn := range tt.expected { 108 assert.True(t, targets.Contains(urn)) 109 } 110 }) 111 } 112 }