diff --git a/artifactory/commands/transferconfig/transferconfig_test.go b/artifactory/commands/transferconfig/transferconfig_test.go index 6c229f860..6a6674cfc 100644 --- a/artifactory/commands/transferconfig/transferconfig_test.go +++ b/artifactory/commands/transferconfig/transferconfig_test.go @@ -118,7 +118,7 @@ func TestValidateTargetServer(t *testing.T) { _, err = w.Write(content) assert.NoError(t, err) default: - content, err := json.Marshal(users) + content, err := json.Marshal(users) // #nosec G117 -- test mock response assert.NoError(t, err) _, err = w.Write(content) assert.NoError(t, err) diff --git a/artifactory/commands/transferfiles/utils_test.go b/artifactory/commands/transferfiles/utils_test.go index 017d19253..88161c1e1 100644 --- a/artifactory/commands/transferfiles/utils_test.go +++ b/artifactory/commands/transferfiles/utils_test.go @@ -479,12 +479,12 @@ var convertPatternToPathPrefixTestCases = []struct { input string expected string }{ - {"folder/subfolder/*", "folder/subfolder"}, // strips trailing /* - {"folder/**", "folder"}, // strips trailing /** - {"folder/", "folder"}, // strips trailing / - {"folder", "folder"}, // no change when no trailing pattern - {"a/b/c/d/e/*", "a/b/c/d/e"}, // deep path with wildcard - {"single", "single"}, // single segment without slash + {"folder/subfolder/*", "folder/subfolder"}, // strips trailing /* + {"folder/**", "folder"}, // strips trailing /** + {"folder/", "folder"}, // strips trailing / + {"folder", "folder"}, // no change when no trailing pattern + {"a/b/c/d/e/*", "a/b/c/d/e"}, // deep path with wildcard + {"single", "single"}, // single segment without slash } func TestConvertPatternToPathPrefix(t *testing.T) { @@ -592,11 +592,11 @@ var convertPatternToAqlMatchTestCases = []struct { input string expected string }{ - {"folder/subfolder/*", "*folder/subfolder*"}, // path with wildcard - {"folder", "*folder*"}, // simple folder name + {"folder/subfolder/*", "*folder/subfolder*"}, // path with wildcard + {"folder", "*folder*"}, // simple folder name {"org/company/project/*", "*org/company/project*"}, // deep nested path - {"*already/prefixed", "*already/prefixed*"}, // already has leading wildcard - {"already/suffixed*", "*already/suffixed*"}, // already has trailing wildcard + {"*already/prefixed", "*already/prefixed*"}, // already has leading wildcard + {"already/suffixed*", "*already/suffixed*"}, // already has trailing wildcard } func TestConvertPatternToAqlMatch(t *testing.T) { diff --git a/artifactory/commands/utils/precheckrunner/remoteurlchecker.go b/artifactory/commands/utils/precheckrunner/remoteurlchecker.go index 161649266..42b89f63e 100644 --- a/artifactory/commands/utils/precheckrunner/remoteurlchecker.go +++ b/artifactory/commands/utils/precheckrunner/remoteurlchecker.go @@ -109,7 +109,7 @@ func (rrc *RemoteRepositoryCheck) createRemoteUrlRequest() ([]remoteRepoSettings func (rrc *RemoteRepositoryCheck) doCheckRemoteRepositories(args RunArguments, remoteUrlRequest []remoteRepoSettings) (inaccessibleRepositories *[]inaccessibleRepository, err error) { artifactoryUrl := clientutils.AddTrailingSlashIfNeeded(args.ServerDetails.ArtifactoryUrl) - body, err := json.Marshal(remoteUrlRequest) + body, err := json.Marshal(remoteUrlRequest) // #nosec G117 -- credentials sent to Artifactory API if err != nil { return nil, errorutils.CheckError(err) } diff --git a/common/commands/config_test.go b/common/commands/config_test.go index 54762936b..3201d7527 100644 --- a/common/commands/config_test.go +++ b/common/commands/config_test.go @@ -443,7 +443,7 @@ func doConfig(t *testing.T, serverId string, inputDetails *config.ServerDetails, func configStructToString(t *testing.T, artConfig *config.ServerDetails) string { artConfig.IsDefault = false - marshaledStruct, err := json.Marshal(*artConfig) + marshaledStruct, err := json.Marshal(*artConfig) // #nosec G117 -- test helper assert.NoError(t, err) return string(marshaledStruct) } diff --git a/common/commands/metrics_collector_test.go b/common/commands/metrics_collector_test.go index 4c618b1e4..c9f69660b 100644 --- a/common/commands/metrics_collector_test.go +++ b/common/commands/metrics_collector_test.go @@ -191,7 +191,7 @@ func TestDetectCISystem(t *testing.T) { } // Restore environment after test - defer func() { + defer func() { for envVar, value := range originalEnv { if value != "" { if err := os.Setenv(envVar, value); err != nil { @@ -219,7 +219,7 @@ func TestDetectCISystem(t *testing.T) { {"No CI", "", "", ""}, } - for _, tt := range tests { + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { // Clear all CI environment variables for _, envVar := range ciEnvVars { diff --git a/common/spec/specfiles.go b/common/spec/specfiles.go index 2ff7e30cb..5b32b532f 100644 --- a/common/spec/specfiles.go +++ b/common/spec/specfiles.go @@ -94,9 +94,9 @@ type File struct { TargetPathInArchive string Include []string `json:"include,omitempty"` Package string `json:"package,omitempty"` - Version string `json:"version,omitempty"` - Type string `json:"type,omitempty"` - RepoKey string `json:"repoKey,omitempty"` + Version string `json:"version,omitempty"` + Type string `json:"type,omitempty"` + RepoKey string `json:"repoKey,omitempty"` } func (f File) GetInclude() []string { diff --git a/general/token/oidctokenexchange.go b/general/token/oidctokenexchange.go index 0504159bd..a06015107 100644 --- a/general/token/oidctokenexchange.go +++ b/general/token/oidctokenexchange.go @@ -173,7 +173,7 @@ func (otc *OidcTokenExchangeCommand) PrintResponseToConsole() { AccessToken: otc.response.AccessToken, Username: otc.response.Username, } - jsonOutput, err := json.Marshal(response) + jsonOutput, err := json.Marshal(response) // #nosec G117 -- intentional output of OIDC exchange result if err != nil { log.Error("Failed to marshal response to JSON:", err) return diff --git a/plugins/common/utils.go b/plugins/common/utils.go index 20d2c13eb..80596eb77 100644 --- a/plugins/common/utils.go +++ b/plugins/common/utils.go @@ -317,19 +317,29 @@ func PrintDetailedSummaryReport(basicSummary string, reader *content.ContentRead // Print a file tree based on the items' path in the reader's list. func PrintDeploymentView(reader *content.ContentReader) error { + output, err := GetDeploymentViewString(reader) + if err != nil { + return err + } + if len(output) > 0 { + log.Info("These files were uploaded:\n\n" + output) + } else { + log.Info("No files were uploaded.") + } + return nil +} + +func GetDeploymentViewString(reader *content.ContentReader) (string, error) { tree := artifactoryUtils.NewFileTree() for transferDetails := new(clientutils.FileTransferDetails); reader.NextRecord(transferDetails) == nil; transferDetails = new(clientutils.FileTransferDetails) { tree.AddFile(transferDetails.TargetPath, "") } if err := reader.GetError(); err != nil { - return err + return "", err } reader.Reset() output := tree.String() - if len(output) > 0 { - log.Info("These files were uploaded:\n\n" + output) - } - return nil + return output, nil } // Get the detailed summary record. diff --git a/utils/config/config.go b/utils/config/config.go index 1f2369c77..597af910b 100644 --- a/utils/config/config.go +++ b/utils/config/config.go @@ -590,11 +590,11 @@ type ServerDetails struct { OnemodelUrl string `json:"-"` ApptrustUrl string `json:"-"` User string `json:"user,omitempty"` - Password string `json:"password,omitempty"` // #nosec G117 -- config struct for auth + Password string `json:"password,omitempty"` // #nosec G117 -- config struct for auth SshKeyPath string `json:"sshKeyPath,omitempty"` SshPassphrase string `json:"sshPassphrase,omitempty"` - AccessToken string `json:"accessToken,omitempty"` // #nosec G117 -- config struct for auth - RefreshToken string `json:"refreshToken,omitempty"` // #nosec G117 -- config struct for auth + AccessToken string `json:"accessToken,omitempty"` // #nosec G117 -- config struct for auth + RefreshToken string `json:"refreshToken,omitempty"` // #nosec G117 -- config struct for auth ArtifactoryRefreshToken string `json:"artifactoryRefreshToken,omitempty"` ArtifactoryTokenRefreshInterval int `json:"tokenRefreshInterval,omitempty"` ClientCertPath string `json:"clientCertPath,omitempty"` diff --git a/utils/config/config_test.go b/utils/config/config_test.go index 612cbb62b..7aef2a5a0 100644 --- a/utils/config/config_test.go +++ b/utils/config/config_test.go @@ -246,9 +246,9 @@ func createEncryptionTestConfig() *Config { ServerId: "test-server", Url: "http://acme.jfrog.io", User: "elmar", - Password: "Wabbit", // #nosec G101 -- test data only + Password: "Wabbit", // #nosec G101 -- test data only AccessToken: "DewiciousWegOfWamb", // #nosec G101 -- test data only - SshPassphrase: "KiwwTheWabbit", // #nosec G101 -- test data only + SshPassphrase: "KiwwTheWabbit", // #nosec G101 -- test data only }}}, }} } @@ -479,7 +479,7 @@ func TestCreateAuthConfigAppendPreRequestFunctionBehavior(t *testing.T) { name: "DisableTokenRefreshTrue_WithArtifactoryRefreshToken", serverDetails: &ServerDetails{ ServerId: "test-server", - AccessToken: "access-token-123", // #nosec G101 -- test data only + AccessToken: "access-token-123", // #nosec G101 -- test data only ArtifactoryRefreshToken: "artifactory-refresh-token-789", // #nosec G101 -- test data only User: "testuser", Password: "testpass", // #nosec G101 -- test data only @@ -491,7 +491,7 @@ func TestCreateAuthConfigAppendPreRequestFunctionBehavior(t *testing.T) { name: "DisableTokenRefreshFalse_WithArtifactoryRefreshToken", serverDetails: &ServerDetails{ ServerId: "test-server", - AccessToken: "access-token-123", // #nosec G101 -- test data only + AccessToken: "access-token-123", // #nosec G101 -- test data only ArtifactoryRefreshToken: "artifactory-refresh-token-789", // #nosec G101 -- test data only User: "testuser", Password: "testpass", // #nosec G101 -- test data only diff --git a/utils/config/configtoken.go b/utils/config/configtoken.go index ce5f21bf6..c0b1cb094 100644 --- a/utils/config/configtoken.go +++ b/utils/config/configtoken.go @@ -18,11 +18,11 @@ type configToken struct { MissionControlUrl string `json:"missionControlUrl,omitempty"` PipelinesUrl string `json:"pipelinesUrl,omitempty"` User string `json:"user,omitempty"` - Password string `json:"password,omitempty"` // #nosec G117 -- config struct for auth + Password string `json:"password,omitempty"` // #nosec G117 -- config struct for auth SshKeyPath string `json:"sshKeyPath,omitempty"` SshPassphrase string `json:"sshPassphrase,omitempty"` - AccessToken string `json:"accessToken,omitempty"` // #nosec G117 -- config struct for auth - RefreshToken string `json:"refreshToken,omitempty"` // #nosec G117 -- config struct for auth + AccessToken string `json:"accessToken,omitempty"` // #nosec G117 -- config struct for auth + RefreshToken string `json:"refreshToken,omitempty"` // #nosec G117 -- config struct for auth TokenRefreshInterval int `json:"tokenRefreshInterval,omitempty"` ClientCertPath string `json:"clientCertPath,omitempty"` ClientCertKeyPath string `json:"clientCertKeyPath,omitempty"` @@ -98,7 +98,7 @@ func Export(details *ServerDetails) (string, error) { return "", errorutils.CheckErrorf("could not generate config token: config is encrypted, and wrong master key was provided") } } - buffer, err := json.Marshal(fromServerDetails(details)) + buffer, err := json.Marshal(fromServerDetails(details)) // #nosec G117 -- intentional serialization of auth config for export token if err != nil { return "", err } diff --git a/utils/config/tokenrefresh_test.go b/utils/config/tokenrefresh_test.go index 69840bafb..38ffc6542 100644 --- a/utils/config/tokenrefresh_test.go +++ b/utils/config/tokenrefresh_test.go @@ -20,8 +20,8 @@ func TestCreateInitialRefreshableTokensIfNeededEarlyReturns(t *testing.T) { name: "EarlyReturn_ArtifactoryTokenRefreshIntervalZero", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 0, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 0, + ArtifactoryRefreshToken: "", AccessToken: "", }, expectedError: nil, @@ -34,7 +34,7 @@ func TestCreateInitialRefreshableTokensIfNeededEarlyReturns(t *testing.T) { serverDetails: &ServerDetails{ ServerId: "test-server", ArtifactoryTokenRefreshInterval: -1, - ArtifactoryRefreshToken: "", + ArtifactoryRefreshToken: "", AccessToken: "", }, expectedError: nil, @@ -46,8 +46,8 @@ func TestCreateInitialRefreshableTokensIfNeededEarlyReturns(t *testing.T) { name: "EarlyReturn_ArtifactoryRefreshTokenNotEmpty", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "existing-refresh-token", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "existing-refresh-token", AccessToken: "", }, expectedError: nil, @@ -59,8 +59,8 @@ func TestCreateInitialRefreshableTokensIfNeededEarlyReturns(t *testing.T) { name: "EarlyReturn_AccessTokenNotEmpty", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", AccessToken: "existing-access-token", }, expectedError: nil, @@ -72,8 +72,8 @@ func TestCreateInitialRefreshableTokensIfNeededEarlyReturns(t *testing.T) { name: "EarlyReturn_BothTokensNotEmpty", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "existing-refresh-token", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "existing-refresh-token", AccessToken: "existing-access-token", }, expectedError: nil, @@ -85,8 +85,8 @@ func TestCreateInitialRefreshableTokensIfNeededEarlyReturns(t *testing.T) { name: "EarlyReturn_IntervalZeroWithTokens", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 0, - ArtifactoryRefreshToken: "existing-refresh-token", + ArtifactoryTokenRefreshInterval: 0, + ArtifactoryRefreshToken: "existing-refresh-token", AccessToken: "existing-access-token", }, expectedError: nil, @@ -102,7 +102,7 @@ func TestCreateInitialRefreshableTokensIfNeededEarlyReturns(t *testing.T) { serverDetailsCopy := &ServerDetails{ ServerId: tt.serverDetails.ServerId, ArtifactoryTokenRefreshInterval: tt.serverDetails.ArtifactoryTokenRefreshInterval, - ArtifactoryRefreshToken: tt.serverDetails.ArtifactoryRefreshToken, + ArtifactoryRefreshToken: tt.serverDetails.ArtifactoryRefreshToken, AccessToken: tt.serverDetails.AccessToken, } @@ -121,18 +121,18 @@ func TestCreateInitialRefreshableTokensIfNeededEarlyReturns(t *testing.T) { func TestCreateInitialRefreshableTokensIfNeededValidInputs(t *testing.T) { tests := []struct { - name string - serverDetails *ServerDetails - expectedIntervalAfterCall int - shouldCreateTokens bool - expectError bool + name string + serverDetails *ServerDetails + expectedIntervalAfterCall int + shouldCreateTokens bool + expectError bool }{ { name: "ValidInput_PositiveInterval", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", AccessToken: "", ArtifactoryUrl: "http://localhost:8081/artifactory/", User: "testuser", @@ -146,8 +146,8 @@ func TestCreateInitialRefreshableTokensIfNeededValidInputs(t *testing.T) { name: "ValidInput_LargeInterval", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 1440, // 24 hours - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 1440, // 24 hours + ArtifactoryRefreshToken: "", AccessToken: "", ArtifactoryUrl: "http://localhost:8081/artifactory/", User: "testuser", @@ -161,8 +161,8 @@ func TestCreateInitialRefreshableTokensIfNeededValidInputs(t *testing.T) { name: "ValidInput_MinimalInterval", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 1, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 1, + ArtifactoryRefreshToken: "", AccessToken: "", ArtifactoryUrl: "http://localhost:8081/artifactory/", User: "testuser", @@ -187,7 +187,7 @@ func TestCreateInitialRefreshableTokensIfNeededValidInputs(t *testing.T) { serverDetailsCopy := &ServerDetails{ ServerId: tt.serverDetails.ServerId, ArtifactoryTokenRefreshInterval: tt.serverDetails.ArtifactoryTokenRefreshInterval, - ArtifactoryRefreshToken: tt.serverDetails.ArtifactoryRefreshToken, + ArtifactoryRefreshToken: tt.serverDetails.ArtifactoryRefreshToken, AccessToken: tt.serverDetails.AccessToken, ArtifactoryUrl: tt.serverDetails.ArtifactoryUrl, User: tt.serverDetails.User, @@ -225,8 +225,8 @@ func TestCreateInitialRefreshableTokensIfNeededInputValidation(t *testing.T) { name: "InputValidation_EmptyServerId", serverDetails: &ServerDetails{ ServerId: "", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", AccessToken: "", }, description: "Should handle empty ServerId", @@ -235,8 +235,8 @@ func TestCreateInitialRefreshableTokensIfNeededInputValidation(t *testing.T) { name: "InputValidation_NoArtifactoryUrl", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", AccessToken: "", ArtifactoryUrl: "", }, @@ -246,8 +246,8 @@ func TestCreateInitialRefreshableTokensIfNeededInputValidation(t *testing.T) { name: "InputValidation_NoCredentials", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", AccessToken: "", ArtifactoryUrl: "http://localhost:8081/artifactory/", User: "", @@ -259,8 +259,8 @@ func TestCreateInitialRefreshableTokensIfNeededInputValidation(t *testing.T) { name: "InputValidation_OnlyUser", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", AccessToken: "", ArtifactoryUrl: "http://localhost:8081/artifactory/", User: "testuser", @@ -272,8 +272,8 @@ func TestCreateInitialRefreshableTokensIfNeededInputValidation(t *testing.T) { name: "InputValidation_OnlyPassword", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", AccessToken: "", ArtifactoryUrl: "http://localhost:8081/artifactory/", User: "", @@ -292,7 +292,7 @@ func TestCreateInitialRefreshableTokensIfNeededInputValidation(t *testing.T) { serverDetailsCopy := &ServerDetails{ ServerId: tt.serverDetails.ServerId, ArtifactoryTokenRefreshInterval: tt.serverDetails.ArtifactoryTokenRefreshInterval, - ArtifactoryRefreshToken: tt.serverDetails.ArtifactoryRefreshToken, + ArtifactoryRefreshToken: tt.serverDetails.ArtifactoryRefreshToken, AccessToken: tt.serverDetails.AccessToken, ArtifactoryUrl: tt.serverDetails.ArtifactoryUrl, User: tt.serverDetails.User, @@ -332,8 +332,8 @@ func TestCreateInitialRefreshableTokensIfNeededStateChanges(t *testing.T) { serverDetails := &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", AccessToken: "", ArtifactoryUrl: "http://localhost:8081/artifactory/", User: "testuser", @@ -357,15 +357,14 @@ func TestCreateInitialRefreshableTokensIfNeededStateChanges(t *testing.T) { } }) - t.Run("StateChange_TokensSetAfterSuccess", func(t *testing.T) { cleanUpTempEnv := configtests.CreateTempEnv(t, false) defer cleanUpTempEnv() serverDetails := &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", AccessToken: "", ArtifactoryUrl: "http://localhost:8081/artifactory/", User: "testuser", @@ -398,8 +397,8 @@ func TestCreateInitialRefreshableTokensIfNeededEdgeCases(t *testing.T) { name: "EdgeCase_AllFieldsEmpty", serverDetails: &ServerDetails{ ServerId: "", - ArtifactoryTokenRefreshInterval: 0, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 0, + ArtifactoryRefreshToken: "", AccessToken: "", }, description: "Should handle all fields empty", @@ -408,8 +407,8 @@ func TestCreateInitialRefreshableTokensIfNeededEdgeCases(t *testing.T) { name: "EdgeCase_IntervalOne", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 1, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 1, + ArtifactoryRefreshToken: "", AccessToken: "", }, description: "Should handle minimum positive interval", @@ -418,9 +417,9 @@ func TestCreateInitialRefreshableTokensIfNeededEdgeCases(t *testing.T) { name: "EdgeCase_IntervalMaxInt", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 2147483647, // max int32 - ArtifactoryRefreshToken: "", // jfrog-ignore - AccessToken: "", // jfrog-ignore + ArtifactoryTokenRefreshInterval: 2147483647, // max int32 + ArtifactoryRefreshToken: "", // jfrog-ignore + AccessToken: "", // jfrog-ignore }, description: "Should handle maximum interval value", }, @@ -428,9 +427,9 @@ func TestCreateInitialRefreshableTokensIfNeededEdgeCases(t *testing.T) { name: "EdgeCase_WhitespaceTokens", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: " ", // jfrog-ignore - AccessToken: "", // jfrog-ignore + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: " ", // jfrog-ignore + AccessToken: "", // jfrog-ignore }, description: "Should handle whitespace-only refresh token (treated as non-empty)", }, @@ -438,9 +437,9 @@ func TestCreateInitialRefreshableTokensIfNeededEdgeCases(t *testing.T) { name: "EdgeCase_WhitespaceAccessToken", serverDetails: &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", // jfrog-ignore - AccessToken: " ", // jfrog-ignore + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", // jfrog-ignore + AccessToken: " ", // jfrog-ignore }, description: "Should handle whitespace-only access token (treated as non-empty)", }, @@ -454,7 +453,7 @@ func TestCreateInitialRefreshableTokensIfNeededEdgeCases(t *testing.T) { serverDetailsCopy := &ServerDetails{ ServerId: tt.serverDetails.ServerId, ArtifactoryTokenRefreshInterval: tt.serverDetails.ArtifactoryTokenRefreshInterval, - ArtifactoryRefreshToken: tt.serverDetails.ArtifactoryRefreshToken, + ArtifactoryRefreshToken: tt.serverDetails.ArtifactoryRefreshToken, AccessToken: tt.serverDetails.AccessToken, } @@ -488,8 +487,8 @@ func TestCreateInitialRefreshableTokensIfNeededOutputValidation(t *testing.T) { t.Run("OutputValidation_EarlyReturnNilError", func(t *testing.T) { serverDetails := &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 0, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 0, + ArtifactoryRefreshToken: "", AccessToken: "", } @@ -500,8 +499,8 @@ func TestCreateInitialRefreshableTokensIfNeededOutputValidation(t *testing.T) { t.Run("OutputValidation_ServerDetailsNotNil", func(t *testing.T) { serverDetails := &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", AccessToken: "", } @@ -521,7 +520,7 @@ func TestCreateInitialRefreshableTokensIfNeededBranchCoverage(t *testing.T) { // Test branch: ArtifactoryTokenRefreshInterval <= 0 serverDetails1 := &ServerDetails{ ArtifactoryTokenRefreshInterval: 0, - ArtifactoryRefreshToken: "", + ArtifactoryRefreshToken: "", AccessToken: "", } err1 := CreateInitialRefreshableTokensIfNeeded(serverDetails1) @@ -530,7 +529,7 @@ func TestCreateInitialRefreshableTokensIfNeededBranchCoverage(t *testing.T) { // Test branch: ArtifactoryRefreshToken != "" serverDetails2 := &ServerDetails{ ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "token", + ArtifactoryRefreshToken: "token", AccessToken: "", } err2 := CreateInitialRefreshableTokensIfNeeded(serverDetails2) @@ -539,7 +538,7 @@ func TestCreateInitialRefreshableTokensIfNeededBranchCoverage(t *testing.T) { // Test branch: AccessToken != "" serverDetails3 := &ServerDetails{ ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryRefreshToken: "", AccessToken: "token", } err3 := CreateInitialRefreshableTokensIfNeeded(serverDetails3) @@ -551,8 +550,8 @@ func TestCreateInitialRefreshableTokensIfNeededBranchCoverage(t *testing.T) { // Note: This will require proper setup or mocking of dependencies serverDetails := &ServerDetails{ ServerId: "test-server", - ArtifactoryTokenRefreshInterval: 60, - ArtifactoryRefreshToken: "", + ArtifactoryTokenRefreshInterval: 60, + ArtifactoryRefreshToken: "", AccessToken: "", ArtifactoryUrl: "http://localhost:8081/artifactory/", User: "testuser", @@ -571,4 +570,3 @@ func TestCreateInitialRefreshableTokensIfNeededBranchCoverage(t *testing.T) { assert.NotNil(t, serverDetails) }) } - diff --git a/utils/coreutils/utils.go b/utils/coreutils/utils.go index 434df8501..6679bdb5a 100644 --- a/utils/coreutils/utils.go +++ b/utils/coreutils/utils.go @@ -628,7 +628,7 @@ func SetPermissionsRecursively(dirPath string, mode os.FileMode) error { if e != nil { return e } - e = os.Chmod(path, mode) + e = os.Chmod(path, mode) // #nosec G122 -- controlled directory path, not user-facing input if e != nil { return e }