From 8f91c777559748fa6e857d9fc1f4ae079a532813 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Mon, 3 Oct 2016 16:03:15 -0400 Subject: Adding ability to serve TLS directly from Mattermost server (#4119) --- .../gopkg.in/square/go-jose.v1/json_fork_test.go | 116 +++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 vendor/gopkg.in/square/go-jose.v1/json_fork_test.go (limited to 'vendor/gopkg.in/square/go-jose.v1/json_fork_test.go') diff --git a/vendor/gopkg.in/square/go-jose.v1/json_fork_test.go b/vendor/gopkg.in/square/go-jose.v1/json_fork_test.go new file mode 100644 index 000000000..686df51b2 --- /dev/null +++ b/vendor/gopkg.in/square/go-jose.v1/json_fork_test.go @@ -0,0 +1,116 @@ +// +build !std_json + +/*- + * Copyright 2014 Square Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jose + +import ( + "testing" + + "gopkg.in/square/go-jose.v1/json" +) + +type CaseSensitive struct { + A int `json:"Test"` + B int `json:"test"` + C int `json:"TEST"` +} + +type UnicodeTest struct { + Sig string `json:"sig"` +} + +func TestUnicodeComparison(t *testing.T) { + // Some tests from RFC 7515, Section 10.13 + raw := []byte(`{"\u0073ig":"foo"}`) + var ut UnicodeTest + err := json.Unmarshal(raw, &ut) + if err != nil { + t.Error(err) + } + + if ut.Sig != "foo" { + t.Error("strings 'sig' and '\\u0073ig' should be equal") + } + + raw = []byte(`{"si\u0047":"bar"}`) + var ut2 UnicodeTest + err = json.Unmarshal(raw, &ut2) + if err != nil { + t.Error(err) + } + + if ut2.Sig != "" { + t.Error("strings 'sig' and 'si\\u0047' should not be equal") + } +} + +func TestCaseSensitiveJSON(t *testing.T) { + raw := []byte(`{"test":42}`) + var cs CaseSensitive + err := json.Unmarshal(raw, &cs) + if err != nil { + t.Error(err) + } + + if cs.A != 0 || cs.B != 42 || cs.C != 0 { + t.Errorf("parsing JSON should be case-sensitive (got %v)", cs) + } +} + +func TestErrorOnTrailingCharacters(t *testing.T) { + raw := []byte(`{"test":42}asdf`) + var m map[string]interface{} + err := json.Unmarshal(raw, &m) + if err == nil { + t.Error("json.Unmarshal should fail if string has trailing chars") + } +} + +func TestRejectDuplicateKeysObject(t *testing.T) { + raw := []byte(`{"test":42,"test":43}`) + var cs CaseSensitive + err := json.Unmarshal(raw, &cs) + if err == nil { + t.Error("should reject JSON with duplicate keys, but didn't") + } +} + +func TestRejectDuplicateKeysInterface(t *testing.T) { + raw := []byte(`{"test":42,"test":43}`) + var m interface{} + err := json.Unmarshal(raw, &m) + if err == nil { + t.Error("should reject JSON with duplicate keys, but didn't") + } +} + +func TestParseCaseSensitiveJWE(t *testing.T) { + invalidJWE := `{"protected":"eyJlbmMiOiJYWVoiLCJBTEciOiJYWVoifQo","encrypted_key":"QUJD","iv":"QUJD","ciphertext":"QUJD","tag":"QUJD"}` + _, err := ParseEncrypted(invalidJWE) + if err == nil { + t.Error("Able to parse message with case-invalid headers", invalidJWE) + } +} + +func TestParseCaseSensitiveJWS(t *testing.T) { + invalidJWS := `{"PAYLOAD":"CUJD","signatures":[{"protected":"e30","signature":"CUJD"}]}` + _, err := ParseSigned(invalidJWS) + if err == nil { + t.Error("Able to parse message with case-invalid headers", invalidJWS) + } +} -- cgit v1.2.3-1-g7c22