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  }