1 package authservice
2
3 import (
4 "flag"
5 "testing"
6
7 "github.com/peterbourgon/ff/v3"
8 "github.com/stretchr/testify/assert"
9 )
10
11 func TestBindConfigFlagsUserService(t *testing.T) {
12 EnvUserServiceHost := "EA_USER_SERVICE_HOST"
13
14 tests := map[string]struct {
15 val string
16 expected string
17 }{
18 "Set UserService Env": {
19 val: "test",
20 expected: "test",
21 },
22 "Unset UserServiceEnv Env": {
23 val: "",
24 expected: defaultUserServiceHost,
25 },
26 }
27
28 for name, tc := range tests {
29 t.Run(name, func(t *testing.T) {
30 t.Setenv(EnvUserServiceHost, tc.val)
31 config := Config{}
32 flags := flag.NewFlagSet("test", flag.ExitOnError)
33 config.BindFlags(flags)
34 err := ff.Parse(flags, []string{}, ff.WithEnvVarNoPrefix(), ff.WithIgnoreUndefined(true))
35 assert.NoError(t, err)
36 assert.Equal(t, config.UserServiceHost, tc.expected)
37 })
38 }
39 }
40
41 func TestBindConfigFlagsRulesEngine(t *testing.T) {
42 EnvRulesEngineHost := "EA_RULES_ENGINE_HOST"
43 tests := map[string]struct {
44 val string
45 expected string
46 }{
47 "Set RulesEngine Env": {
48 val: "test",
49 expected: "test",
50 },
51 "Unset RulesEngine Env": {
52 val: "",
53 expected: defaultRulesEngineHost,
54 },
55 }
56
57 for name, tc := range tests {
58 t.Run(name, func(t *testing.T) {
59 t.Setenv(EnvRulesEngineHost, tc.val)
60 config := Config{}
61 flags := flag.NewFlagSet("test", flag.ExitOnError)
62 config.BindFlags(flags)
63 err := ff.Parse(flags, []string{}, ff.WithEnvVarNoPrefix(), ff.WithIgnoreUndefined(true))
64 assert.NoError(t, err)
65 assert.Equal(t, tc.expected, config.RulesEngineHost)
66 })
67 }
68 }
69
70 func TestBindConfigFlagsEdgeAPI(t *testing.T) {
71 tests := map[string]struct {
72 flags []string
73 expEdgeAPI string
74 validationError assert.ErrorAssertionFunc
75 }{
76 "Set Edge API Value": {
77 flags: []string{`--edge-api`, `https://dev1.edge-preprod.dev/api/v2`},
78 expEdgeAPI: "https://dev1.edge-preprod.dev/api/v2",
79 validationError: assert.NoError,
80 },
81 "Unset Edge API Value": {
82 flags: []string{`--edge-api`, ``},
83 expEdgeAPI: "",
84 validationError: EqualError("edge api url required"),
85 },
86 }
87
88 for name, tc := range tests {
89 tc := tc
90 t.Run(name, func(t *testing.T) {
91 t.Parallel()
92
93 conf := Config{}
94 flags := flag.NewFlagSet("test", flag.ExitOnError)
95 conf.BindFlags(flags)
96 err := ff.Parse(flags, tc.flags, ff.WithEnvVarNoPrefix(), ff.WithIgnoreUndefined(true))
97 assert.NoError(t, err)
98
99 assert.Equal(t, tc.expEdgeAPI, conf.EdgeAPI)
100
101 err = conf.Validate()
102 tc.validationError(t, err)
103 })
104 }
105 }
106
View as plain text