@@ -9,32 +9,132 @@ import (
99 sdkpb "github.com/smartcontractkit/chainlink-protos/cre/go/sdk"
1010)
1111
12- func TestTeeProvider (t * testing.T ) {
12+ func TestNewTeeProvider (t * testing.T ) {
1313 t .Parallel ()
1414 t .Run ("matches any" , func (t * testing.T ) {
15- p := TeeProvider ( sdkpb .TeeType_TEE_TYPE_AWS_NITRO )
15+ p := teeProvider { TeeType : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , regions : map [ string ] bool { "us-west-2" : true }}
1616 tee := & sdkpb.Tee {Type : & sdkpb.Tee_Any {Any : & emptypb.Empty {}}}
1717 assert .True (t , p .Provides (tee ))
1818 })
1919
20- t .Run ("matches type selection" , func (t * testing.T ) {
21- p := TeeProvider ( sdkpb .TeeType_TEE_TYPE_AWS_NITRO )
20+ t .Run ("matches type selection with no region constraint " , func (t * testing.T ) {
21+ p := teeProvider { TeeType : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , regions : map [ string ] bool { "us-west-2" : true }}
2222 tee := & sdkpb.Tee {Type : & sdkpb.Tee_TypeSelection {
2323 TypeSelection : & sdkpb.TeeTypeSelection {
24- Types : []sdkpb.TeeType {sdkpb .TeeType (99 ), sdkpb .TeeType_TEE_TYPE_AWS_NITRO },
24+ Types : []* sdkpb.TeeTypeAndRegions {
25+ {Type : sdkpb .TeeType (99 )},
26+ {Type : sdkpb .TeeType_TEE_TYPE_AWS_NITRO },
27+ },
2528 },
2629 }}
2730 assert .True (t , p .Provides (tee ))
2831 })
2932
30- t .Run ("does not match any type" , func (t * testing.T ) {
31- // Use a cast to an unknown value so we don't need a second enum variant.
32- p := TeeProvider (sdkpb .TeeType (99 ))
33+ t .Run ("does not match different types" , func (t * testing.T ) {
34+ p := teeProvider {TeeType : sdkpb .TeeType (99 )}
3335 tee := & sdkpb.Tee {Type : & sdkpb.Tee_TypeSelection {
3436 TypeSelection : & sdkpb.TeeTypeSelection {
35- Types : []sdkpb.TeeType {sdkpb .TeeType_TEE_TYPE_AWS_NITRO },
37+ Types : []* sdkpb.TeeTypeAndRegions {
38+ {Type : sdkpb .TeeType_TEE_TYPE_AWS_NITRO },
39+ },
3640 },
3741 }}
3842 assert .False (t , p .Provides (tee ))
3943 })
44+
45+ t .Run ("matches type and region" , func (t * testing.T ) {
46+ p := teeProvider {TeeType : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , regions : map [string ]bool {"us-west-2" : true }}
47+ tee := & sdkpb.Tee {Type : & sdkpb.Tee_TypeSelection {
48+ TypeSelection : & sdkpb.TeeTypeSelection {
49+ Types : []* sdkpb.TeeTypeAndRegions {
50+ {Type : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , Regions : []string {"us-west-2" }},
51+ },
52+ },
53+ }}
54+ assert .True (t , p .Provides (tee ))
55+ })
56+
57+ t .Run ("matches type but not region" , func (t * testing.T ) {
58+ p := teeProvider {TeeType : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , regions : map [string ]bool {"us-west-2" : true }}
59+ tee := & sdkpb.Tee {Type : & sdkpb.Tee_TypeSelection {
60+ TypeSelection : & sdkpb.TeeTypeSelection {
61+ Types : []* sdkpb.TeeTypeAndRegions {
62+ {Type : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , Regions : []string {"eu-west-1" }},
63+ },
64+ },
65+ }}
66+ assert .False (t , p .Provides (tee ))
67+ })
68+
69+ t .Run ("matches one of multiple requested regions" , func (t * testing.T ) {
70+ p := teeProvider {TeeType : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , regions : map [string ]bool {"eu-west-1" : true }}
71+ tee := & sdkpb.Tee {Type : & sdkpb.Tee_TypeSelection {
72+ TypeSelection : & sdkpb.TeeTypeSelection {
73+ Types : []* sdkpb.TeeTypeAndRegions {
74+ {Type : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , Regions : []string {"us-west-2" , "eu-west-1" }},
75+ },
76+ },
77+ }}
78+ assert .True (t , p .Provides (tee ))
79+ })
80+
81+ t .Run ("provider has multiple regions and one matches" , func (t * testing.T ) {
82+ p := teeProvider {
83+ TeeType : sdkpb .TeeType_TEE_TYPE_AWS_NITRO ,
84+ regions : map [string ]bool {"us-west-2" : true , "us-east-1" : true },
85+ }
86+ tee := & sdkpb.Tee {Type : & sdkpb.Tee_TypeSelection {
87+ TypeSelection : & sdkpb.TeeTypeSelection {
88+ Types : []* sdkpb.TeeTypeAndRegions {
89+ {Type : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , Regions : []string {"us-east-1" }},
90+ },
91+ },
92+ }}
93+ assert .True (t , p .Provides (tee ))
94+ })
95+
96+ t .Run ("no matching region across multiple provider regions" , func (t * testing.T ) {
97+ p := teeProvider {
98+ TeeType : sdkpb .TeeType_TEE_TYPE_AWS_NITRO ,
99+ regions : map [string ]bool {"us-west-2" : true , "us-east-1" : true },
100+ }
101+ tee := & sdkpb.Tee {Type : & sdkpb.Tee_TypeSelection {
102+ TypeSelection : & sdkpb.TeeTypeSelection {
103+ Types : []* sdkpb.TeeTypeAndRegions {
104+ {Type : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , Regions : []string {"ap-southeast-1" }},
105+ },
106+ },
107+ }}
108+ assert .False (t , p .Provides (tee ))
109+ })
110+
111+ t .Run ("type mismatch ignores region match" , func (t * testing.T ) {
112+ p := teeProvider {TeeType : sdkpb .TeeType (99 ), regions : map [string ]bool {"us-west-2" : true }}
113+ tee := & sdkpb.Tee {Type : & sdkpb.Tee_TypeSelection {
114+ TypeSelection : & sdkpb.TeeTypeSelection {
115+ Types : []* sdkpb.TeeTypeAndRegions {
116+ {Type : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , Regions : []string {"us-west-2" }},
117+ },
118+ },
119+ }}
120+ assert .False (t , p .Provides (tee ))
121+ })
122+
123+ t .Run ("matches any tee" , func (t * testing.T ) {
124+ provides := NewTeeProvider (sdkpb .TeeType_TEE_TYPE_AWS_NITRO , []string {"us-west-2" })
125+ tee := & sdkpb.Tee {Type : & sdkpb.Tee_Any {Any : & emptypb.Empty {}}}
126+ assert .True (t , provides (tee ))
127+ })
128+
129+ t .Run ("returns a function that checks regions" , func (t * testing.T ) {
130+ provides := NewTeeProvider (sdkpb .TeeType_TEE_TYPE_AWS_NITRO , []string {"us-west-2" })
131+ tee := & sdkpb.Tee {Type : & sdkpb.Tee_TypeSelection {
132+ TypeSelection : & sdkpb.TeeTypeSelection {
133+ Types : []* sdkpb.TeeTypeAndRegions {
134+ {Type : sdkpb .TeeType_TEE_TYPE_AWS_NITRO , Regions : []string {"eu-west-1" }},
135+ },
136+ },
137+ }}
138+ assert .False (t , provides (tee ))
139+ })
40140}
0 commit comments