Skip to content

Commit 5e19e2a

Browse files
committed
revert test removal'
1 parent 2cb01cc commit 5e19e2a

File tree

1 file changed

+160
-160
lines changed

1 file changed

+160
-160
lines changed

provider/parameter_test.go

+160-160
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,166 @@ data "coder_parameter" "region" {
689689
}
690690
}
691691

692-
<<<<<<< HEAD
692+
func TestParameterValidation(t *testing.T) {
693+
t.Parallel()
694+
opts := func(vals ...string) []provider.Option {
695+
options := make([]provider.Option, 0, len(vals))
696+
for _, val := range vals {
697+
options = append(options, provider.Option{
698+
Name: val,
699+
Value: val,
700+
})
701+
}
702+
return options
703+
}
704+
705+
for _, tc := range []struct {
706+
Name string
707+
Parameter provider.Parameter
708+
Value string
709+
ExpectError *regexp.Regexp
710+
}{
711+
{
712+
Name: "ValidStringParameter",
713+
Parameter: provider.Parameter{
714+
Type: "string",
715+
},
716+
Value: "alpha",
717+
},
718+
// Test invalid states
719+
{
720+
Name: "InvalidFormType",
721+
Parameter: provider.Parameter{
722+
Type: "string",
723+
Option: opts("alpha", "bravo", "charlie"),
724+
FormType: provider.ParameterFormTypeSlider,
725+
},
726+
Value: "alpha",
727+
ExpectError: regexp.MustCompile("Invalid form_type for parameter"),
728+
},
729+
{
730+
Name: "NotInOptions",
731+
Parameter: provider.Parameter{
732+
Type: "string",
733+
Option: opts("alpha", "bravo", "charlie"),
734+
},
735+
Value: "delta", // not in option set
736+
ExpectError: regexp.MustCompile("Value must be a valid option"),
737+
},
738+
{
739+
Name: "NumberNotInOptions",
740+
Parameter: provider.Parameter{
741+
Type: "number",
742+
Option: opts("1", "2", "3"),
743+
},
744+
Value: "0", // not in option set
745+
ExpectError: regexp.MustCompile("Value must be a valid option"),
746+
},
747+
{
748+
Name: "NonUniqueOptionNames",
749+
Parameter: provider.Parameter{
750+
Type: "string",
751+
Option: opts("alpha", "alpha"),
752+
},
753+
Value: "alpha",
754+
ExpectError: regexp.MustCompile("Option names must be unique"),
755+
},
756+
{
757+
Name: "NonUniqueOptionValues",
758+
Parameter: provider.Parameter{
759+
Type: "string",
760+
Option: []provider.Option{
761+
{Name: "Alpha", Value: "alpha"},
762+
{Name: "AlphaAgain", Value: "alpha"},
763+
},
764+
},
765+
Value: "alpha",
766+
ExpectError: regexp.MustCompile("Option values must be unique"),
767+
},
768+
{
769+
Name: "IncorrectValueTypeOption",
770+
Parameter: provider.Parameter{
771+
Type: "number",
772+
Option: opts("not-a-number"),
773+
},
774+
Value: "5",
775+
ExpectError: regexp.MustCompile("is not a number"),
776+
},
777+
{
778+
Name: "IncorrectValueType",
779+
Parameter: provider.Parameter{
780+
Type: "number",
781+
},
782+
Value: "not-a-number",
783+
ExpectError: regexp.MustCompile("Parameter value is not of type \"number\""),
784+
},
785+
{
786+
Name: "NotListStringDefault",
787+
Parameter: provider.Parameter{
788+
Type: "list(string)",
789+
Default: "not-a-list",
790+
},
791+
ExpectError: regexp.MustCompile("not a valid list of strings"),
792+
},
793+
{
794+
Name: "NotListStringDefault",
795+
Parameter: provider.Parameter{
796+
Type: "list(string)",
797+
},
798+
Value: "not-a-list",
799+
ExpectError: regexp.MustCompile("not a valid list of strings"),
800+
},
801+
{
802+
Name: "DefaultListStringNotInOptions",
803+
Parameter: provider.Parameter{
804+
Type: "list(string)",
805+
Default: `["red", "yellow", "black"]`,
806+
Option: opts("red", "blue", "green"),
807+
FormType: provider.ParameterFormTypeMultiSelect,
808+
},
809+
ExpectError: regexp.MustCompile("is not a valid option, values \"yellow, black\" are missing from the options"),
810+
},
811+
{
812+
Name: "ListStringNotInOptions",
813+
Parameter: provider.Parameter{
814+
Type: "list(string)",
815+
Default: `["red"]`,
816+
Option: opts("red", "blue", "green"),
817+
FormType: provider.ParameterFormTypeMultiSelect,
818+
},
819+
Value: `["red", "yellow", "black"]`,
820+
ExpectError: regexp.MustCompile("is not a valid option, values \"yellow, black\" are missing from the options"),
821+
},
822+
{
823+
Name: "InvalidMiniumum",
824+
Parameter: provider.Parameter{
825+
Type: "number",
826+
Default: "5",
827+
Validation: []provider.Validation{{
828+
Min: 10,
829+
Error: "must be greater than 10",
830+
}},
831+
},
832+
ExpectError: regexp.MustCompile("must be greater than 10"),
833+
},
834+
} {
835+
tc := tc
836+
t.Run(tc.Name, func(t *testing.T) {
837+
t.Parallel()
838+
diags := tc.Parameter.Valid(tc.Value)
839+
if tc.ExpectError != nil {
840+
require.True(t, diags.HasError())
841+
errMsg := fmt.Sprintf("%+v", diags[0]) // close enough
842+
require.Truef(t, tc.ExpectError.MatchString(errMsg), "got: %s", errMsg)
843+
} else {
844+
if !assert.False(t, diags.HasError()) {
845+
t.Logf("got: %+v", diags[0])
846+
}
847+
}
848+
})
849+
}
850+
}
851+
693852
// TestParameterValidationEnforcement tests various parameter states and the
694853
// validation enforcement that should be applied to them. The table is described
695854
// by a markdown table. This is done so that the test cases can be more easily
@@ -898,165 +1057,6 @@ func TestParameterValidationEnforcement(t *testing.T) {
8981057
})
8991058
})
9001059
}
901-
=======
902-
func TestParameterValidation(t *testing.T) {
903-
t.Parallel()
904-
opts := func(vals ...string) []provider.Option {
905-
options := make([]provider.Option, 0, len(vals))
906-
for _, val := range vals {
907-
options = append(options, provider.Option{
908-
Name: val,
909-
Value: val,
910-
})
911-
}
912-
return options
913-
}
914-
915-
for _, tc := range []struct {
916-
Name string
917-
Parameter provider.Parameter
918-
Value string
919-
ExpectError *regexp.Regexp
920-
}{
921-
{
922-
Name: "ValidStringParameter",
923-
Parameter: provider.Parameter{
924-
Type: "string",
925-
},
926-
Value: "alpha",
927-
},
928-
// Test invalid states
929-
{
930-
Name: "InvalidFormType",
931-
Parameter: provider.Parameter{
932-
Type: "string",
933-
Option: opts("alpha", "bravo", "charlie"),
934-
FormType: provider.ParameterFormTypeSlider,
935-
},
936-
Value: "alpha",
937-
ExpectError: regexp.MustCompile("Invalid form_type for parameter"),
938-
},
939-
{
940-
Name: "NotInOptions",
941-
Parameter: provider.Parameter{
942-
Type: "string",
943-
Option: opts("alpha", "bravo", "charlie"),
944-
},
945-
Value: "delta", // not in option set
946-
ExpectError: regexp.MustCompile("Value must be a valid option"),
947-
},
948-
{
949-
Name: "NumberNotInOptions",
950-
Parameter: provider.Parameter{
951-
Type: "number",
952-
Option: opts("1", "2", "3"),
953-
},
954-
Value: "0", // not in option set
955-
ExpectError: regexp.MustCompile("Value must be a valid option"),
956-
},
957-
{
958-
Name: "NonUniqueOptionNames",
959-
Parameter: provider.Parameter{
960-
Type: "string",
961-
Option: opts("alpha", "alpha"),
962-
},
963-
Value: "alpha",
964-
ExpectError: regexp.MustCompile("Option names must be unique"),
965-
},
966-
{
967-
Name: "NonUniqueOptionValues",
968-
Parameter: provider.Parameter{
969-
Type: "string",
970-
Option: []provider.Option{
971-
{Name: "Alpha", Value: "alpha"},
972-
{Name: "AlphaAgain", Value: "alpha"},
973-
},
974-
},
975-
Value: "alpha",
976-
ExpectError: regexp.MustCompile("Option values must be unique"),
977-
},
978-
{
979-
Name: "IncorrectValueTypeOption",
980-
Parameter: provider.Parameter{
981-
Type: "number",
982-
Option: opts("not-a-number"),
983-
},
984-
Value: "5",
985-
ExpectError: regexp.MustCompile("is not a number"),
986-
},
987-
{
988-
Name: "IncorrectValueType",
989-
Parameter: provider.Parameter{
990-
Type: "number",
991-
},
992-
Value: "not-a-number",
993-
ExpectError: regexp.MustCompile("Parameter value is not of type \"number\""),
994-
},
995-
{
996-
Name: "NotListStringDefault",
997-
Parameter: provider.Parameter{
998-
Type: "list(string)",
999-
Default: "not-a-list",
1000-
},
1001-
ExpectError: regexp.MustCompile("not a valid list of strings"),
1002-
},
1003-
{
1004-
Name: "NotListStringDefault",
1005-
Parameter: provider.Parameter{
1006-
Type: "list(string)",
1007-
},
1008-
Value: "not-a-list",
1009-
ExpectError: regexp.MustCompile("not a valid list of strings"),
1010-
},
1011-
{
1012-
Name: "DefaultListStringNotInOptions",
1013-
Parameter: provider.Parameter{
1014-
Type: "list(string)",
1015-
Default: `["red", "yellow", "black"]`,
1016-
Option: opts("red", "blue", "green"),
1017-
FormType: provider.ParameterFormTypeMultiSelect,
1018-
},
1019-
ExpectError: regexp.MustCompile("is not a valid option, values \"yellow, black\" are missing from the options"),
1020-
},
1021-
{
1022-
Name: "ListStringNotInOptions",
1023-
Parameter: provider.Parameter{
1024-
Type: "list(string)",
1025-
Default: `["red"]`,
1026-
Option: opts("red", "blue", "green"),
1027-
FormType: provider.ParameterFormTypeMultiSelect,
1028-
},
1029-
Value: `["red", "yellow", "black"]`,
1030-
ExpectError: regexp.MustCompile("is not a valid option, values \"yellow, black\" are missing from the options"),
1031-
},
1032-
{
1033-
Name: "InvalidMiniumum",
1034-
Parameter: provider.Parameter{
1035-
Type: "number",
1036-
Default: "5",
1037-
Validation: []provider.Validation{{
1038-
Min: 10,
1039-
Error: "must be greater than 10",
1040-
}},
1041-
},
1042-
ExpectError: regexp.MustCompile("must be greater than 10"),
1043-
},
1044-
} {
1045-
tc := tc
1046-
t.Run(tc.Name, func(t *testing.T) {
1047-
t.Parallel()
1048-
diags := tc.Parameter.Valid(tc.Value)
1049-
if tc.ExpectError != nil {
1050-
require.True(t, diags.HasError())
1051-
errMsg := fmt.Sprintf("%+v", diags[0]) // close enough
1052-
require.Truef(t, tc.ExpectError.MatchString(errMsg), "got: %s", errMsg)
1053-
} else {
1054-
if !assert.False(t, diags.HasError()) {
1055-
t.Logf("got: %+v", diags[0])
1056-
}
1057-
}
1058-
})
1059-
>>>>>>> c640b02 (begin adding invalid unit tests)
10601060
}
10611061
}
10621062

0 commit comments

Comments
 (0)