add some more propfind regression tests

This commit is contained in:
Lennart
2025-12-10 14:22:04 +01:00
parent a45e0b2efd
commit 61a8c32af4
15 changed files with 481 additions and 8 deletions

View File

@@ -13,6 +13,7 @@ rustical_store_sqlite = { workspace = true, features = ["test"] }
rstest.workspace = true
async-std.workspace = true
serde_json.workspace = true
insta.workspace = true
[dependencies]
axum.workspace = true

View File

@@ -0,0 +1,137 @@
---
source: crates/caldav/src/principal/tests.rs
assertion_line: 92
expression: response
---
ResponseElement {
href: "/caldav/principal/user/",
status: None,
propstat: [
Normal(
PropstatElement {
prop: PropTagWrapper(
[
Principal(
CalendarUserType(
Individual,
),
),
Principal(
CalendarUserAddressSet(
HrefElement {
href: "/caldav/principal/user/",
},
),
),
Principal(
PrincipalUrl(
HrefElement {
href: "/caldav/principal/user/",
},
),
),
Principal(
GroupMembership(
GroupMembership(
[
HrefElement {
href: "/caldav/principal/group/",
},
],
),
),
),
Principal(
GroupMemberSet(
GroupMemberSet(
[],
),
),
),
Principal(
AlternateUriSet,
),
Principal(
SupportedReportSet(
SupportedReportSet {
supported_report: [
ReportWrapper {
report: PrincipalMatch,
},
],
},
),
),
Principal(
CalendarHomeSet(
CalendarHomeSet(
[
HrefElement {
href: "/caldav/principal/group/",
},
HrefElement {
href: "/caldav/principal/user/",
},
],
),
),
),
Common(
Resourcetype(
Resourcetype(
[
ResourcetypeInner(
Some(
Namespace("DAV:"),
),
"collection",
),
ResourcetypeInner(
Some(
Namespace("DAV:"),
),
"principal",
),
],
),
),
),
Common(
Displayname(
Some(
"user",
),
),
),
Common(
CurrentUserPrincipal(
HrefElement {
href: "/caldav/principal/user/",
},
),
),
Common(
CurrentUserPrivilegeSet(
UserPrivilegeSet {
privileges: {
All,
},
},
),
),
Common(
Owner(
Some(
HrefElement {
href: "/caldav/principal/user/",
},
),
),
),
],
),
status: 200,
},
),
],
}

View File

@@ -0,0 +1,54 @@
---
source: crates/caldav/src/principal/tests.rs
assertion_line: 93
expression: response.serialize_to_string().unwrap()
---
<?xml version="1.0" encoding="utf-8"?>
<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/</href>
<propstat>
<prop>
<CAL:calendar-user-type>INDIVIDUAL</CAL:calendar-user-type>
<CAL:calendar-user-address-set>
<href>/caldav/principal/user/</href>
</CAL:calendar-user-address-set>
<principal-URL>
<href>/caldav/principal/user/</href>
</principal-URL>
<group-membership>
<href>/caldav/principal/group/</href>
</group-membership>
<group-member-set>
</group-member-set>
<alternate-URI-set/>
<supported-report-set>
<supported-report>
<report>
<principal-match/>
</report>
</supported-report>
</supported-report-set>
<CAL:calendar-home-set>
<href>/caldav/principal/group/</href>
<href>/caldav/principal/user/</href>
</CAL:calendar-home-set>
<resourcetype>
<collection/>
<principal/>
</resourcetype>
<displayname>user</displayname>
<current-user-principal>
<href>/caldav/principal/user/</href>
</current-user-principal>
<current-user-privilege-set>
<privilege>
<all/>
</privilege>
</current-user-privilege-set>
<owner>
<href>/caldav/principal/user/</href>
</owner>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>

View File

@@ -0,0 +1,9 @@
---
source: crates/caldav/src/principal/tests.rs
assertion_line: 66
expression: propfind
---
PropfindElement {
prop: Allprop,
include: None,
}

View File

@@ -1,5 +1,3 @@
use std::sync::Arc;
use crate::{
CalDavPrincipalUri,
principal::{PrincipalResource, PrincipalResourceService},
@@ -14,6 +12,7 @@ use rustical_store_sqlite::{
tests::{get_test_calendar_store, get_test_principal_store, get_test_subscription_store},
};
use rustical_xml::XmlSerializeRoot;
use std::sync::Arc;
#[rstest]
#[tokio::test]
@@ -64,6 +63,8 @@ async fn test_propfind() {
)
.unwrap();
insta::assert_debug_snapshot!(propfind);
let principal = Principal {
id: "user".to_string(),
displayname: None,
@@ -88,5 +89,6 @@ async fn test_propfind() {
)
.unwrap();
let _output = response.serialize_to_string().unwrap();
insta::assert_debug_snapshot!(response);
insta::assert_snapshot!(response.serialize_to_string().unwrap());
}