diff --git a/evidence/cli/command_build.go b/evidence/cli/command_build.go index 3babc2ad..758c19dc 100644 --- a/evidence/cli/command_build.go +++ b/evidence/cli/command_build.go @@ -40,6 +40,7 @@ func (ebc *evidenceBuildCommand) CreateEvidence(ctx *components.Context, serverD ebc.ctx.GetStringFlagValue(project), ebc.ctx.GetStringFlagValue(buildName), ebc.ctx.GetStringFlagValue(buildNumber), + ebc.ctx.GetStringFlagValue(providerId), ebc.ctx.GetBoolFlagValue(useSonarPredicate)) return ebc.execute(createCmd) } diff --git a/evidence/cli/command_package.go b/evidence/cli/command_package.go index d796f4ae..05cdf556 100644 --- a/evidence/cli/command_package.go +++ b/evidence/cli/command_package.go @@ -40,6 +40,7 @@ func (epc *evidencePackageCommand) CreateEvidence(ctx *components.Context, serve epc.ctx.GetStringFlagValue(packageName), epc.ctx.GetStringFlagValue(packageVersion), epc.ctx.GetStringFlagValue(packageRepoName), + epc.ctx.GetStringFlagValue(providerId), epc.ctx.GetBoolFlagValue(useSonarPredicate)) return epc.execute(createCmd) } diff --git a/evidence/cli/command_release_bundle.go b/evidence/cli/command_release_bundle.go index a16cab3d..16f2f7ca 100644 --- a/evidence/cli/command_release_bundle.go +++ b/evidence/cli/command_release_bundle.go @@ -42,6 +42,7 @@ func (erc *evidenceReleaseBundleCommand) CreateEvidence(ctx *components.Context, erc.ctx.GetStringFlagValue(project), erc.ctx.GetStringFlagValue(releaseBundle), erc.ctx.GetStringFlagValue(releaseBundleVersion), + erc.ctx.GetStringFlagValue(providerId), erc.ctx.GetBoolFlagValue(useSonarPredicate)) return erc.execute(createCmd) } diff --git a/evidence/create/create_build.go b/evidence/create/create_build.go index d3379056..9833b082 100644 --- a/evidence/create/create_build.go +++ b/evidence/create/create_build.go @@ -25,7 +25,7 @@ type createEvidenceBuild struct { } func NewCreateEvidenceBuild(serverDetails *config.ServerDetails, - predicateFilePath, predicateType, markdownFilePath, key, keyId, project, buildName, buildNumber string, useSonarPredicate bool) evidence.Command { + predicateFilePath, predicateType, markdownFilePath, key, keyId, project, buildName, buildNumber, providerId string, useSonarPredicate bool) evidence.Command { return &createEvidenceBuild{ createEvidenceBase: createEvidenceBase{ serverDetails: serverDetails, @@ -34,6 +34,7 @@ func NewCreateEvidenceBuild(serverDetails *config.ServerDetails, markdownFilePath: markdownFilePath, key: key, keyId: keyId, + providerId: providerId, useSonarPredicate: useSonarPredicate, }, project: project, diff --git a/evidence/create/create_build_test.go b/evidence/create/create_build_test.go index 1fc270e2..bbc749e6 100644 --- a/evidence/create/create_build_test.go +++ b/evidence/create/create_build_test.go @@ -78,7 +78,7 @@ func TestBuildInfo(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - c, ok := NewCreateEvidenceBuild(nil, "", "", "", "", "", tt.project, tt.buildName, tt.buildNumber, false).(*createEvidenceBuild) + c, ok := NewCreateEvidenceBuild(nil, "", "", "", "", "", tt.project, tt.buildName, tt.buildNumber, "", false).(*createEvidenceBuild) if !ok { t.Fatal("Failed to create createEvidenceBuild instance") } @@ -133,6 +133,7 @@ func TestCreateEvidenceBuild_RecordSummary(t *testing.T) { "myProject", "testBuild", "123", + "", false, ) c, ok := evidence.(*createEvidenceBuild) @@ -178,3 +179,53 @@ func TestCreateEvidenceBuild_RecordSummary(t *testing.T) { } } } + +func TestCreateEvidenceBuild_ProviderId(t *testing.T) { + tests := []struct { + name string + providerId string + expectedProviderId string + }{ + { + name: "With custom provider ID", + providerId: "custom-provider", + expectedProviderId: "custom-provider", + }, + { + name: "With empty provider ID", + providerId: "", + expectedProviderId: "", + }, + { + name: "With sonar provider ID", + providerId: "sonar", + expectedProviderId: "sonar", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + serverDetails := &config.ServerDetails{Url: "http://test.com"} + + cmd := NewCreateEvidenceBuild( + serverDetails, + "", + "test-predicate-type", + "", + "test-key", + "test-key-id", + "test-project", + "test-build", + "1", + tt.providerId, + false, + ) + + createCmd, ok := cmd.(*createEvidenceBuild) + assert.True(t, ok) + + // Verify that the provider ID is correctly set in the base struct + assert.Equal(t, tt.expectedProviderId, createCmd.providerId) + }) + } +} diff --git a/evidence/create/create_package.go b/evidence/create/create_package.go index 7c2661a6..5d359e27 100644 --- a/evidence/create/create_package.go +++ b/evidence/create/create_package.go @@ -18,13 +18,14 @@ type createEvidencePackage struct { } func NewCreateEvidencePackage(serverDetails *config.ServerDetails, predicateFilePath, predicateType, markdownFilePath, key, keyId, packageName, - packageVersion, packageRepoName string, useSonarPredicate bool) evidence.Command { + packageVersion, packageRepoName, providerId string, useSonarPredicate bool) evidence.Command { return &createEvidencePackage{ createEvidenceBase: createEvidenceBase{ serverDetails: serverDetails, predicateFilePath: predicateFilePath, predicateType: predicateType, markdownFilePath: markdownFilePath, + providerId: providerId, key: key, keyId: keyId, useSonarPredicate: useSonarPredicate, diff --git a/evidence/create/create_package_test.go b/evidence/create/create_package_test.go index f62b13a1..605dcde8 100644 --- a/evidence/create/create_package_test.go +++ b/evidence/create/create_package_test.go @@ -25,7 +25,7 @@ func TestNewCreateEvidencePackage(t *testing.T) { packageVersion := "1.0.0" packageRepoName := "test-repo" - cmd := NewCreateEvidencePackage(serverDetails, predicateFilePath, predicateType, markdownFilePath, key, keyId, packageName, packageVersion, packageRepoName, false) + cmd := NewCreateEvidencePackage(serverDetails, predicateFilePath, predicateType, markdownFilePath, key, keyId, packageName, packageVersion, packageRepoName, "", false) createCmd, ok := cmd.(*createEvidencePackage) assert.True(t, ok) @@ -93,6 +93,7 @@ func TestCreateEvidencePackage_RecordSummary(t *testing.T) { packageName, packageVersion, repoName, + "", false, ) c, ok := evidence.(*createEvidencePackage) @@ -134,3 +135,53 @@ func TestCreateEvidencePackage_RecordSummary(t *testing.T) { } } } + +func TestCreateEvidencePackage_ProviderId(t *testing.T) { + tests := []struct { + name string + providerId string + expectedProviderId string + }{ + { + name: "With custom provider ID", + providerId: "custom-provider", + expectedProviderId: "custom-provider", + }, + { + name: "With empty provider ID", + providerId: "", + expectedProviderId: "", + }, + { + name: "With sonar provider ID", + providerId: "sonar", + expectedProviderId: "sonar", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + serverDetails := &config.ServerDetails{Url: "http://test.com"} + + cmd := NewCreateEvidencePackage( + serverDetails, + "", + "test-predicate-type", + "", + "test-key", + "test-key-id", + "test-package", + "1.0.0", + "test-repo", + tt.providerId, + false, + ) + + createCmd, ok := cmd.(*createEvidencePackage) + assert.True(t, ok) + + // Verify that the provider ID is correctly set in the base struct + assert.Equal(t, tt.expectedProviderId, createCmd.providerId) + }) + } +} diff --git a/evidence/create/create_release_bundle.go b/evidence/create/create_release_bundle.go index bb99ee05..602b3254 100644 --- a/evidence/create/create_release_bundle.go +++ b/evidence/create/create_release_bundle.go @@ -23,7 +23,7 @@ type createEvidenceReleaseBundle struct { } func NewCreateEvidenceReleaseBundle(serverDetails *config.ServerDetails, predicateFilePath, predicateType, markdownFilePath, key, keyId, project, releaseBundle, - releaseBundleVersion string, useSonarPredicate bool) evidence.Command { + releaseBundleVersion, providerId string, useSonarPredicate bool) evidence.Command { return &createEvidenceReleaseBundle{ createEvidenceBase: createEvidenceBase{ serverDetails: serverDetails, @@ -32,6 +32,7 @@ func NewCreateEvidenceReleaseBundle(serverDetails *config.ServerDetails, predica markdownFilePath: markdownFilePath, key: key, keyId: keyId, + providerId: providerId, stage: getReleaseBundleStage(serverDetails, releaseBundle, releaseBundleVersion, project), useSonarPredicate: useSonarPredicate, }, diff --git a/evidence/create/create_release_bundle_test.go b/evidence/create/create_release_bundle_test.go index 15dc3771..a9535a18 100644 --- a/evidence/create/create_release_bundle_test.go +++ b/evidence/create/create_release_bundle_test.go @@ -60,7 +60,7 @@ func TestNewCreateEvidenceReleaseBundle(t *testing.T) { releaseBundle := "test-bundle" releaseBundleVersion := "1.0.0" - cmd := NewCreateEvidenceReleaseBundle(serverDetails, predicateFilePath, predicateType, markdownFilePath, key, keyId, project, releaseBundle, releaseBundleVersion, false) + cmd := NewCreateEvidenceReleaseBundle(serverDetails, predicateFilePath, predicateType, markdownFilePath, key, keyId, project, releaseBundle, releaseBundleVersion, "", false) createCmd, ok := cmd.(*createEvidenceReleaseBundle) assert.True(t, ok) @@ -211,7 +211,7 @@ func TestStageIntegrationInConstructor(t *testing.T) { releaseBundle := "test-bundle" releaseBundleVersion := "1.0.0" - cmd := NewCreateEvidenceReleaseBundle(serverDetails, predicateFilePath, predicateType, markdownFilePath, key, keyId, project, releaseBundle, releaseBundleVersion, false) + cmd := NewCreateEvidenceReleaseBundle(serverDetails, predicateFilePath, predicateType, markdownFilePath, key, keyId, project, releaseBundle, releaseBundleVersion, "", false) createCmd, ok := cmd.(*createEvidenceReleaseBundle) assert.True(t, ok) @@ -317,6 +317,7 @@ func TestCreateEvidenceReleaseBundle_RecordSummary(t *testing.T) { "myProject", "testBundle", "2.0.0", + "", false, ) c, ok := evidence.(*createEvidenceReleaseBundle) @@ -360,3 +361,53 @@ func TestCreateEvidenceReleaseBundle_RecordSummary(t *testing.T) { } } } + +func TestCreateEvidenceReleaseBundle_ProviderId(t *testing.T) { + tests := []struct { + name string + providerId string + expectedProviderId string + }{ + { + name: "With custom provider ID", + providerId: "custom-provider", + expectedProviderId: "custom-provider", + }, + { + name: "With empty provider ID", + providerId: "", + expectedProviderId: "", + }, + { + name: "With sonar provider ID", + providerId: "sonar", + expectedProviderId: "sonar", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + serverDetails := &config.ServerDetails{Url: "http://test.com"} + + cmd := NewCreateEvidenceReleaseBundle( + serverDetails, + "", + "test-predicate-type", + "", + "test-key", + "test-key-id", + "test-project", + "test-bundle", + "1.0.0", + tt.providerId, + false, + ) + + createCmd, ok := cmd.(*createEvidenceReleaseBundle) + assert.True(t, ok) + + // Verify that the provider ID is correctly set in the base struct + assert.Equal(t, tt.expectedProviderId, createCmd.providerId) + }) + } +}