1
1
package flagd
2
2
3
3
import (
4
+ "reflect"
4
5
"testing"
5
6
6
7
"github.com/open-feature/flagd/core/pkg/sync"
@@ -9,29 +10,36 @@ import (
9
10
process "github.com/open-feature/go-sdk-contrib/providers/flagd/pkg/service/in_process"
10
11
of "github.com/open-feature/go-sdk/openfeature"
11
12
"go.uber.org/mock/gomock"
13
+ "google.golang.org/grpc"
14
+ "google.golang.org/grpc/credentials/insecure"
12
15
)
13
16
14
17
func TestNewProvider (t * testing.T ) {
15
18
customSyncProvider := process .NewDoNothingCustomSyncProvider ()
19
+ gRPCDialOptionOverride := []grpc.DialOption {
20
+ grpc .WithTransportCredentials (insecure .NewCredentials ()),
21
+ grpc .WithAuthority ("test-authority" ),
22
+ }
16
23
17
24
tests := []struct {
18
- name string
19
- expectedResolver ResolverType
20
- expectPort uint16
21
- expectHost string
22
- expectTargetUri string
23
- expectCacheType cache.Type
24
- expectCertPath string
25
- expectMaxRetries int
26
- expectCacheSize int
27
- expectOtelIntercept bool
28
- expectSocketPath string
29
- expectTlsEnabled bool
30
- expectProviderID string
31
- expectSelector string
32
- expectCustomSyncProvider sync.ISync
33
- expectCustomSyncProviderUri string
34
- options []ProviderOption
25
+ name string
26
+ expectedResolver ResolverType
27
+ expectPort uint16
28
+ expectHost string
29
+ expectTargetUri string
30
+ expectCacheType cache.Type
31
+ expectCertPath string
32
+ expectMaxRetries int
33
+ expectCacheSize int
34
+ expectOtelIntercept bool
35
+ expectSocketPath string
36
+ expectTlsEnabled bool
37
+ expectProviderID string
38
+ expectSelector string
39
+ expectCustomSyncProvider sync.ISync
40
+ expectCustomSyncProviderUri string
41
+ expectGrpcDialOptionsOverride []grpc.DialOption
42
+ options []ProviderOption
35
43
}{
36
44
{
37
45
name : "default construction" ,
@@ -173,6 +181,20 @@ func TestNewProvider(t *testing.T) {
173
181
WithCustomSyncProvider (customSyncProvider ),
174
182
},
175
183
},
184
+ {
185
+ name : "with gRPC DialOptions override with in-process resolver" ,
186
+ expectedResolver : inProcess ,
187
+ expectHost : defaultHost ,
188
+ expectPort : defaultInProcessPort ,
189
+ expectCacheType : defaultCache ,
190
+ expectCacheSize : defaultMaxCacheSize ,
191
+ expectMaxRetries : defaultMaxEventStreamRetries ,
192
+ expectGrpcDialOptionsOverride : gRPCDialOptionOverride ,
193
+ options : []ProviderOption {
194
+ WithInProcessResolver (),
195
+ WithGrpcDialOptionsOverride (gRPCDialOptionOverride ),
196
+ },
197
+ },
176
198
{
177
199
name : "with selector and providerID with in-process resolver" ,
178
200
expectedResolver : inProcess ,
@@ -295,6 +317,18 @@ func TestNewProvider(t *testing.T) {
295
317
test .expectCustomSyncProviderUri , config .CustomSyncProviderUri )
296
318
}
297
319
320
+ if test .expectGrpcDialOptionsOverride != nil {
321
+ if config .GrpcDialOptionsOverride == nil {
322
+ t .Errorf ("incorrent configuration GrpcDialOptionsOverride, expected %v, got nil" , config .GrpcDialOptionsOverride )
323
+ } else if ! reflect .DeepEqual (config .GrpcDialOptionsOverride , test .expectGrpcDialOptionsOverride ) {
324
+ t .Errorf ("incorrent configuration GrpcDialOptionsOverride, expected %v, got %v" , test .expectGrpcDialOptionsOverride , config .GrpcDialOptionsOverride )
325
+ }
326
+ } else {
327
+ if config .GrpcDialOptionsOverride != nil {
328
+ t .Errorf ("incorrent configuration GrpcDialOptionsOverride, expected nil, got %v" , config .GrpcDialOptionsOverride )
329
+ }
330
+ }
331
+
298
332
// this line will fail linting if this provider is no longer compatible with the openfeature sdk
299
333
var _ of.FeatureProvider = flagdProvider
300
334
})
0 commit comments