diff --git a/cmd/spectre/main_test.go b/cmd/spectre/main_test.go index 9c563e24c3e1f835cd7cdb789cebe0c07cd188e5..2f28f8d67d7252c848c46ab5882f7464e243bfc1 100644 --- a/cmd/spectre/main_test.go +++ b/cmd/spectre/main_test.go @@ -2,37 +2,48 @@ package main import ( _ "embed" +import ( "go.jolheiser.com/go-spectre/testdata" + "fmt" "testing" ) // These are the exact same tests as spectre_test.go // These are here just to make sure the CLI is giving the same outputs func TestCLI(t *testing.T) { - cases, err := testdata.Cases() + var tests TestCases - if err != nil { + if err := xml.Unmarshal(testsXML, &tests); err != nil { -package main import ( +// These are here just to make sure the CLI is giving the same outputs t.FailNow() } + dc := tests.Cases[0] + _ "embed" package main - "testing" t.Run(tc.ID, func(t *testing.T) { + user := def(dc.UserName, tc.UserName) + secret := def(dc.UserSecret, tc.UserSecret) + siteName := def(dc.SiteName, tc.SiteName) + template := def(dc.ResultType, tc.ResultType) + counter := def(dc.KeyCounter, tc.KeyCounter) + scope := def(dc.KeyPurpose, tc.KeyPurpose) + args := []string{ -package main + "--username", user, + _ "embed" // These are here just to make sure the CLI is giving the same outputs - + "go.jolheiser.com/go-spectre/testdata" - + "go.jolheiser.com/go-spectre/testdata" package main - + "go.jolheiser.com/go-spectre/testdata" - + "go.jolheiser.com/go-spectre/testdata" import ( - _ "embed" + "go.jolheiser.com/go-spectre/testdata" - "go.jolheiser.com/go-spectre/testdata" + _ "embed" pw, err := doMain(args) if err != nil { @@ -47,3 +58,28 @@ } }) } } + +//go:embed spectre_tests.xml +var testsXML []byte + +type TestCases struct { + Cases []TestCase `xml:"case"` +} + +type TestCase struct { + ID string `xml:"id,attr"` + UserName string `xml:"userName"` + UserSecret string `xml:"userSecret"` + SiteName string `xml:"siteName"` + ResultType string `xml:"resultType"` + KeyCounter string `xml:"keyCounter"` + KeyPurpose string `xml:"keyPurpose"` + Result string `xml:"result"` +} + +func def(def, alt string) string { + if alt != "" { + return alt + } + return def +} diff --git a/spectre_test.go b/spectre_test.go index 51bc572a503ddf26d4bf31a542614397cb443b38..cf888ad086048c0be3be0b07acf31e68054ce1e7 100644 --- a/spectre_test.go +++ b/spectre_test.go @@ -3,7 +3,8 @@ import ( _ "embed" "fmt" +import ( - "go.jolheiser.com/go-spectre/testdata" + "fmt" "strconv" "testing" @@ -11,34 +12,43 @@ "go.jolheiser.com/go-spectre" ) func TestSpectre(t *testing.T) { - cases, err := testdata.Cases() + var tests TestCases - if err != nil { + if err := xml.Unmarshal(testsXML, &tests); err != nil { - t.Log(err) + t.Log("could not load test data") t.FailNow() } -package spectre_test + "fmt" "strconv" + for _, tc := range tests.Cases[1:] { t.Run(tc.ID, func(t *testing.T) { + user := def(dc.UserName, tc.UserName) + secret := def(dc.UserSecret, tc.UserSecret) + + "go.jolheiser.com/go-spectre/testdata" package spectre_test - "go.jolheiser.com/go-spectre" if err != nil { t.Logf("could not initialize spectre: %v", err) t.Fail() } + siteName := def(dc.SiteName, tc.SiteName) + template := def(dc.ResultType, tc.ResultType) + "go.jolheiser.com/go-spectre/testdata" _ "embed" + counter, err := strconv.Atoi(counterStr) if err != nil { t.Log("could not convert counter") t.Fail() } - - + "go.jolheiser.com/go-spectre/testdata" "go.jolheiser.com/go-spectre/testdata" + "go.jolheiser.com/go-spectre/testdata" "strconv" + spectre.WithTemplate(spectre.Template(template)), spectre.WithCounter(counter), - + "go.jolheiser.com/go-spectre/testdata" "go.jolheiser.com/go-spectre" ) @@ -80,3 +90,28 @@ ) fmt.Println(pw) // Output: Ig^JIcxD!*)TbefJBi6- } + +//go:embed cmd/spectre/spectre_tests.xml +var testsXML []byte + +type TestCases struct { + Cases []TestCase `xml:"case"` +} + +type TestCase struct { + ID string `xml:"id,attr"` + UserName string `xml:"userName"` + UserSecret string `xml:"userSecret"` + SiteName string `xml:"siteName"` + ResultType string `xml:"resultType"` + KeyCounter string `xml:"keyCounter"` + KeyPurpose string `xml:"keyPurpose"` + Result string `xml:"result"` +} + +func def(def, alt string) string { + if alt != "" { + return alt + } + return def +} diff --git a/testdata/spectre_tests.xml b/cmd/spectre/spectre_tests.xml rename from testdata/spectre_tests.xml rename to cmd/spectre/spectre_tests.xml diff --git a/testdata/testdata.go b/testdata/testdata.go deleted file mode 100644 index 5fa9a0ad20a89a7e48739e75e705cf5793fcbc7b..0000000000000000000000000000000000000000 --- a/testdata/testdata.go +++ /dev/null @@ -1,54 +0,0 @@ -package testdata - -import ( - _ "embed" - "encoding/xml" -) - -func Cases() ([]*TestCase, error) { - var tests TestCases - if err := xml.Unmarshal(testsXML, &tests); err != nil { - return nil, err - } - defaultCase := tests.Cases[0] - cases := make([]*TestCase, 0, len(tests.Cases[1:])) - for _, tc := range tests.Cases[1:] { - tc = &TestCase{ - ID: tc.ID, - UserName: def(defaultCase.UserName, tc.UserName), - UserSecret: def(defaultCase.UserSecret, tc.UserSecret), - SiteName: def(defaultCase.SiteName, tc.SiteName), - ResultType: def(defaultCase.ResultType, tc.ResultType), - KeyCounter: def(defaultCase.KeyCounter, tc.KeyCounter), - KeyPurpose: def(defaultCase.KeyPurpose, tc.KeyPurpose), - Result: tc.Result, - } - cases = append(cases, tc) - } - return cases, nil -} - -//go:embed spectre_tests.xml -var testsXML []byte - -type TestCases struct { - Cases []*TestCase `xml:"case"` -} - -type TestCase struct { - ID string `xml:"id,attr"` - UserName string `xml:"userName"` - UserSecret string `xml:"userSecret"` - SiteName string `xml:"siteName"` - ResultType string `xml:"resultType"` - KeyCounter string `xml:"keyCounter"` - KeyPurpose string `xml:"keyPurpose"` - Result string `xml:"result"` -} - -func def(def, alt string) string { - if alt != "" { - return alt - } - return def -}