Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Evidence CLI - update fields names #18

Merged
merged 13 commits into from
Aug 6, 2024
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ GOARCH = $(shell go env GOARCH)
# ----------------------------------------------------------------------------------------------------------------------
export PROJECT_DIR = $(CURDIR)

prereq:
$(GOCMD) install go.uber.org/mock/[email protected]

clean-mock:
@find . -name "*_mock.go" -delete

Expand Down
3 changes: 2 additions & 1 deletion evidence/cli/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ package cli
//go:generate ${PROJECT_DIR}/scripts/mockgen.sh ${GOFILE}

import (
"github.com/jfrog/jfrog-cli-core/v2/plugins/components"
coreConfig "github.com/jfrog/jfrog-cli-core/v2/utils/config"
)

type EvidenceCommands interface {
CreateEvidence(*coreConfig.ServerDetails) error
CreateEvidence(ctx *components.Context, serverDetails *coreConfig.ServerDetails) error
}
30 changes: 22 additions & 8 deletions evidence/cli/command_build.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"github.com/jfrog/jfrog-cli-artifactory/evidence"
"github.com/jfrog/jfrog-cli-core/v2/plugins/components"
coreConfig "github.com/jfrog/jfrog-cli-core/v2/utils/config"
"github.com/jfrog/jfrog-client-go/utils/errorutils"
)

type evidenceBuildCommand struct {
Expand All @@ -18,14 +19,27 @@ func NewEvidenceBuildCommand(ctx *components.Context, execute execCommandFunc) E
}
}

func (erc *evidenceBuildCommand) CreateEvidence(serverDetails *coreConfig.ServerDetails) error {
func (ebc *evidenceBuildCommand) CreateEvidence(ctx *components.Context, serverDetails *coreConfig.ServerDetails) error {
err := ebc.validateEvidenceBuildContext(ctx)
if err != nil {
return err
}

createCmd := evidence.NewCreateEvidenceBuild(
serverDetails,
erc.ctx.GetStringFlagValue(predicate),
erc.ctx.GetStringFlagValue(predicateType),
erc.ctx.GetStringFlagValue(key),
erc.ctx.GetStringFlagValue(keyId),
erc.ctx.GetStringFlagValue(project),
erc.ctx.GetStringFlagValue(build))
return erc.execute(createCmd)
ebc.ctx.GetStringFlagValue(predicate),
ebc.ctx.GetStringFlagValue(predicateType),
ebc.ctx.GetStringFlagValue(key),
ebc.ctx.GetStringFlagValue(keyId),
ebc.ctx.GetStringFlagValue(project),
ebc.ctx.GetStringFlagValue(buildName),
ebc.ctx.GetStringFlagValue(buildNumber))
return ebc.execute(createCmd)
}

func (ebc *evidenceBuildCommand) validateEvidenceBuildContext(ctx *components.Context) error {
if !ctx.IsFlagSet(buildNumber) || assertValueProvided(ctx, buildNumber) != nil {
return errorutils.CheckErrorf("'buildNumber' is a mandatory field for creating a Release Bundle evidence: --%s", buildNumber)
}
return nil
}
22 changes: 10 additions & 12 deletions evidence/cli/command_controller.go → evidence/cli/command_cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,10 @@ func GetCommands() []components.Command {
}
}

var execFunc = func(command commands.Command) error {
return commands.Exec(command)
}
var execFunc = commands.Exec

func createEvidence(c *components.Context) error {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

c -> ctx (as agreed)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

if err := validateCreateEvidenceContext(c); err != nil {
if err := validateCreateEvidenceCommonContext(c); err != nil {
return err
}
subject, err := getAndValidateSubject(c)
Expand All @@ -45,20 +43,20 @@ func createEvidence(c *components.Context) error {

var command EvidenceCommands
switch subject {
case repoPath:
case subjectRepoPath:
command = NewEvidenceCustomCommand(c, execFunc)
case releaseBundle:
command = NewEvidenceReleaseBundleCommand(c, execFunc)
case build:
case buildName:
command = NewEvidenceBuildCommand(c, execFunc)
default:
return errors.New("unsupported subject")
}

return command.CreateEvidence(serverDetails)
return command.CreateEvidence(c, serverDetails)
}

func validateCreateEvidenceContext(c *components.Context) error {
func validateCreateEvidenceCommonContext(c *components.Context) error {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also here c -> ctx

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Multiple places in this file

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

if show, err := pluginsCommon.ShowCmdHelpIfNeeded(c, c.Arguments); show || err != nil {
return err
}
Expand All @@ -68,13 +66,13 @@ func validateCreateEvidenceContext(c *components.Context) error {
}

if !c.IsFlagSet(predicate) || assertValueProvided(c, predicate) != nil {
return errorutils.CheckErrorf("'predicate' is a mandatory field for creating a custom evidence: --%s", predicate)
return errorutils.CheckErrorf("'predicate' is a mandatory field for creating evidence: --%s", predicate)
}
if !c.IsFlagSet(predicateType) || assertValueProvided(c, predicateType) != nil {
return errorutils.CheckErrorf("'predicate-type' is a mandatory field for creating a custom evidence: --%s", predicateType)
return errorutils.CheckErrorf("'predicate-type' is a mandatory field for creating evidence: --%s", predicateType)
}
if !c.IsFlagSet(key) || assertValueProvided(c, key) != nil {
return errorutils.CheckErrorf("'key' is a mandatory field for creating a custom evidence: --%s", key)
return errorutils.CheckErrorf("'key' is a mandatory field for creating evidence: --%s", key)
}
return nil
}
Expand All @@ -88,7 +86,7 @@ func getAndValidateSubject(c *components.Context) (string, error) {
}

if len(foundSubjects) == 0 {
return "", errorutils.CheckErrorf("Subject must be one of the fields: [%s]", strings.Join(subjectTypes, ", "))
return "", errorutils.CheckErrorf("subject must be one of the fields: [%s]", strings.Join(subjectTypes, ", "))
}
if len(foundSubjects) > 1 {
return "", errorutils.CheckErrorf("multiple subjects found: [%s]", strings.Join(foundSubjects, ", "))
Expand Down
125 changes: 125 additions & 0 deletions evidence/cli/command_cli_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
package cli

import (
"flag"
"github.com/golang/mock/gomock"
"github.com/jfrog/jfrog-cli-core/v2/common/commands"
"github.com/jfrog/jfrog-cli-core/v2/plugins/components"
"github.com/stretchr/testify/assert"
"github.com/urfave/cli"
"testing"
)

func TestCreateEvidence_Context(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()

app := cli.NewApp()
app.Commands = []cli.Command{
{
Name: "create",
},
}
set := flag.NewFlagSet(predicate, 0)
ctx := cli.NewContext(app, set, nil)

tests := []struct {
name string
flags []components.Flag
expectErr bool
}{
{
name: "InvalidContext - Missing Subject",
flags: []components.Flag{
setDefaultValue(predicate, predicate),
setDefaultValue(predicateType, predicateType),
setDefaultValue(key, key),
},
expectErr: true,
},
{
name: "InvalidContext - Missing Predicate",
flags: []components.Flag{
setDefaultValue("", ""),
setDefaultValue(predicateType, "InToto"),
setDefaultValue(key, "PGP"),
},
expectErr: true,
},
{
name: "InvalidContext - Subject Duplication",
flags: []components.Flag{
setDefaultValue(predicate, predicate),
setDefaultValue(predicateType, "InToto"),
setDefaultValue(key, "PGP"),
setDefaultValue(subjectRepoPath, subjectRepoPath),
setDefaultValue(releaseBundle, releaseBundle),
setDefaultValue(releaseBundleVersion, releaseBundleVersion),
},
expectErr: true,
},
{
name: "ValidContext - ReleaseBundle",
flags: []components.Flag{
setDefaultValue(predicate, predicate),
setDefaultValue(predicateType, "InToto"),
setDefaultValue(key, "PGP"),
setDefaultValue(releaseBundle, releaseBundle),
setDefaultValue(releaseBundleVersion, releaseBundleVersion),
setDefaultValue("url", "url"),
},
expectErr: false,
},
{
name: "ValidContext - RepoPath",
flags: []components.Flag{
setDefaultValue(predicate, predicate),
setDefaultValue(predicateType, "InToto"),
setDefaultValue(key, "PGP"),
setDefaultValue(subjectRepoPath, subjectRepoPath),
setDefaultValue("url", "url"),
},
expectErr: false,
},
{
name: "ValidContext - Build",
flags: []components.Flag{
setDefaultValue(predicate, predicate),
setDefaultValue(predicateType, "InToto"),
setDefaultValue(key, "PGP"),
setDefaultValue(buildName, buildName),
setDefaultValue(buildNumber, buildNumber),
setDefaultValue("url", "url"),
},
expectErr: false,
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
context, err1 := components.ConvertContext(ctx, tt.flags...)
if err1 != nil {
return
}

execFunc = func(command commands.Command) error {
return nil
}
// Replace execFunc with the mockExec function
defer func() { execFunc = exec }() // Restore original execFunc after test

err := createEvidence(context)
if tt.expectErr {
assert.Error(t, err)
} else {
assert.NoError(t, err)
}
})
}
}

func setDefaultValue(flag string, defaultValue string) components.Flag {
f := components.NewStringFlag(flag, flag)
f.DefaultValue = defaultValue
return f
}
95 changes: 0 additions & 95 deletions evidence/cli/command_controller_test.go

This file was deleted.

6 changes: 3 additions & 3 deletions evidence/cli/command_custom.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ func NewEvidenceCustomCommand(ctx *components.Context, execute execCommandFunc)
execute: execute,
}
}

func (ecc *evidenceCustomCommand) CreateEvidence(serverDetails *coreConfig.ServerDetails) error {
func (ecc *evidenceCustomCommand) CreateEvidence(_ *components.Context, serverDetails *coreConfig.ServerDetails) error {
createCmd := evidence.NewCreateEvidenceCustom(
serverDetails,
ecc.ctx.GetStringFlagValue(predicate),
ecc.ctx.GetStringFlagValue(predicateType),
ecc.ctx.GetStringFlagValue(key),
ecc.ctx.GetStringFlagValue(keyId),
ecc.ctx.GetStringFlagValue(repoPath))
ecc.ctx.GetStringFlagValue(subjectRepoPath),
ecc.ctx.GetStringFlagValue(subjectSha256))
return ecc.execute(createCmd)
}
Loading
Loading