82 lines
2.3 KiB
Go
82 lines
2.3 KiB
Go
package verify
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/cli/cli/v2/pkg/cmd/attestation/test"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var (
|
|
publicGoodArtifactPath = test.NormalizeRelativePath("../test/data/sigstore-js-2.1.0.tgz")
|
|
publicGoodBundlePath = test.NormalizeRelativePath("../test/data/psigstore-js-2.1.0-bundle.json")
|
|
)
|
|
|
|
var baseOptions = Options{
|
|
ArtifactPath: publicGoodArtifactPath,
|
|
BundlePath: publicGoodBundlePath,
|
|
DigestAlgorithm: "sha512",
|
|
Limit: 1,
|
|
Owner: "sigstore",
|
|
OIDCIssuer: "some issuer",
|
|
}
|
|
|
|
func TestAreFlagsValid(t *testing.T) {
|
|
t.Run("has invalid Repo value", func(t *testing.T) {
|
|
opts := baseOptions
|
|
opts.Repo = "sigstoresigstore-js"
|
|
|
|
err := opts.AreFlagsValid()
|
|
require.Error(t, err)
|
|
require.ErrorContains(t, err, "invalid value provided for repo")
|
|
})
|
|
|
|
t.Run("invalid limit == 0", func(t *testing.T) {
|
|
opts := baseOptions
|
|
opts.Limit = 0
|
|
|
|
err := opts.AreFlagsValid()
|
|
require.Error(t, err)
|
|
require.ErrorContains(t, err, "limit 0 not allowed, must be between 1 and 1000")
|
|
})
|
|
|
|
t.Run("invalid limit > 1000", func(t *testing.T) {
|
|
opts := baseOptions
|
|
opts.Limit = 1001
|
|
|
|
err := opts.AreFlagsValid()
|
|
require.Error(t, err)
|
|
require.ErrorContains(t, err, "limit 1001 not allowed, must be between 1 and 1000")
|
|
})
|
|
|
|
t.Run("returns error when UseBundleFromRegistry is true and ArtifactPath is not an OCI path", func(t *testing.T) {
|
|
opts := baseOptions
|
|
opts.BundlePath = ""
|
|
opts.UseBundleFromRegistry = true
|
|
|
|
err := opts.AreFlagsValid()
|
|
require.Error(t, err)
|
|
require.ErrorContains(t, err, "bundle-from-oci flag can only be used with OCI artifact paths")
|
|
})
|
|
|
|
t.Run("does not return error when UseBundleFromRegistry is true and ArtifactPath is an OCI path", func(t *testing.T) {
|
|
opts := baseOptions
|
|
opts.ArtifactPath = "oci://sigstore/sigstore-js:2.1.0"
|
|
opts.BundlePath = ""
|
|
opts.UseBundleFromRegistry = true
|
|
|
|
err := opts.AreFlagsValid()
|
|
require.NoError(t, err)
|
|
})
|
|
|
|
t.Run("returns error when UseBundleFromRegistry is true and BundlePath is provided", func(t *testing.T) {
|
|
opts := baseOptions
|
|
opts.ArtifactPath = "oci://sigstore/sigstore-js:2.1.0"
|
|
opts.UseBundleFromRegistry = true
|
|
|
|
err := opts.AreFlagsValid()
|
|
require.Error(t, err)
|
|
require.ErrorContains(t, err, "bundle-from-oci flag cannot be used with bundle-path flag")
|
|
})
|
|
}
|