events: Add a test for encrypted media sources being preferred
This commit is contained in:
parent
0a53fdb391
commit
8afc3a1100
@ -253,3 +253,66 @@ impl From<JsonWebKeyInit> for JsonWebKey {
|
|||||||
Self { kty, key_ops, alg, k, ext }
|
Self { kty, key_ops, alg, k, ext }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use std::collections::BTreeMap;
|
||||||
|
|
||||||
|
use matches::assert_matches;
|
||||||
|
use serde::Deserialize;
|
||||||
|
use serde_json::{from_value as from_json_value, json};
|
||||||
|
|
||||||
|
use crate::serde::Base64;
|
||||||
|
|
||||||
|
use super::{EncryptedFile, JsonWebKey, MediaSource};
|
||||||
|
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
struct MsgWithAttachment {
|
||||||
|
#[allow(dead_code)]
|
||||||
|
body: String,
|
||||||
|
#[serde(flatten)]
|
||||||
|
source: MediaSource,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn dummy_jwt() -> JsonWebKey {
|
||||||
|
JsonWebKey {
|
||||||
|
kty: "oct".to_owned(),
|
||||||
|
key_ops: vec!["encrypt".to_owned(), "decrypt".to_owned()],
|
||||||
|
alg: "A256CTR".to_owned(),
|
||||||
|
k: Base64::new(vec![0; 64]),
|
||||||
|
ext: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn encrypted_file() -> EncryptedFile {
|
||||||
|
EncryptedFile {
|
||||||
|
url: "mxc://localhost/encrypted_file".into(),
|
||||||
|
key: dummy_jwt(),
|
||||||
|
iv: Base64::new(vec![0; 64]),
|
||||||
|
hashes: BTreeMap::new(),
|
||||||
|
v: "v2".to_owned(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn prefer_encrypted_attachment_over_plain() {
|
||||||
|
let msg: MsgWithAttachment = from_json_value(json!({
|
||||||
|
"body": "",
|
||||||
|
"url": "mxc://localhost/file",
|
||||||
|
"file": encrypted_file(),
|
||||||
|
}))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
assert_matches!(msg.source, MediaSource::Encrypted(_));
|
||||||
|
|
||||||
|
// As above, but with the file field before the url field
|
||||||
|
let msg: MsgWithAttachment = from_json_value(json!({
|
||||||
|
"body": "",
|
||||||
|
"file": encrypted_file(),
|
||||||
|
"url": "mxc://localhost/file",
|
||||||
|
}))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
assert_matches!(msg.source, MediaSource::Encrypted(_));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user