Skip to content

Commit

Permalink
Add test_sign_gmail_invalid_selector to ic_dns_oracle_backend
Browse files Browse the repository at this point in the history
  • Loading branch information
SoraSuegami committed Oct 25, 2024
1 parent e40142a commit a5285d8
Showing 1 changed file with 101 additions and 0 deletions.
101 changes: 101 additions & 0 deletions src/ic_dns_oracle_backend/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1177,6 +1177,106 @@ mod test {
// };
}

#[test]
fn test_sign_gmail_invalid_selector() {
// We create a PocketIC instance consisting of the NNS, II, and one application subnet.
let pic = PocketIcBuilder::new()
.with_nns_subnet()
.with_ii_subnet() // this subnet has ECDSA keys
.with_application_subnet()
.build();

// We retrieve the app subnet ID from the topology.
let topology = pic.topology();
let app_subnet = topology.get_app_subnets()[0];

// Create empty canisters as the anonymous principal and add cycles.
let poseidon_canister_id = pic.create_canister_on_subnet(None, None, app_subnet);
println!("poseidon_canister_id {:?}", poseidon_canister_id);
pic.add_cycles(poseidon_canister_id, 2_000_000_000_000);
let dns_client_canister_id = pic.create_canister_on_subnet(None, None, app_subnet);
println!("dns_client_canister_id {:?}", dns_client_canister_id);
pic.add_cycles(dns_client_canister_id, 2_000_000_000_000);
// We create a canister on the app subnet.
let canister_id = pic.create_canister_on_subnet(None, None, app_subnet);
println!("canister_id {:?}", canister_id);
assert_eq!(pic.get_subnet(canister_id), Some(app_subnet));
pic.add_cycles(canister_id, 2_000_000_000_000);
pic.install_canister(
poseidon_canister_id,
include_bytes!("../../../target/wasm32-unknown-unknown/release/poseidon.wasm").to_vec(),
vec![],
None,
);
pic.install_canister(
dns_client_canister_id,
include_bytes!("../../../target/wasm32-unknown-unknown/release/dns_client.wasm")
.to_vec(),
vec![],
None,
);
pic.install_canister(
canister_id,
include_bytes!(
"../../../target/wasm32-unknown-unknown/release/ic_dns_oracle_backend.wasm"
)
.to_vec(),
Encode!(
&Some(Environment::Production),
&poseidon_canister_id.to_string(),
&dns_client_canister_id.to_string()
)
.unwrap(),
None,
);

// Init the signer's ethereum address.
let call_id = pic
.submit_call(
canister_id,
Principal::anonymous(),
"init_signer_ethereum_address",
encode_one(()).unwrap(),
)
.unwrap();
// pic.tick();
let reply = pic.await_call(call_id).unwrap();
let signer_addr = match reply {
WasmResult::Reply(data) => {
let res: String = decode_one(&data).unwrap();
res
// assert_eq!(http_response.unwrap(), "0x9edbd2293d6192a84a7b4c5c699d31f906e8b83b09b817dbcbf4bcda3c6ca02fd2a1d99f995b360f52801f79a2d40a9d31d535da1d957c44de389920198ab996377df7a009eee7764b238b42696168d1c7ecbc7e31d69bf3fcc337549dc4f0110e070cec0b111021f0435e51db415a2940011aee0d4db4767c32a76308aae634320642d63fe2e018e81f505e13e0765bd8f6366d0b443fa41ea8eb5c5b8aebb07db82fb5e10fe1d265bd61b22b6b13454f6e1273c43c08e0917cd795cc9d25636606145cff02c48d58d0538d96ab50620b28ad9f5aa685b528f41ef1bad24a546c8bdb1707fb6ee7a2e61bbb440cd9ab6795d4c106145000c13aeeedd678b05f");
}
WasmResult::Reject(msg) => panic!("Unexpected reject {}", msg),
};

// Submit an update call to the test canister making a canister http outcall
// and mock a canister http outcall response.
let selector = "20230601._domainkey.gmail.com&name=xx";
let domain = "any.com";
let call_id = pic
.submit_call(
canister_id,
Principal::anonymous(),
"sign_dkim_public_key",
Encode!(&selector, &domain).unwrap(),
)
.unwrap();

let canister_http_requests = pic.get_canister_http();
assert_eq!(canister_http_requests.len(), 0);
let reply = pic.await_call(call_id).unwrap();
println!("{:?}", reply);
let res = match reply {
WasmResult::Reply(data) => {
let res: Result<SignedDkimPublicKey, String> = decode_one(&data).unwrap();
assert!(res.is_err());
// assert_eq!(http_response.unwrap(), "0x9edbd2293d6192a84a7b4c5c699d31f906e8b83b09b817dbcbf4bcda3c6ca02fd2a1d99f995b360f52801f79a2d40a9d31d535da1d957c44de389920198ab996377df7a009eee7764b238b42696168d1c7ecbc7e31d69bf3fcc337549dc4f0110e070cec0b111021f0435e51db415a2940011aee0d4db4767c32a76308aae634320642d63fe2e018e81f505e13e0765bd8f6366d0b443fa41ea8eb5c5b8aebb07db82fb5e10fe1d265bd61b22b6b13454f6e1273c43c08e0917cd795cc9d25636606145cff02c48d58d0538d96ab50620b28ad9f5aa685b528f41ef1bad24a546c8bdb1707fb6ee7a2e61bbb440cd9ab6795d4c106145000c13aeeedd678b05f");
}
WasmResult::Reject(msg) => panic!("Unexpected reject {}", msg),
};
}

fn private_key_der_to_public_key_hex(private_key: &[u8]) -> String {
let private_key =
RsaPrivateKey::from_pkcs1_der(private_key).expect("Invalid format private key");
Expand All @@ -1196,4 +1296,5 @@ mod test {
let hash = raw_keccak256(eth_message).to_vec();
hash.try_into().unwrap()
}

}

0 comments on commit a5285d8

Please sign in to comment.