github.com/argoproj/argo-cd/v3@v3.2.1/cmd/util/common_test.go (about) 1 package util 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestValidateBearerTokenAndPasswordCombo(t *testing.T) { 10 tests := []struct { 11 name string 12 bearerToken string 13 password string 14 expectError bool 15 errorMsg string 16 }{ 17 { 18 name: "Both token and password set", 19 bearerToken: "some-token", 20 password: "some-password", 21 expectError: true, 22 errorMsg: "only --bearer-token or --password is allowed, not both", 23 }, 24 { 25 name: "Only token set", 26 bearerToken: "some-token", 27 password: "", 28 expectError: false, 29 }, 30 { 31 name: "Only password set", 32 bearerToken: "", 33 password: "some-password", 34 expectError: false, 35 }, 36 { 37 name: "Neither token nor password set", 38 bearerToken: "", 39 password: "", 40 expectError: false, 41 }, 42 } 43 44 for _, tt := range tests { 45 t.Run(tt.name, func(t *testing.T) { 46 err := ValidateBearerTokenAndPasswordCombo(tt.bearerToken, tt.password) 47 if tt.expectError { 48 require.ErrorContains(t, err, tt.errorMsg) 49 } else { 50 require.NoError(t, err) 51 } 52 }) 53 } 54 } 55 56 func TestValidateBearerTokenForGitOnly(t *testing.T) { 57 tests := []struct { 58 name string 59 bearerToken string 60 repoType string 61 expectError bool 62 errorMsg string 63 }{ 64 { 65 name: "Bearer token with helm repo", 66 bearerToken: "some-token", 67 repoType: "helm", 68 expectError: true, 69 errorMsg: "--bearer-token is only supported for Git repositories", 70 }, 71 { 72 name: "Bearer token with git repo", 73 bearerToken: "some-token", 74 repoType: "git", 75 expectError: false, 76 }, 77 { 78 name: "No bearer token with helm repo", 79 bearerToken: "", 80 repoType: "helm", 81 expectError: false, 82 }, 83 { 84 name: "No bearer token with git repo", 85 bearerToken: "", 86 repoType: "git", 87 expectError: false, 88 }, 89 { 90 name: "Bearer token with empty repo", 91 bearerToken: "some-token", 92 repoType: "", 93 expectError: true, 94 errorMsg: "--bearer-token is only supported for Git repositories", 95 }, 96 } 97 98 for _, tt := range tests { 99 t.Run(tt.name, func(t *testing.T) { 100 err := ValidateBearerTokenForGitOnly(tt.bearerToken, tt.repoType) 101 if tt.expectError { 102 require.ErrorContains(t, err, tt.errorMsg) 103 } else { 104 require.NoError(t, err) 105 } 106 }) 107 } 108 } 109 110 func TestValidateBearerTokenForHTTPSRepoOnly(t *testing.T) { 111 tests := []struct { 112 name string 113 bearerToken string 114 isHTTPS bool 115 expectError bool 116 errorMsg string 117 }{ 118 { 119 name: "Bearer token with HTTPS repo", 120 bearerToken: "some-token", 121 isHTTPS: true, 122 expectError: false, 123 }, 124 { 125 name: "Bearer token with non-HTTPS repo", 126 bearerToken: "some-token", 127 isHTTPS: false, 128 expectError: true, 129 errorMsg: "--bearer-token is only supported for HTTPS repositories", 130 }, 131 { 132 name: "No bearer token with HTTPS repo", 133 bearerToken: "", 134 isHTTPS: true, 135 expectError: false, 136 }, 137 { 138 name: "No bearer token with non-HTTPS repo", 139 bearerToken: "", 140 isHTTPS: false, 141 expectError: false, 142 }, 143 } 144 145 for _, tt := range tests { 146 t.Run(tt.name, func(t *testing.T) { 147 err := ValidateBearerTokenForHTTPSRepoOnly(tt.bearerToken, tt.isHTTPS) 148 if tt.expectError { 149 require.ErrorContains(t, err, tt.errorMsg) 150 } else { 151 require.NoError(t, err) 152 } 153 }) 154 } 155 }