use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
#[serde(untagged)]
pub enum JobDetails {
NoOp(NoOpJobDetails),
SendActivityPub(SendActivityPubJobDetails),
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct NoOpJobDetails {
pub message: String,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
pub struct SendActivityPubJobDetails {
pub public_key_id: String,
pub private_key_pem: String,
pub target_uri: String,
pub content: String,
}
#[cfg(test)]
mod job_details_tests {
use super::*;
#[test]
fn roundtrip_noop_test() {
let noop = NoOpJobDetails {
message: "test".to_string(),
};
let details = JobDetails::NoOp(noop.clone());
let serialized = serde_json::to_string(&details).unwrap();
let deserialized = serde_json::from_str(&serialized).unwrap();
assert_eq!(noop, deserialized);
}
#[test]
fn roundtrip_send_activity_pub_test() {
let send_activity_pub = SendActivityPubJobDetails {
public_key_id: "blah".to_string(),
private_key_pem: "blah".to_string(),
target_uri: "http://foo".to_string(),
content: "foobar".to_string(),
};
let details = JobDetails::SendActivityPub(send_activity_pub.clone());
let serialized = serde_json::to_string(&details).unwrap();
let deserialized = serde_json::from_str(&serialized).unwrap();
assert_eq!(send_activity_pub, deserialized)
}
}