@@ -9,6 +9,200 @@ import (
9
9
oft "github.com/open-feature/go-sdk/openfeature/testing"
10
10
)
11
11
12
+ func TestMultiProvider_ProvidersMethod (t * testing.T ) {
13
+ testProvider1 := oft .NewTestProvider ()
14
+ testProvider2 := oft .NewTestProvider ()
15
+
16
+ defaultLogger , err := hooks .NewLoggingHook (false )
17
+ if err != nil {
18
+ t .Errorf ("Issue setting up logger,'%s'" , err )
19
+ }
20
+
21
+ mp , err := NewMultiProvider ([]UniqueNameProvider {
22
+ {
23
+ Provider : testProvider1 ,
24
+ UniqueName : "provider1" ,
25
+ }, {
26
+ Provider : testProvider2 ,
27
+ UniqueName : "provider2" ,
28
+ },
29
+ }, "test" , defaultLogger )
30
+
31
+ if err != nil {
32
+ t .Errorf ("Expected the multiprovider to successfully make an instance, '%s'" , err )
33
+ }
34
+
35
+ providers := mp .Providers ()
36
+
37
+ if len (providers ) != 2 {
38
+ t .Errorf ("Expected there to be '2' providers as passed but got: '%d'" , len (providers ))
39
+ }
40
+
41
+ if providers [0 ].UniqueName != "provider1" {
42
+ t .Errorf ("Expected unique provider name to be: 'provider1', got: '%s'" , providers [0 ].UniqueName )
43
+ }
44
+ if providers [1 ].UniqueName != "provider2" {
45
+ t .Errorf ("Expected unique provider name to be: 'provider2', got: '%s'" , providers [1 ].UniqueName )
46
+ }
47
+ }
48
+
49
+ func TestMultiProvider_ProvidersByNamesMethod (t * testing.T ) {
50
+ testProvider1 := oft .NewTestProvider ()
51
+ testProvider2 := oft .NewTestProvider ()
52
+
53
+ defaultLogger , err := hooks .NewLoggingHook (false )
54
+ if err != nil {
55
+ t .Errorf ("Issue setting up logger,'%s'" , err )
56
+ }
57
+
58
+ mp , err := NewMultiProvider ([]UniqueNameProvider {
59
+ {
60
+ Provider : testProvider1 ,
61
+ UniqueName : "provider1" ,
62
+ }, {
63
+ Provider : testProvider2 ,
64
+ UniqueName : "provider2" ,
65
+ },
66
+ }, "test" , defaultLogger )
67
+
68
+ if err != nil {
69
+ t .Errorf ("Expected the multiprovider to successfully make an instance, '%s'" , err )
70
+ }
71
+
72
+ providers := mp .ProvidersByName ()
73
+
74
+ if len (providers ) != 2 {
75
+ t .Errorf ("Expected there to be '2' providers as passed but got: '%d'" , len (providers ))
76
+ }
77
+
78
+ if provider , exists := providers ["provider1" ]; exists {
79
+ if provider .UniqueName != "provider1" {
80
+ t .Errorf ("Expected unique provider name to be: 'provider1', got: '%s'" , provider .UniqueName )
81
+ }
82
+ if provider .Provider != testProvider1 {
83
+ t .Errorf ("Expected unique provider name to be: 'provider1', got: '%s'" , provider .UniqueName )
84
+ }
85
+ } else {
86
+ t .Errorf ("Expected there to be a provider with the key of '%s', but none was found." , "provider1" )
87
+ }
88
+
89
+ if provider , exists := providers ["provider2" ]; exists {
90
+ if provider .UniqueName != "provider2" {
91
+ t .Errorf ("Expected unique provider name to be: 'provider2', got: '%s'" , provider .UniqueName )
92
+ }
93
+ if provider .Provider != testProvider2 {
94
+ t .Errorf ("Expected unique provider name to be: 'provider2', got: '%s'" , provider .UniqueName )
95
+ }
96
+ } else {
97
+ t .Errorf ("Expected there to be a provider with the key of '%s', but none was found." , "provider2" )
98
+ }
99
+
100
+ }
101
+
102
+ func TestMultiProvider_ProviderByNameMethod (t * testing.T ) {
103
+ testProvider1 := oft .NewTestProvider ()
104
+ testProvider2 := oft .NewTestProvider ()
105
+
106
+ defaultLogger , err := hooks .NewLoggingHook (false )
107
+ if err != nil {
108
+ t .Errorf ("Issue setting up logger,'%s'" , err )
109
+ }
110
+
111
+ mp , err := NewMultiProvider ([]UniqueNameProvider {
112
+ {
113
+ Provider : testProvider1 ,
114
+ UniqueName : "provider1" ,
115
+ }, {
116
+ Provider : testProvider2 ,
117
+ UniqueName : "provider2" ,
118
+ },
119
+ }, "test" , defaultLogger )
120
+
121
+ if err != nil {
122
+ t .Errorf ("Expected the multiprovider to successfully make an instance, '%s'" , err )
123
+ }
124
+
125
+ providers := mp .ProvidersByName ()
126
+
127
+ if len (providers ) != 2 {
128
+ t .Errorf ("Expected there to be '2' providers as passed but got: '%d'" , len (providers ))
129
+ }
130
+ if provider , exists := mp .ProviderByName ("provider2" ); exists {
131
+ if provider .UniqueName != "provider2" {
132
+ t .Errorf ("Expected unique provider name to be: 'provider2', got: '%s'" , provider .UniqueName )
133
+ }
134
+ if provider .Provider != testProvider2 {
135
+ t .Errorf ("Expected unique provider name to be: 'provider2', got: '%s'" , provider .UniqueName )
136
+ }
137
+ } else {
138
+ t .Errorf ("Expected there to be a provider with the key of '%s', but none was found." , "provider1" )
139
+ }
140
+
141
+ }
142
+
143
+ // todo: currently the `multiProvider.Metadata()` just give the `Name` of the multi provider it doesn't aggregate the passed providers as stated in this specification https://openfeature.dev/specification/appendix-a/#metadata so this test fails
144
+ func TestMultiProvider_MetaData (t * testing.T ) {
145
+ testProvider1 := oft .NewTestProvider ()
146
+ testProvider2 := oft .NewTestProvider ()
147
+
148
+ defaultLogger , err := hooks .NewLoggingHook (false )
149
+ if err != nil {
150
+ t .Errorf ("Issue setting up logger,'%s'" , err )
151
+ }
152
+
153
+ mp , err := NewMultiProvider ([]UniqueNameProvider {
154
+ {
155
+ Provider : testProvider1 ,
156
+ UniqueName : "provider1" ,
157
+ }, {
158
+ Provider : testProvider2 ,
159
+ UniqueName : "provider2" ,
160
+ },
161
+ }, "test" , defaultLogger )
162
+
163
+ if err != nil {
164
+ t .Errorf ("Expected the multiprovider to successfully make an instance, '%s'" , err )
165
+ }
166
+
167
+ expectedMetadata := MultiMetadata {
168
+ Name : "multiprovider" ,
169
+ OriginalMetadata : map [string ]openfeature.Metadata {
170
+ "provider1" : openfeature.Metadata {Name : "NoopProvider" },
171
+ "provider2" : openfeature.Metadata {Name : "NoopProvider" },
172
+ },
173
+ }
174
+
175
+ if mp .Metadata ().Name != "hi" {
176
+ t .Errorf ("Expected to see the aggregated metadata of all passed providers: '%s', got: '%s'" , expectedMetadata , mp .Metadata ().Name )
177
+ }
178
+ }
179
+
180
+ // func TestMultiProvider_Init(t *testing.T) {
181
+ // testProvider1 := oft.NewTestProvider()
182
+ // testProvider2 := oft.NewTestProvider()
183
+
184
+ // defaultLogger, err := hooks.NewLoggingHook(false)
185
+ // if err != nil {
186
+ // t.Errorf("Issue setting up logger,'%s'", err)
187
+ // }
188
+
189
+ // mp, err := NewMultiProvider([]UniqueNameProvider{
190
+ // {
191
+ // Provider: testProvider1,
192
+ // UniqueName: "provider1",
193
+ // }, {
194
+ // Provider: testProvider2,
195
+ // UniqueName: "provider2",
196
+ // },
197
+ // }, "test", defaultLogger)
198
+
199
+ // if err != nil {
200
+ // t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
201
+ // }
202
+
203
+ // mp.Init()
204
+ // }
205
+
12
206
func TestNewMultiProvider_ProviderUniqueNames (t * testing.T ) {
13
207
testProvider1 := memprovider .NewInMemoryProvider (map [string ]memprovider.InMemoryFlag {
14
208
"boolFlag" : {
@@ -29,7 +223,7 @@ func TestNewMultiProvider_ProviderUniqueNames(t *testing.T) {
29
223
t .Errorf ("Issue setting up logger,'%s'" , err )
30
224
}
31
225
32
- multiProvider , err := NewMultiProvider ([]UniqueNameProvider {
226
+ mp , err := NewMultiProvider ([]UniqueNameProvider {
33
227
{
34
228
Provider : testProvider1 ,
35
229
}, {
@@ -41,7 +235,7 @@ func TestNewMultiProvider_ProviderUniqueNames(t *testing.T) {
41
235
t .Errorf ("Expected the multiprovider to successfully make an instance, '%s'" , err )
42
236
}
43
237
44
- providerEntries := multiProvider .Providers ()
238
+ providerEntries := mp .Providers ()
45
239
46
240
if providerEntries [0 ].UniqueName != "InMemoryProvider" {
47
241
t .Errorf ("Expected unique provider name to be: 'InMemoryProvider', got: '%s'" , providerEntries [0 ].UniqueName )
@@ -77,7 +271,7 @@ func TestNewMultiProvider_DuplicateProviderGenerateUniqueNames(t *testing.T) {
77
271
t .Errorf ("Issue setting up logger,'%s'" , err )
78
272
}
79
273
80
- multiProvider , err := NewMultiProvider ([]UniqueNameProvider {
274
+ mp , err := NewMultiProvider ([]UniqueNameProvider {
81
275
{
82
276
Provider : testProvider1 ,
83
277
}, {
@@ -93,7 +287,7 @@ func TestNewMultiProvider_DuplicateProviderGenerateUniqueNames(t *testing.T) {
93
287
t .Errorf ("Expected the multiprovider to successfully make an instance, '%s'" , err )
94
288
}
95
289
96
- providerEntries := multiProvider .Providers ()
290
+ providerEntries := mp .Providers ()
97
291
98
292
if providerEntries [0 ].UniqueName != "InMemoryProvider" {
99
293
t .Errorf ("Expected unique provider name to be: 'InMemoryProvider', got: '%s'" , providerEntries [0 ].UniqueName )
@@ -121,7 +315,7 @@ func TestNewMultiProvider_ProvidersUsePassedNames(t *testing.T) {
121
315
t .Errorf ("Issue setting up logger,'%s'" , err )
122
316
}
123
317
124
- multiProvider , err := NewMultiProvider ([]UniqueNameProvider {
318
+ mp , err := NewMultiProvider ([]UniqueNameProvider {
125
319
{
126
320
Provider : testProvider1 ,
127
321
UniqueName : "theFirst" ,
@@ -135,7 +329,7 @@ func TestNewMultiProvider_ProvidersUsePassedNames(t *testing.T) {
135
329
t .Errorf ("Expected the multiprovider to successfully make an instance, '%s'" , err )
136
330
}
137
331
138
- providerEntries := multiProvider .Providers ()
332
+ providerEntries := mp .Providers ()
139
333
140
334
if providerEntries [0 ].UniqueName != "theFirst" {
141
335
t .Errorf ("Expected unique provider name to be: 'theFirst', got: '%s'" , providerEntries [0 ].UniqueName )
@@ -176,41 +370,3 @@ func TestNewMultiProvider_ProvidersErrorNameNotUnique(t *testing.T) {
176
370
t .Errorf ("Expected the multiprovider to have an error of: '%s', got: '%s'" , errUniqueName , err .Error ())
177
371
}
178
372
}
179
-
180
- // todo: currently the `multiProvider.Metadata()` just give the `Name` of the multi provider it doesn't aggregate the passed providers as stated in this specification https://openfeature.dev/specification/appendix-a/#metadata so this test fails
181
- func TestAggregatedMetaData (t * testing.T ){
182
- testProvider1 := oft .NewTestProvider ()
183
- testProvider2 := oft .NewTestProvider ()
184
-
185
- defaultLogger , err := hooks .NewLoggingHook (false )
186
- if err != nil {
187
- t .Errorf ("Issue setting up logger,'%s'" , err )
188
- }
189
-
190
- multiProvider , err := NewMultiProvider ([]UniqueNameProvider {
191
- {
192
- Provider : testProvider1 ,
193
- UniqueName : "provider1" ,
194
- }, {
195
- Provider : testProvider2 ,
196
- UniqueName : "provider2" ,
197
- },
198
- }, "test" , defaultLogger )
199
-
200
- if err != nil {
201
- t .Errorf ("Expected the multiprovider to successfully make an instance, '%s'" , err )
202
- }
203
-
204
- expectedMetadata := MultiMetadata {
205
- Name : "multiprovider" ,
206
- OriginalMetadata : map [string ]openfeature.Metadata {
207
- "provider1" : openfeature.Metadata {Name :"NoopProvider" },
208
- "provider2" : openfeature.Metadata {Name :"NoopProvider" },
209
-
210
- },
211
- }
212
-
213
- if multiProvider .Metadata ().Name != "hi" {
214
- t .Errorf ("Expected to see the aggregated metadata of all passed providers: '%s', got: '%s'" , expectedMetadata , multiProvider .Metadata ().Name )
215
- }
216
- }
0 commit comments