summaryrefslogtreecommitdiff
path: root/verify_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'verify_test.go')
-rw-r--r--verify_test.go146
1 files changed, 47 insertions, 99 deletions
diff --git a/verify_test.go b/verify_test.go
index 0689be1..769bfbc 100644
--- a/verify_test.go
+++ b/verify_test.go
@@ -1,4 +1,4 @@
-package eduvpn_verify
+package eduvpn_discovery
import (
"bufio"
@@ -10,59 +10,18 @@ import (
"testing"
)
-const (
- ok = -1
- errAny = -2
-)
-
-func compareResults(t *testing.T, ret bool, err error, expected int, call func() string) {
- getCode := func(err error) int {
- switch e := err.(type) {
- case detailedVerifyError:
- return int(e.Code)
- case VerifyError:
- return int(e.Code)
- }
- panic(nil)
- }
-
- if (err == nil) != (expected == ok) || err != nil && expected != errAny && getCode(err) != expected {
- var errMsg string
- if err != nil {
- errMsg = fmt.Sprintf("%v %v (cause %v)", getCode(err), err, errors.Unwrap(err))
- } else {
- errMsg = "<ok>"
- }
-
- var wantErrCode string
- switch expected {
- case ok:
- wantErrCode = "<ok>"
- case errAny:
- wantErrCode = "<any>"
- default:
- wantErrCode = strconv.Itoa(expected)
- }
-
- t.Errorf("%v\nerror = %v, wantErr %v", call(), errMsg, wantErrCode)
- return
- }
- if ret != (expected == ok) {
- t.Errorf("%v\n= %v, want %v", call(), ret, expected == ok)
- }
-}
-
func Test_verifyWithKeys(t *testing.T) {
var err error
var pk []string
{
- file, err := os.Open("test_data/dummy/public.key")
+ file, err := os.Open("test_data/public.key")
if err != nil {
panic(err)
}
defer file.Close()
+ // Get last line (key string) from file
scanner := bufio.NewScanner(file)
for i := 0; i < 2; i++ {
if !scanner.Scan() {
@@ -123,29 +82,24 @@ func Test_verifyWithKeys(t *testing.T) {
{errInvalidPublicKey, "invalid allowed key", "server_list.json.minisig", "server_list.json", "server_list.json", 10, []string{"AAA"}},
}
+ // Cache file contents in map, mapping file names to contents
files := map[string][]byte{}
- for _, test := range tests {
- signature, loaded := files[test.signatureFile]
+ loadFile := func(name string) {
+ content, loaded := files[name]
if !loaded {
- signature, err = ioutil.ReadFile("test_data/dummy/" + test.signatureFile)
+ content, err = ioutil.ReadFile("test_data/" + name)
if err != nil {
panic(err)
}
- files[test.signatureFile] = signature
- }
-
- json, loaded := files[test.jsonFile]
- if !loaded {
- json, err = ioutil.ReadFile("test_data/dummy/" + test.jsonFile)
- if err != nil {
- panic(err)
- }
- files[test.jsonFile] = json
+ files[name] = content
}
}
+ for _, test := range tests {
+ loadFile(test.signatureFile)
+ loadFile(test.jsonFile)
+ }
for _, tt := range tests {
- tt := tt
t.Run(tt.testName, func(t *testing.T) {
t.Parallel()
valid, err := verifyWithKeys(string(files[tt.signatureFile]), files[tt.jsonFile],
@@ -158,52 +112,46 @@ func Test_verifyWithKeys(t *testing.T) {
}
}
-func Test_Verify(t *testing.T) {
- var err error
- tests := []struct {
- result VerifyErrorCode
- testName string
- signatureFile string
- jsonFile string
- expectedFileName string
- minSignTime uint64
- }{
- //TODO tests with real valid *prehashed* signatures
- {ErrInvalidSignature, "pure server_list", "server_list-1.json.pure.minisig", "server_list-1.json", "server_list.json", 1636532223},
- {ErrInvalidSignature, "pure organization_list", "organization_list-1.json.pure.minisig", "organization_list-1.json", "organization_list.json", 1636532223},
- {ErrInvalidSignatureUnknownKey, "wrong key", "../dummy/server_list.json.minisig", "../dummy/server_list.json", "server_list.json", 10},
+const (
+ ok = -1 // Test should not give an error.
+ errAny = -2 // Test should give any error (specific error is an implementation detail).
+)
+
+// compareResults compares returned ret, err from a verify function with expected error code expected.
+// callStr is called to get the formatted parameters passed to the function.
+func compareResults(t *testing.T, ret bool, err error, expected int, callStr func() string) {
+ getCode := func(err error) int {
+ switch e := err.(type) {
+ case detailedVerifyError:
+ return int(e.Code)
+ case VerifyError:
+ return int(e.Code)
+ }
+ panic(nil)
}
- files := map[string][]byte{}
- for _, test := range tests {
- signature, loaded := files[test.signatureFile]
- if !loaded {
- signature, err = ioutil.ReadFile("test_data/real/" + test.signatureFile)
- if err != nil {
- panic(err)
- }
- files[test.signatureFile] = signature
+ if (err == nil) != (expected == ok) || err != nil && expected != errAny && getCode(err) != expected {
+ var errMsg string
+ if err != nil {
+ errMsg = fmt.Sprintf("%v %v (cause %v)", getCode(err), err, errors.Unwrap(err))
+ } else {
+ errMsg = "<ok>"
}
- json, loaded := files[test.jsonFile]
- if !loaded {
- json, err = ioutil.ReadFile("test_data/real/" + test.jsonFile)
- if err != nil {
- panic(err)
- }
- files[test.jsonFile] = json
+ var wantErrCode string
+ switch expected {
+ case ok:
+ wantErrCode = "<ok>"
+ case errAny:
+ wantErrCode = "<any>"
+ default:
+ wantErrCode = strconv.Itoa(expected)
}
- }
- for _, tt := range tests {
- tt := tt
- t.Run(tt.testName, func(t *testing.T) {
- t.Parallel()
- valid, err := Verify(string(files[tt.signatureFile]), files[tt.jsonFile], tt.expectedFileName, tt.minSignTime)
- compareResults(t, valid, err, int(tt.result), func() string {
- return fmt.Sprintf("Verify(%q, %q, %q, %v)",
- tt.signatureFile, tt.jsonFile, tt.expectedFileName, tt.minSignTime)
- })
- })
+ t.Errorf("%v\nerror = %v, wantErr %v", callStr(), errMsg, wantErrCode)
+ return
+ }
+ if ret != (expected == ok) {
+ t.Errorf("%v\n= %v, want %v", callStr(), ret, expected == ok)
}
}