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

Lines changed: 160 additions & 160 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy