...

Source file src/edge-infra.dev/pkg/sds/emergencyaccess/authservice/config_test.go

Documentation: edge-infra.dev/pkg/sds/emergencyaccess/authservice

     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