11package cmd_test
22
33import (
4+ "errors"
45 "testing"
56
67 "github.com/DevLabFoundry/aws-cli-auth/cmd"
78 "github.com/DevLabFoundry/aws-cli-auth/internal/credentialexchange"
89 "github.com/go-test/deep"
910)
1011
11- func Test_ConfigMerge (t * testing.T ) {
12+ func Test_ConfigMerge_succeeds (t * testing.T ) {
1213 conf := & credentialexchange.CredentialConfig {
1314 BaseConfig : credentialexchange.BaseConfig {
1415 BrowserExecutablePath : "/foo/path" ,
1516 Role : "role1" ,
1617 RoleChain : []string {"role-123" },
1718 },
18- ProviderUrl : "https://my-idp.com/?app_id=testdd" ,
19+ PrincipalArn : "aw:arn:....123" ,
20+ ProviderUrl : "https://my-idp.com/?app_id=testdd" ,
1921 }
2022 if err := cmd .ConfigFromFlags (conf , & cmd.RootCmdFlags {}, & cmd.SamlCmdFlags {Role : "role-overridden-from-flags" }, "me" ); err != nil {
2123 t .Fatal (err )
@@ -28,8 +30,59 @@ func Test_ConfigMerge(t *testing.T) {
2830 RoleChain : []string {"role-123" },
2931 Username : "me" ,
3032 },
33+ PrincipalArn : "aw:arn:....123" ,
3134 }
3235 if diff := deep .Equal (conf , want ); len (diff ) > 0 {
3336 t .Errorf ("diff: %v" , diff )
3437 }
3538}
39+
40+ func Test_ConfigMerge_fails_with_missing (t * testing.T ) {
41+ t .Run ("provider not provided" , func (t * testing.T ) {
42+
43+ conf := & credentialexchange.CredentialConfig {
44+ BaseConfig : credentialexchange.BaseConfig {
45+ BrowserExecutablePath : "/foo/path" ,
46+ Role : "" ,
47+ RoleChain : []string {"role-123" },
48+ },
49+ ProviderUrl : "" ,
50+ }
51+ err := cmd .ConfigFromFlags (conf , & cmd.RootCmdFlags {}, & cmd.SamlCmdFlags {Role : "role-overridden-from-flags" }, "me" )
52+ if ! errors .Is (err , cmd .ErrValidationFailed ) {
53+ t .Error (err )
54+ }
55+ })
56+ t .Run ("role not provided" , func (t * testing.T ) {
57+
58+ conf := & credentialexchange.CredentialConfig {
59+ BaseConfig : credentialexchange.BaseConfig {
60+ BrowserExecutablePath : "/foo/path" ,
61+ Role : "" ,
62+ RoleChain : []string {"role-123" },
63+ },
64+ ProviderUrl : "https://my-idp.com/?app_id=testdd" ,
65+ }
66+ err := cmd .ConfigFromFlags (conf , & cmd.RootCmdFlags {}, & cmd.SamlCmdFlags {}, "me" )
67+ if ! errors .Is (err , cmd .ErrValidationFailed ) {
68+ t .Error (err )
69+ }
70+ })
71+ t .Run ("role and sso-role provided" , func (t * testing.T ) {
72+
73+ conf := & credentialexchange.CredentialConfig {
74+ BaseConfig : credentialexchange.BaseConfig {
75+ BrowserExecutablePath : "/foo/path" ,
76+ Role : "" ,
77+ RoleChain : []string {"role-123" },
78+ },
79+ SsoRegion : "foo" ,
80+ SsoRole : "foo:bar" ,
81+ ProviderUrl : "https://my-idp.com/?app_id=testdd" ,
82+ }
83+ err := cmd .ConfigFromFlags (conf , & cmd.RootCmdFlags {}, & cmd.SamlCmdFlags {}, "me" )
84+ if ! errors .Is (err , cmd .ErrValidationFailed ) {
85+ t .Error (err )
86+ }
87+ })
88+ }
0 commit comments