e2e-tests: vks lookups

This commit is contained in:
Nora Widdecke 2022-03-03 18:55:53 +01:00
parent 7b8f5e1462
commit 564be875e2
4 changed files with 88 additions and 0 deletions

View File

@ -10,6 +10,7 @@ edition = "2018"
members = [
"database",
"hagridctl",
"high-level-tests",
]
[dependencies]

View File

@ -0,0 +1,11 @@
[package]
name = "high-level-tests"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1.0.55"
reqwest = { version = "0.11.9", features = ["blocking"] }
tokio = { version = "1.17.0", features = ["macros"] }

View File

@ -0,0 +1,3 @@
fn main() {
println!("Hello, world!");
}

View File

@ -0,0 +1,73 @@
use reqwest::Url;
use reqwest::blocking::Client;
use anyhow::Result;
use reqwest::StatusCode;
static SERVER_URL: &str = "https://keys.openpgp.org";
fn assert_request(client: &Client, url: Url, status: StatusCode) -> Result<()> {
let response = client.head(url)
.send()?;
assert_eq!(response.status(), status);
Ok(())
}
#[test]
fn vks_by_fingerprint() -> Result<()> {
let client = Client::new();
let endpoint = Url::parse(SERVER_URL)?
.join("/vks/v1/by-fingerprint/")?;
let nora_primary = "379D09E0A09685C48312D46E9F4EE06E0E229F37";
assert_request(&client, endpoint.join(nora_primary)?, StatusCode::OK)?;
let too_short = "379D09E0A09685C48312";
assert_request(&client, endpoint.join(too_short)?, StatusCode::NOT_FOUND)?;
let too_long = "379D09E0A09685C48312D46E9F4EE06E0E229F37ABC";
assert_request(&client, endpoint.join(too_long)?, StatusCode::NOT_FOUND)?;
let improbable = "1111111111111111111111111111111111111111";
assert_request(&client, endpoint.join(improbable)?, StatusCode::NOT_FOUND)?;
// XXX: Api docs say "MUST NOT be prefixed with 0x", but this succeeds
let with_0x = "0x379D09E0A09685C48312D46E9F4EE06E0E229F37";
assert_request(&client, endpoint.join(with_0x)?, StatusCode::OK)?;
let lowercase = "379d09e0a09685c48312d46e9f4ee06e0e229f37";
assert_request(&client, endpoint.join(lowercase)?, StatusCode::NOT_FOUND)?;
// XXX: query by subkey
Ok(())
}
#[test]
fn vks_by_keyid() -> Result<()> {
let client = Client::new();
let endpoint = Url::parse(SERVER_URL)?
.join("/vks/v1/by-keyid/")?;
let nora_primary = "9F4EE06E0E229F37";
assert_request(&client, endpoint.join(nora_primary)?, StatusCode::OK)?;
let too_short = "9F4EE06E0E229F";
assert_request(&client, endpoint.join(too_short)?, StatusCode::NOT_FOUND)?;
let too_long = "379D09E0A09685C48312D46E9F4EE06E0E229F37";
assert_request(&client, endpoint.join(too_long)?, StatusCode::NOT_FOUND)?;
let improbable = "1111111111111111";
assert_request(&client, endpoint.join(improbable)?, StatusCode::NOT_FOUND)?;
// XXX: Api docs say "MUST NOT be prefixed with 0x", but this succeeds
let with_0x = "0x9F4EE06E0E229F37";
assert_request(&client, endpoint.join(with_0x)?, StatusCode::OK)?;
let lowercase = "9f4ee06e0e229f37";
assert_request(&client, endpoint.join(lowercase)?, StatusCode::NOT_FOUND)?;
// XXX: query by subkey
Ok(())
}
#[test]
fn vks_by_email() -> Result<()> {
let client = Client::new();
let endpoint = Url::parse(SERVER_URL)?
.join("/vks/v1/by-email/")?;
let nora = "nora@sequoia-pgp.org";
assert_request(&client, endpoint.join(nora)?, StatusCode::OK)?;
Ok(())
}