Add test for AWLs "Fix param-filter for multi-value parameters with TYPE=T1,T2 format" and update 2044 accordingly

2044 wants VCARDs with either TEL or EMAIL of TYPE=WORK. !20 correctly
splits the comma separated list of parameters so another two vCards
now correctly match (see also
https://gitlab.com/davical-project/awl/-/merge_requests/20#note_503183133)
This commit is contained in:
Florian Schlichting 2021-02-08 17:28:43 +08:00
parent fd35aacb85
commit 9d144cfe24
3 changed files with 140 additions and 0 deletions

View File

@ -85,6 +85,86 @@ EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref:karl@mustermann.de
TEL;TYPE=WORK;TYPE=pref:+49 30 1234567
TEL;TYPE=CELL:+49 172 1234567
END:VCARD
</VC:address-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/addressbook/andresenesq.vcf</href>
<propstat>
<prop>
<getetag>some valid etag</getetag>
<VC:address-data>BEGIN:VCARD
VERSION:4.0
FN:Sven Joseph Klaus Michael Andresen\, Esq.
EMAIL;TYPE=INTERNET:sven@andresen.de
EMAIL;TYPE=INTERNET:andresen@andresen.de
TEL;TYPE=WORK,VOICE:+49 89 11 11 111
TEL;TYPE=WORK,VOICE:+49 234 222 222
TEL;TYPE=WORK,FAX:+49 7373 73
TEL;TYPE=PAGER:+49 160 073 727 272
TEL;TYPE=PAGER:+49 2626 26
TEL;TYPE=CELL,VOICE:+49 39292 82
TEL;TYPE=CELL,VOICE:+49 7272 722
TEL;TYPE=PREF,VOICE:+49 12 34 567
TEL;TYPE=CAR,VOICE:+49 8292 38 383
TEL;TYPE=HOME,VOICE:+49 7327 272 727
TEL;TYPE=HOME,VOICE:+49 7272 7282
TEL;TYPE=HOME,FAX:+49 1010 1
TEL;TYPE=ISDN:8797
TEL;TYPE=ISDN:98732947234
TEL;TYPE=X-EVOLUTION-RADIO:+49 88 298 723 498 32
TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34
TEL;TYPE=X-EVOLUTION-TELEX:+49 2763 382 882 28 82
TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282
TEL;TYPE=MAIN:+49 6237 623 723 84 76
TEL;TYPE=MAIN:+49 9324 32 479 234234
TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723
TEL;X-EVOLUTION-CALLBACK:+49 7363 6363
TEL;TYPE=MODEM:+49 8383 73 723
TEL;TYPE=MODEM:+49 7363 6363
TEL;X-EVOLUTION-TTYTDD:+49 3377 37 373
TEL;X-EVOLUTION-TTYTDD:+49 8378 33
TEL;X-QUICKDIAL:13355
END:VCARD
</VC:address-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/addressbook/hans_dieter.vcf</href>
<propstat>
<prop>
<getetag>some valid etag</getetag>
<VC:address-data>BEGIN:VCARD
VERSION:4.0
FN:Hans Dieter Schmidt
EMAIL;TYPE=INTERNET:ich@hadi-schmidt.de
EMAIL;TYPE=INTERNET:hadi@telekom-d.de
TEL;TYPE=WORK,VOICE:+49 9823 9084
TEL;TYPE=WORK,VOICE:+49 234 234 234
TEL;TYPE=WORK,FAX:+49 7373 73
TEL;TYPE=PAGER:+49 2626 26
TEL;TYPE=CELL,VOICE:+49 7272 722
TEL;TYPE=PREF,VOICE:+49 12 34 567
TEL;TYPE=CAR,VOICE:+49 8292 38 383
TEL;TYPE=HOME,VOICE:+49 7327 272 727
TEL;TYPE=HOME,FAX:+49 40 812 387 21
TEL;TYPE=ISDN:4234234235
TEL;TYPE=ISDN:98732947234
TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 349 832
TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34
TEL;TYPE=X-EVOLUTION-TELEX:+49 38 288 228 82
TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282
TEL;TYPE=MAIN:+49 6237 623 723 84 76
TEL;TYPE=MAIN:+49 9324 32 479 234234
TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723
TEL;TYPE=MODEM:+49 8383 73 723
TEL;X-EVOLUTION-TTYTDD:+49 7373 73
TEL;X-EVOLUTION-TTYTDD:+49 8378 33
END:VCARD
</VC:address-data>
</prop>
<status>HTTP/1.1 200 OK</status>

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:" xmlns:VC="urn:ietf:params:xml:ns:carddav">
<response>
<href>/caldav.php/user5/addresses/sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36.vcf</href>
<propstat>
<prop>
<getetag>some valid etag</getetag>
<VC:address-data>BEGIN:VCARD
VERSION:4.0
PRODID:-//Sabre//Sabre VObject 4.3.3//EN
UID:sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36
FN:CardDavClient Test913043917
N:Test913043917;CardDavClient;;;
NICKNAME:Jonny1
EMAIL:maxmu@abcd.com
X-CUSTOMPROP;X-CUSTOMPARAM=HOME,WORK:foobar
REV:date
END:VCARD
</VC:address-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,36 @@
#
# Test matching one of a multi-value parameter
#
# (Jonny1 has X-CUSTOMPARAM=HOME,WORK but "HOME" is not just a part but
# an entire value ("equals") of a multi-value parameter
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user5/addresses/
HEADER=Accept: text/xml,application/xml
HEADER=Content-Type: text/xml
HEADER=Depth: 1
AUTH=user5:user5
# HEAD
BEGINDATA
<?xml version="1.0"?>
<CARDDAV:addressbook-query xmlns:DAV="DAV:" xmlns:CARDDAV="urn:ietf:params:xml:ns:carddav" xmlns:CS="http://calendarserver.org/ns/">
<DAV:prop>
<DAV:getetag/>
<CARDDAV:address-data/>
</DAV:prop>
<CARDDAV:filter test="anyof">
<CARDDAV:prop-filter name="X-CUSTOMPROP" test="anyof">
<CARDDAV:param-filter name="X-CUSTOMPARAM">
<CARDDAV:text-match negate-condition="no" collation="i;unicode-casemap" match-type="equals">HOME</CARDDAV:text-match>
</CARDDAV:param-filter>
</CARDDAV:prop-filter>
</CARDDAV:filter>
</CARDDAV:addressbook-query>
ENDDATA
REPLACE=_<getetag>"[0-9a-f]+"</getetag>_<getetag>some valid etag</getetag>_
REPLACE=/^REV:.*$/REV:date/