caldav: Add proppatch test

This commit is contained in:
Lennart
2025-12-12 23:56:29 +01:00
parent 0bdfb786ff
commit 120d45eb0a
3 changed files with 70 additions and 2 deletions

View File

@@ -58,7 +58,7 @@ async fn test_caldav_calendar(
let app = app.await;
let cal_store = cal_store.await;
let calendar_meta = CalendarMetadata {
let mut calendar_meta = CalendarMetadata {
displayname: Some("Calendar".to_string()),
description: Some("Description".to_string()),
color: Some("#00FF00".to_string()),
@@ -133,6 +133,46 @@ async fn test_caldav_calendar(
insta::assert_snapshot!(body);
});
let proppatch_request: &str = r#"
<propertyupdate xmlns="DAV:" xmlns:CAL="urn:ietf:params:xml:ns:caldav" xmlns:CARD="urn:ietf:params:xml:ns:carddav">
<set>
<prop>
<displayname>New Displayname</displayname>
<CAL:calendar-description>Test</CAL:calendar-description>
</prop>
</set>
<remove>
<prop>
<CAL:calendar-description />
</prop>
</remove>
</propertyupdate>
"#;
let mut request = Request::builder()
.method("PROPPATCH")
.uri(&url)
.body(Body::from(proppatch_request))
.unwrap();
request
.headers_mut()
.typed_insert(Authorization::basic("user", "pass"));
let response = app.clone().oneshot(request).await.unwrap();
assert_eq!(response.status(), StatusCode::MULTI_STATUS);
let body = response.extract_string().await;
insta::assert_snapshot!(body);
calendar_meta.displayname = Some("New Displayname".to_string());
calendar_meta.description = None;
assert_eq!(
cal_store
.get_calendar(principal, cal_id, false)
.await
.unwrap()
.meta,
calendar_meta
);
let mut request = Request::builder()
.method("DELETE")
.uri(&url)

View File

@@ -2,4 +2,27 @@
source: src/integration_tests/caldav/calendar.rs
expression: body
---
<?xml version="1.0" encoding="utf-8"?>
<multistatus xmlns="DAV:" xmlns:CAL="urn:ietf:params:xml:ns:caldav" xmlns:CARD="urn:ietf:params:xml:ns:carddav" xmlns:CS="http://calendarserver.org/ns/" xmlns:PUSH="https://bitfire.at/webdav-push">
<response xmlns="DAV:" xmlns:CAL="urn:ietf:params:xml:ns:caldav" xmlns:CARD="urn:ietf:params:xml:ns:carddav" xmlns:CS="http://calendarserver.org/ns/" xmlns:PUSH="https://bitfire.at/webdav-push">
<href>/caldav/principal/user/calendar</href>
<propstat>
<prop>
<displayname xmlns="DAV:"/>
<calendar-description xmlns="urn:ietf:params:xml:ns:caldav"/>
<calendar-description/>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
<propstat>
<prop>
</prop>
<status>HTTP/1.1 409 Conflict</status>
</propstat>
</response>
</multistatus>

View File

@@ -0,0 +1,5 @@
---
source: src/integration_tests/caldav/calendar.rs
expression: body
---