Update gomatrixserverlib (#89)
This commit is contained in:
parent
a1ce351d36
commit
0309035aad
17 changed files with 1355 additions and 71 deletions
139
vendor/src/github.com/matrix-org/gomatrixserverlib/keyring_test.go
vendored
Normal file
139
vendor/src/github.com/matrix-org/gomatrixserverlib/keyring_test.go
vendored
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
package gomatrixserverlib
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var privateKeySeed1 = `QJvXAPj0D9MUb1exkD8pIWmCvT1xajlsB8jRYz/G5HE`
|
||||
var privateKeySeed2 = `AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA`
|
||||
|
||||
// testKeys taken from a copy of synapse.
|
||||
var testKeys = `{
|
||||
"old_verify_keys": {
|
||||
"ed25519:old": {
|
||||
"expired_ts": 929059200,
|
||||
"key": "O2onvM62pC1io6jQKm8Nc2UyFXcd4kOmOsBIoYtZ2ik"
|
||||
}
|
||||
},
|
||||
"server_name": "localhost:8800",
|
||||
"signatures": {
|
||||
"localhost:8800": {
|
||||
"ed25519:a_Obwu": "xkr4Z49ODoQnRi//ePfXlt8Q68vzd+DkzBNCt60NcwnLjNREx0qVQrw1iTFSoxkgGtz30NDkmyffDrCrmX5KBw"
|
||||
}
|
||||
},
|
||||
"tls_fingerprints": [
|
||||
{
|
||||
"sha256": "I2ohBnqpb5m3HldWFwyA10WdjqDksukiKVUdZ690WzM"
|
||||
}
|
||||
],
|
||||
"valid_until_ts": 1493142432964,
|
||||
"verify_keys": {
|
||||
"ed25519:a_Obwu": {
|
||||
"key": "2UwTWD4+tgTgENV7znGGNqhAOGY+BW1mRAnC6W6FBQg"
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
type testKeyDatabase struct{}
|
||||
|
||||
func (db *testKeyDatabase) FetchKeys(requests map[PublicKeyRequest]Timestamp) (map[PublicKeyRequest]ServerKeys, error) {
|
||||
results := map[PublicKeyRequest]ServerKeys{}
|
||||
var keys ServerKeys
|
||||
if err := json.Unmarshal([]byte(testKeys), &keys); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req1 := PublicKeyRequest{"localhost:8800", "ed25519:old"}
|
||||
req2 := PublicKeyRequest{"localhost:8800", "ed25519:a_Obwu"}
|
||||
|
||||
for req := range requests {
|
||||
if req == req1 || req == req2 {
|
||||
results[req] = keys
|
||||
}
|
||||
}
|
||||
return results, nil
|
||||
}
|
||||
|
||||
func (db *testKeyDatabase) StoreKeys(requests map[PublicKeyRequest]ServerKeys) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestVerifyJSONsSuccess(t *testing.T) {
|
||||
// Check that trying to verify the server key JSON works.
|
||||
k := KeyRing{nil, &testKeyDatabase{}}
|
||||
results, err := k.VerifyJSONs([]VerifyJSONRequest{{
|
||||
ServerName: "localhost:8800",
|
||||
Message: []byte(testKeys),
|
||||
AtTS: 1493142432964,
|
||||
}})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(results) != 1 || results[0].Result != nil {
|
||||
t.Fatalf("VerifyJSON(): Wanted [{Result: nil}] got %#v", results)
|
||||
}
|
||||
}
|
||||
|
||||
func TestVerifyJSONsUnknownServerFails(t *testing.T) {
|
||||
// Check that trying to verify JSON for an unknown server fails.
|
||||
k := KeyRing{nil, &testKeyDatabase{}}
|
||||
results, err := k.VerifyJSONs([]VerifyJSONRequest{{
|
||||
ServerName: "unknown:8800",
|
||||
Message: []byte(testKeys),
|
||||
AtTS: 1493142432964,
|
||||
}})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(results) != 1 || results[0].Result == nil {
|
||||
t.Fatalf("VerifyJSON(): Wanted [{Result: <some error>}] got %#v", results)
|
||||
}
|
||||
}
|
||||
|
||||
func TestVerifyJSONsDistantFutureFails(t *testing.T) {
|
||||
// Check that trying to verify JSON from the distant future fails.
|
||||
distantFuture := Timestamp(2000000000000)
|
||||
k := KeyRing{nil, &testKeyDatabase{}}
|
||||
results, err := k.VerifyJSONs([]VerifyJSONRequest{{
|
||||
ServerName: "unknown:8800",
|
||||
Message: []byte(testKeys),
|
||||
AtTS: distantFuture,
|
||||
}})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(results) != 1 || results[0].Result == nil {
|
||||
t.Fatalf("VerifyJSON(): Wanted [{Result: <some error>}] got %#v", results)
|
||||
}
|
||||
}
|
||||
|
||||
func TestVerifyJSONsFetcherError(t *testing.T) {
|
||||
// Check that if the database errors then the attempt to verify JSON fails.
|
||||
k := KeyRing{nil, &erroringKeyDatabase{}}
|
||||
results, err := k.VerifyJSONs([]VerifyJSONRequest{{
|
||||
ServerName: "localhost:8800",
|
||||
Message: []byte(testKeys),
|
||||
AtTS: 1493142432964,
|
||||
}})
|
||||
if err != error(&testErrorFetch) || results != nil {
|
||||
t.Fatalf("VerifyJSONs(): Wanted (nil, <some error>) got (%#v, %q)", results, err)
|
||||
}
|
||||
}
|
||||
|
||||
type erroringKeyDatabase struct{}
|
||||
|
||||
type erroringKeyDatabaseError int
|
||||
|
||||
func (e *erroringKeyDatabaseError) Error() string { return "An error with the key database" }
|
||||
|
||||
var testErrorFetch = erroringKeyDatabaseError(1)
|
||||
var testErrorStore = erroringKeyDatabaseError(2)
|
||||
|
||||
func (e *erroringKeyDatabase) FetchKeys(requests map[PublicKeyRequest]Timestamp) (map[PublicKeyRequest]ServerKeys, error) {
|
||||
return nil, &testErrorFetch
|
||||
}
|
||||
|
||||
func (e *erroringKeyDatabase) StoreKeys(keys map[PublicKeyRequest]ServerKeys) error {
|
||||
return &testErrorStore
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue