Update tests to verify new API.
This commit is contained in:
parent
ad3b4401f0
commit
66f35cd12a
103
src/lib.rs
103
src/lib.rs
@ -225,17 +225,17 @@ mod test {
|
|||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
sign_json, to_canonical_json, verify_json, Ed25519KeyPair, Ed25519Verifier, KeyPair,
|
sign_json, to_canonical_json, verify_json, Ed25519KeyPair, Ed25519Verifier, KeyPair,
|
||||||
Signature, SignatureMap, SignatureSet,
|
Signature,
|
||||||
};
|
};
|
||||||
|
|
||||||
const PUBLIC_KEY: &str = "XGX0JRS2Af3be3knz2fBiRbApjm2Dh61gXDJA8kcJNI";
|
|
||||||
const PRIVATE_KEY: &str = "YJDBA9Xnr2sVqXD9Vj7XVUnmFZcZrlw8Md7kMW+3XA0";
|
|
||||||
|
|
||||||
const EMPTY_JSON_SIGNATURE: &str =
|
const EMPTY_JSON_SIGNATURE: &str =
|
||||||
"K8280/U9SSy9IVtjBuVeLr+HpOB4BQFWbg+UZaADMtTdGYI7Geitb76LTrr5QV/7Xg4ahLwYGYZzuHGZKM5ZAQ";
|
"K8280/U9SSy9IVtjBuVeLr+HpOB4BQFWbg+UZaADMtTdGYI7Geitb76LTrr5QV/7Xg4ahLwYGYZzuHGZKM5ZAQ";
|
||||||
const MINIMAL_JSON_SIGNATURE: &str =
|
const MINIMAL_JSON_SIGNATURE: &str =
|
||||||
"KqmLSbO39/Bzb0QIYE82zqLwsA+PDzYIpIRA2sRQ4sL53+sN6/fpNSoqE7BP7vBZhG6kYdD13EIMJpvhJI+6Bw";
|
"KqmLSbO39/Bzb0QIYE82zqLwsA+PDzYIpIRA2sRQ4sL53+sN6/fpNSoqE7BP7vBZhG6kYdD13EIMJpvhJI+6Bw";
|
||||||
|
|
||||||
|
const PUBLIC_KEY: &str = "XGX0JRS2Af3be3knz2fBiRbApjm2Dh61gXDJA8kcJNI";
|
||||||
|
const PRIVATE_KEY: &str = "YJDBA9Xnr2sVqXD9Vj7XVUnmFZcZrlw8Md7kMW+3XA0";
|
||||||
|
|
||||||
|
/// Convenience for converting a string of JSON into its canonical form.
|
||||||
fn test_canonical_json(input: &str) -> String {
|
fn test_canonical_json(input: &str) -> String {
|
||||||
let value = from_str::<Value>(input).unwrap();
|
let value = from_str::<Value>(input).unwrap();
|
||||||
|
|
||||||
@ -349,7 +349,10 @@ mod test {
|
|||||||
|
|
||||||
sign_json("example.com", &key_pair, &mut value).unwrap();
|
sign_json("example.com", &key_pair, &mut value).unwrap();
|
||||||
|
|
||||||
assert_eq!(value.pointer("/signatures/example.com/ed25519:1").unwrap(), EMPTY_JSON_SIGNATURE);
|
assert_eq!(
|
||||||
|
to_string(&value).unwrap(),
|
||||||
|
r#"{"signatures":{"example.com":{"ed25519:1":"K8280/U9SSy9IVtjBuVeLr+HpOB4BQFWbg+UZaADMtTdGYI7Geitb76LTrr5QV/7Xg4ahLwYGYZzuHGZKM5ZAQ"}}}"#
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -377,39 +380,6 @@ mod test {
|
|||||||
.is_ok());
|
.is_ok());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn signature_map_empty_json() {
|
|
||||||
#[derive(Serialize)]
|
|
||||||
struct EmptyWithSignatureMap {
|
|
||||||
signatures: SignatureMap,
|
|
||||||
}
|
|
||||||
|
|
||||||
let signature = Signature::new(
|
|
||||||
"ed25519:1",
|
|
||||||
decode_config(&EMPTY_JSON_SIGNATURE, STANDARD_NO_PAD)
|
|
||||||
.unwrap()
|
|
||||||
.as_slice(),
|
|
||||||
)
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let mut signature_set = SignatureSet::with_capacity(1);
|
|
||||||
signature_set.insert(signature);
|
|
||||||
|
|
||||||
let mut signature_map = SignatureMap::with_capacity(1);
|
|
||||||
signature_map.insert("domain", signature_set).ok();
|
|
||||||
|
|
||||||
let empty = EmptyWithSignatureMap {
|
|
||||||
signatures: signature_map,
|
|
||||||
};
|
|
||||||
|
|
||||||
let json = to_string(&empty).unwrap();
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
json,
|
|
||||||
r#"{"signatures":{"domain":{"ed25519:1":"K8280/U9SSy9IVtjBuVeLr+HpOB4BQFWbg+UZaADMtTdGYI7Geitb76LTrr5QV/7Xg4ahLwYGYZzuHGZKM5ZAQ"}}}"#
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn sign_minimal_json() {
|
fn sign_minimal_json() {
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
@ -448,12 +418,19 @@ mod test {
|
|||||||
let mut alpha_value = to_value(alpha).expect("alpha should serialize");
|
let mut alpha_value = to_value(alpha).expect("alpha should serialize");
|
||||||
sign_json("example.com", &key_pair, &mut alpha_value).unwrap();
|
sign_json("example.com", &key_pair, &mut alpha_value).unwrap();
|
||||||
|
|
||||||
assert_eq!(alpha_value.pointer("/signatures/example.com/ed25519:1").unwrap(), MINIMAL_JSON_SIGNATURE);
|
assert_eq!(
|
||||||
|
to_string(&alpha_value).unwrap(),
|
||||||
|
r#"{"one":1,"signatures":{"example.com":{"ed25519:1":"KqmLSbO39/Bzb0QIYE82zqLwsA+PDzYIpIRA2sRQ4sL53+sN6/fpNSoqE7BP7vBZhG6kYdD13EIMJpvhJI+6Bw"}},"two":"Two"}"#
|
||||||
|
);
|
||||||
|
|
||||||
let mut reverse_alpha_value = to_value(reverse_alpha).expect("reverse_alpha should serialize");
|
let mut reverse_alpha_value =
|
||||||
|
to_value(reverse_alpha).expect("reverse_alpha should serialize");
|
||||||
sign_json("example.com", &key_pair, &mut reverse_alpha_value).unwrap();
|
sign_json("example.com", &key_pair, &mut reverse_alpha_value).unwrap();
|
||||||
|
|
||||||
assert_eq!(reverse_alpha_value.pointer("/signatures/example.com/ed25519:1").unwrap(), MINIMAL_JSON_SIGNATURE);
|
assert_eq!(
|
||||||
|
to_string(&reverse_alpha_value).unwrap(),
|
||||||
|
r#"{"one":1,"signatures":{"example.com":{"ed25519:1":"KqmLSbO39/Bzb0QIYE82zqLwsA+PDzYIpIRA2sRQ4sL53+sN6/fpNSoqE7BP7vBZhG6kYdD13EIMJpvhJI+6Bw"}},"two":"Two"}"#
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -467,7 +444,7 @@ mod test {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let value = from_str(
|
let value = from_str(
|
||||||
r#"{"one":1,"signatures":{"domain":{"ed25519:1":"KqmLSbO39/Bzb0QIYE82zqLwsA+PDzYIpIRA2sRQ4sL53+sN6/fpNSoqE7BP7vBZhG6kYdD13EIMJpvhJI+6Bw"}},"two":"Two"}"#
|
r#"{"one":1,"signatures":{"example.com":{"ed25519:1":"KqmLSbO39/Bzb0QIYE82zqLwsA+PDzYIpIRA2sRQ4sL53+sN6/fpNSoqE7BP7vBZhG6kYdD13EIMJpvhJI+6Bw"}},"two":"Two"}"#
|
||||||
).unwrap();
|
).unwrap();
|
||||||
|
|
||||||
let verifier = Ed25519Verifier;
|
let verifier = Ed25519Verifier;
|
||||||
@ -483,7 +460,7 @@ mod test {
|
|||||||
.is_ok());
|
.is_ok());
|
||||||
|
|
||||||
let reverse_value = from_str(
|
let reverse_value = from_str(
|
||||||
r#"{"two":"Two","signatures":{"domain":{"ed25519:1":"KqmLSbO39/Bzb0QIYE82zqLwsA+PDzYIpIRA2sRQ4sL53+sN6/fpNSoqE7BP7vBZhG6kYdD13EIMJpvhJI+6Bw"}},"one":1}"#
|
r#"{"two":"Two","signatures":{"example.com":{"ed25519:1":"KqmLSbO39/Bzb0QIYE82zqLwsA+PDzYIpIRA2sRQ4sL53+sN6/fpNSoqE7BP7vBZhG6kYdD13EIMJpvhJI+6Bw"}},"one":1}"#
|
||||||
).unwrap();
|
).unwrap();
|
||||||
|
|
||||||
assert!(verify_json(
|
assert!(verify_json(
|
||||||
@ -498,43 +475,7 @@ mod test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn signature_map_minimal_json() {
|
fn fail_verify_json() {
|
||||||
#[derive(Serialize)]
|
|
||||||
struct MinimalWithSignatureMap {
|
|
||||||
one: u8,
|
|
||||||
signatures: SignatureMap,
|
|
||||||
two: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
let signature = Signature::new(
|
|
||||||
"ed25519:1",
|
|
||||||
decode_config(&MINIMAL_JSON_SIGNATURE, STANDARD_NO_PAD)
|
|
||||||
.unwrap()
|
|
||||||
.as_slice(),
|
|
||||||
)
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let mut signature_set = SignatureSet::with_capacity(1);
|
|
||||||
signature_set.insert(signature);
|
|
||||||
|
|
||||||
let mut signature_map = SignatureMap::with_capacity(1);
|
|
||||||
signature_map.insert("domain", signature_set).ok();
|
|
||||||
|
|
||||||
let minimal = MinimalWithSignatureMap {
|
|
||||||
one: 1,
|
|
||||||
signatures: signature_map.clone(),
|
|
||||||
two: "Two".to_string(),
|
|
||||||
};
|
|
||||||
|
|
||||||
let json = to_string(&minimal).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
json,
|
|
||||||
r#"{"one":1,"signatures":{"domain":{"ed25519:1":"KqmLSbO39/Bzb0QIYE82zqLwsA+PDzYIpIRA2sRQ4sL53+sN6/fpNSoqE7BP7vBZhG6kYdD13EIMJpvhJI+6Bw"}},"two":"Two"}"#
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn fail_verify() {
|
|
||||||
let signature = Signature::new(
|
let signature = Signature::new(
|
||||||
"ed25519:1",
|
"ed25519:1",
|
||||||
decode_config(&EMPTY_JSON_SIGNATURE, STANDARD_NO_PAD)
|
decode_config(&EMPTY_JSON_SIGNATURE, STANDARD_NO_PAD)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user