Add tests for canonical JSON.
This commit is contained in:
parent
07295b11bb
commit
9a56e2b0a6
102
src/lib.rs
102
src/lib.rs
@ -286,11 +286,11 @@ impl Display for Algorithm {
|
||||
mod test {
|
||||
use base64::{decode_config, STANDARD_NO_PAD};
|
||||
use serde::Serialize;
|
||||
use serde_json::{from_str, to_string, to_value};
|
||||
use serde_json::{from_str, to_string, to_value, Value};
|
||||
|
||||
use super::{
|
||||
sign_json, verify_json, Ed25519KeyPair, Ed25519Verifier, KeyPair, Signature, SignatureMap,
|
||||
SignatureSet,
|
||||
sign_json, to_canonical_json, verify_json, Ed25519KeyPair, Ed25519Verifier, KeyPair,
|
||||
Signature, SignatureMap, SignatureSet,
|
||||
};
|
||||
|
||||
const PUBLIC_KEY: &str = "XGX0JRS2Af3be3knz2fBiRbApjm2Dh61gXDJA8kcJNI";
|
||||
@ -301,6 +301,102 @@ mod test {
|
||||
const MINIMAL_JSON_SIGNATURE: &str =
|
||||
"KqmLSbO39/Bzb0QIYE82zqLwsA+PDzYIpIRA2sRQ4sL53+sN6/fpNSoqE7BP7vBZhG6kYdD13EIMJpvhJI+6Bw";
|
||||
|
||||
fn test_canonical_json(input: &str) -> String {
|
||||
let value = from_str::<Value>(input).unwrap();
|
||||
|
||||
to_canonical_json(&value).unwrap()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn canonical_json_examples() {
|
||||
assert_eq!(&test_canonical_json("{}"), "{}");
|
||||
|
||||
assert_eq!(
|
||||
&test_canonical_json(
|
||||
r#"{
|
||||
"one": 1,
|
||||
"two": "Two"
|
||||
}"#
|
||||
),
|
||||
r#"{"one":1,"two":"Two"}"#
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
&test_canonical_json(
|
||||
r#"{
|
||||
"b": "2",
|
||||
"a": "1"
|
||||
}"#
|
||||
),
|
||||
r#"{"a":"1","b":"2"}"#
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
&test_canonical_json(r#"{"b":"2","a":"1"}"#),
|
||||
r#"{"a":"1","b":"2"}"#
|
||||
);
|
||||
|
||||
assert_eq!(&test_canonical_json(
|
||||
r#"{
|
||||
"auth": {
|
||||
"success": true,
|
||||
"mxid": "@john.doe:example.com",
|
||||
"profile": {
|
||||
"display_name": "John Doe",
|
||||
"three_pids": [
|
||||
{
|
||||
"medium": "email",
|
||||
"address": "john.doe@example.org"
|
||||
},
|
||||
{
|
||||
"medium": "msisdn",
|
||||
"address": "123456789"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}"#),
|
||||
r#"{"auth":{"mxid":"@john.doe:example.com","profile":{"display_name":"John Doe","three_pids":[{"address":"john.doe@example.org","medium":"email"},{"address":"123456789","medium":"msisdn"}]},"success":true}}"#
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
&test_canonical_json(
|
||||
r#"{
|
||||
"a": "日本語"
|
||||
}"#
|
||||
),
|
||||
r#"{"a":"日本語"}"#
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
&test_canonical_json(
|
||||
r#"{
|
||||
"本": 2,
|
||||
"日": 1
|
||||
}"#
|
||||
),
|
||||
r#"{"日":1,"本":2}"#
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
&test_canonical_json(
|
||||
r#"{
|
||||
"a": "\u65E5"
|
||||
}"#
|
||||
),
|
||||
r#"{"a":"日"}"#
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
&test_canonical_json(
|
||||
r#"{
|
||||
"a": null
|
||||
}"#
|
||||
),
|
||||
r#"{"a":null}"#
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sign_empty_json() {
|
||||
let key_pair = Ed25519KeyPair::new(
|
||||
|
Loading…
x
Reference in New Issue
Block a user