use wiremock::MockServer;
pub fn make_session(server: &MockServer) -> jmap_base_client::Session {
let json = serde_json::json!({
"capabilities": {
"urn:ietf:params:jmap:core": {},
"urn:ietf:params:jmap:tasks": {}
},
"accounts": {
"A13824": {
"name": "john@example.com",
"isPersonal": true,
"isReadOnly": false,
"accountCapabilities": { "urn:ietf:params:jmap:tasks": {} }
}
},
"primaryAccounts": { "urn:ietf:params:jmap:tasks": "A13824" },
"username": "john@example.com",
"apiUrl": format!("{}/api/", server.uri()),
"downloadUrl": format!("{}/dl/{{accountId}}/{{blobId}}/{{name}}?accept={{type}}", server.uri()),
"uploadUrl": format!("{}/ul/{{accountId}}/", server.uri()),
"eventSourceUrl": format!("{}/sse/?types={{types}}&closeafter={{closeafter}}&ping={{ping}}", server.uri()),
"state": "s1"
});
serde_json::from_value(json)
.expect("make_session: session must deserialize from RFC 8620 §2.1 shape")
}
pub fn make_client(server: &MockServer) -> jmap_tasks_client::SessionClient {
use jmap_tasks_client::JmapTasksExt;
let client = jmap_base_client::JmapClient::new(
jmap_base_client::DefaultTransport,
jmap_base_client::NoneAuth,
&server.uri(),
jmap_base_client::ClientConfig::default(),
)
.expect("make_client: JmapClient construction must succeed");
client.with_tasks_session(make_session(server))
}