summaryrefslogtreecommitdiff
path: root/test/utils/matchers.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/utils/matchers.go')
-rw-r--r--test/utils/matchers.go38
1 files changed, 34 insertions, 4 deletions
diff --git a/test/utils/matchers.go b/test/utils/matchers.go
index 17ff3ea75..288779b63 100644
--- a/test/utils/matchers.go
+++ b/test/utils/matchers.go
@@ -1,11 +1,12 @@
package utils
import (
+ "encoding/json"
"fmt"
"net/url"
"github.com/containers/common/pkg/config"
- . "github.com/onsi/gomega"
+ . "github.com/onsi/gomega" //nolint:golint,stylecheck
"github.com/onsi/gomega/format"
"github.com/onsi/gomega/gexec"
"github.com/onsi/gomega/matchers"
@@ -95,7 +96,7 @@ func (matcher *URLMatcher) Match(actual interface{}) (bool, error) {
if !ok {
return false, fmt.Errorf("VerifyURL requires string inputs %T is not supported", matcher.Expected)
}
- e_uri, err := url.Parse(e)
+ eURI, err := url.Parse(e)
if err != nil {
return false, err
}
@@ -104,12 +105,12 @@ func (matcher *URLMatcher) Match(actual interface{}) (bool, error) {
if !ok {
return false, fmt.Errorf("VerifyURL requires string inputs %T is not supported", actual)
}
- a_uri, err := url.Parse(a)
+ aURI, err := url.Parse(a)
if err != nil {
return false, err
}
- return (&matchers.EqualMatcher{Expected: e_uri}).Match(a_uri)
+ return (&matchers.EqualMatcher{Expected: eURI}).Match(aURI)
}
type ExitMatcher struct {
@@ -166,3 +167,32 @@ func (matcher *ExitMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
}
return true
}
+
+type ValidJSONMatcher struct {
+ types.GomegaMatcher
+}
+
+func BeValidJSON() *ValidJSONMatcher {
+ return &ValidJSONMatcher{}
+}
+
+func (matcher *ValidJSONMatcher) Match(actual interface{}) (success bool, err error) {
+ s, ok := actual.(string)
+ if !ok {
+ return false, fmt.Errorf("ValidJSONMatcher expects a string, not %q", actual)
+ }
+
+ var i interface{}
+ if err := json.Unmarshal([]byte(s), &i); err != nil {
+ return false, nil
+ }
+ return true, nil
+}
+
+func (matcher *ValidJSONMatcher) FailureMessage(actual interface{}) (message string) {
+ return format.Message(actual, "to be valid JSON")
+}
+
+func (matcher *ValidJSONMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+ return format.Message(actual, "to _not_ be valid JSON")
+}