Skip to content

Commit 235b539

Browse files
committed
Update serviceversion_test.go
added 'TestVersionValidate' to existing test file.
1 parent e720a2c commit 235b539

1 file changed

Lines changed: 110 additions & 0 deletions

File tree

pkg/commands/service/version/serviceversion_test.go

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,3 +481,113 @@ func lockVersionOK(_ context.Context, i *fastly.LockVersionInput) (*fastly.Versi
481481
func lockVersionError(_ context.Context, _ *fastly.LockVersionInput) (*fastly.Version, error) {
482482
return nil, testutil.Err
483483
}
484+
485+
func TestVersionValidate(t *testing.T) {
486+
scenarios := []testutil.CLIScenario{
487+
{
488+
Name: "validate missing --service-id flag",
489+
Args: "--version 1",
490+
WantError: "error parsing arguments: required flag --service-id not provided",
491+
},
492+
{
493+
Name: "validate missing --version flag",
494+
Args: "--service-id 123",
495+
WantError: "error parsing arguments: required flag --version not provided",
496+
},
497+
{
498+
Name: "validate successful - valid version without message",
499+
Args: "--service-id 123 --version 1",
500+
API: mock.API{
501+
ListVersionsFn: testutil.ListVersions,
502+
ValidateVersionFn: validateVersionValid(""),
503+
},
504+
WantOutput: "Service 123 version 1 is valid",
505+
},
506+
{
507+
Name: "validate successful - valid version with message",
508+
Args: "--service-id 123 --version 1",
509+
API: mock.API{
510+
ListVersionsFn: testutil.ListVersions,
511+
ValidateVersionFn: validateVersionValid("All checks passed"),
512+
},
513+
WantOutput: "Service 123 version 1 is valid: All checks passed",
514+
},
515+
{
516+
Name: "validate successful - invalid version without message",
517+
Args: "--service-id 123 --version 2",
518+
API: mock.API{
519+
ListVersionsFn: testutil.ListVersions,
520+
ValidateVersionFn: validateVersionInvalid(""),
521+
},
522+
WantOutput: "Service 123 version 2 is not valid",
523+
},
524+
{
525+
Name: "validate successful - invalid version with message",
526+
Args: "--service-id 123 --version 2",
527+
API: mock.API{
528+
ListVersionsFn: testutil.ListVersions,
529+
ValidateVersionFn: validateVersionInvalid("Missing required backend"),
530+
},
531+
WantOutput: "Service 123 version 2 is not valid: Missing required backend",
532+
},
533+
{
534+
Name: "validate with json output - valid version",
535+
Args: "--service-id 123 --version 1 --json",
536+
API: mock.API{
537+
ListVersionsFn: testutil.ListVersions,
538+
ValidateVersionFn: validateVersionValid("All checks passed"),
539+
},
540+
WantOutput: validateVersionValidJSONOutput,
541+
},
542+
{
543+
Name: "validate with json output - invalid version",
544+
Args: "--service-id 123 --version 2 --json",
545+
API: mock.API{
546+
ListVersionsFn: testutil.ListVersions,
547+
ValidateVersionFn: validateVersionInvalid("Missing required backend"),
548+
},
549+
WantOutput: validateVersionInvalidJSONOutput,
550+
},
551+
{
552+
Name: "validate error from API",
553+
Args: "--service-id 123 --version 1",
554+
API: mock.API{
555+
ListVersionsFn: testutil.ListVersions,
556+
ValidateVersionFn: validateVersionError,
557+
},
558+
WantError: testutil.Err.Error(),
559+
},
560+
}
561+
562+
testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "validate"}, scenarios)
563+
}
564+
565+
func validateVersionValid(message string) func(context.Context, *fastly.ValidateVersionInput) (bool, string, error) {
566+
return func(_ context.Context, _ *fastly.ValidateVersionInput) (bool, string, error) {
567+
return true, message, nil
568+
}
569+
}
570+
571+
func validateVersionInvalid(message string) func(context.Context, *fastly.ValidateVersionInput) (bool, string, error) {
572+
return func(_ context.Context, _ *fastly.ValidateVersionInput) (bool, string, error) {
573+
return false, message, nil
574+
}
575+
}
576+
577+
func validateVersionError(_ context.Context, _ *fastly.ValidateVersionInput) (bool, string, error) {
578+
return false, "", testutil.Err
579+
}
580+
581+
var validateVersionValidJSONOutput = strings.TrimSpace(`
582+
{
583+
"message": "All checks passed",
584+
"valid": true
585+
}
586+
`) + "\n"
587+
588+
var validateVersionInvalidJSONOutput = strings.TrimSpace(`
589+
{
590+
"message": "Missing required backend",
591+
"valid": false
592+
}
593+
`) + "\n"

0 commit comments

Comments
 (0)