[CalendarServer-changes] [13994] CalDAVTester/trunk

source_changes at macosforge.org source_changes at macosforge.org
Mon Sep 22 12:48:56 PDT 2014


Revision: 13994
          http://trac.calendarserver.org//changeset/13994
Author:   cdaboo at apple.com
Date:     2014-09-22 12:48:56 -0700 (Mon, 22 Sep 2014)
Log Message:
-----------
Add tests for group attendee reconciliation using the new control api to change group memberships during the tests.

Modified Paths:
--------------
    CalDAVTester/trunk/odsetup.py
    CalDAVTester/trunk/scripts/server/serverinfo-template.xml
    CalDAVTester/trunk/scripts/server/serverinfo.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/implicitgroup.xml

Added Paths:
-----------
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/1.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/2.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/3.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/4.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/1.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/2.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/3.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/4.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/5.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/1.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/2.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/3.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/4.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/5.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/1.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/2.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/3.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/4.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/5.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/6.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/7.ics
    CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/8.ics
    CalDAVTester/trunk/Resource/Common/POST/controladdmember.json
    CalDAVTester/trunk/Resource/Common/POST/controladdmember2.json
    CalDAVTester/trunk/Resource/Common/POST/controlgrouprefresh.json
    CalDAVTester/trunk/Resource/Common/POST/controlremovemember.json
    CalDAVTester/trunk/Resource/Common/POST/controlremovemember2.json

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/1.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/1.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/1.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,34 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051222T205953Z
+CREATED:20060101T150000Z
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+SUMMARY:event 1
+UID:$uid1:
+ORGANIZER;CN=$username1::$cuaddr1:
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
+ATTENDEE;CN=$groupname20:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$gcuaddrurn20:
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/2.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,34 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20:;SCHEDULE-STATUS=2.7:$gcuaddrurn20:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/3.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/3.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20::$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:1
+SUMMARY:event 1
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/4.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/emptyadd/4.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,36 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20:;SCHEDULE-STATUS=2.7:$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:1
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/1.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/1.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/1.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,34 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051222T205953Z
+CREATED:20060101T150000Z
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+SUMMARY:event 1
+UID:$uid1:
+ORGANIZER;CN=$username1::$cuaddr1:
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
+ATTENDEE;CN=$groupname20:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$gcuaddrurn20:
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/2.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20:;SCHEDULE-STATUS=2.7:$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/3.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/3.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,36 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20::$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/4.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/4.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,38 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20::$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:1
+STATUS:CANCELLED
+SUMMARY:event 1
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/5.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/existingremove/5.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20:;SCHEDULE-STATUS=2.7:$gcuaddrurn20:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:1
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/1.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/1.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/1.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,17 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VEVENT
+DTSTAMP:20051222T205953Z
+CREATED:20060101T150000Z
+DTSTART:$now.-5:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY
+SUMMARY:event 1
+UID:$uid1:
+ORGANIZER;CN=$username1::$cuaddr1:
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
+ATTENDEE;CN=$groupname20:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$gcuaddrurn20:
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/2.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,17 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART:$now.-5:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20:;SCHEDULE-STATUS=2.7:$gcuaddrurn20:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/3.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/3.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,20 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART:$now.2:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20::$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:2
+SUMMARY:event 1
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/4.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/4.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,19 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART:$now.2:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20:;SCHEDULE-STATUS=2.7:$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:2
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/5.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitemptyadd/5.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,18 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART:$now.-5:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY;UNTIL=$now.2:T095959Z
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20:;SCHEDULE-STATUS=2.7:$gcuaddrurn20:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:1
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/1.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/1.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/1.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,17 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VEVENT
+DTSTAMP:20051222T205953Z
+CREATED:20060101T150000Z
+DTSTART:$now.-5:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY
+SUMMARY:event 1
+UID:$uid1:
+ORGANIZER;CN=$username1::$cuaddr1:
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
+ATTENDEE;CN=$groupname20:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$gcuaddrurn20:
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/2.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,19 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART:$now.-5:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20:;SCHEDULE-STATUS=2.7:$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+ATTENDEE;CN=$username3:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email3:;MEMBER="$gcuaddrurn20:":$cuaddrurn3:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/3.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/3.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,20 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART:$now.-5:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20::$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+ATTENDEE;CN=$username3:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email3:;MEMBER="$gcuaddrurn20:":$cuaddrurn3:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/4.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/4.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,19 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART:$now.2:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20:;SCHEDULE-STATUS=2.7:$gcuaddrurn20:
+ATTENDEE;CN=$username3:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email3:;MEMBER="$gcuaddrurn20:":$cuaddrurn3:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:2
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/5.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/5.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,21 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART:$now.-5:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY;UNTIL=$now.2:T095959Z
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20:;SCHEDULE-STATUS=2.7:$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+ATTENDEE;CN=$username3:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email3:;MEMBER="$gcuaddrurn20:":$cuaddrurn3:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:$related:
+SEQUENCE:1
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/6.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/6.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/6.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,23 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART:$now.2:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20::$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+ATTENDEE;CN=$username3:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email3:;MEMBER="$gcuaddrurn20:":$cuaddrurn3:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:$related:
+SEQUENCE:2
+STATUS:CANCELLED
+SUMMARY:event 1
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/7.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/7.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/7.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,22 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uidsplit:
+DTSTART:$now.-5:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY;UNTIL=$now.2:T095959Z
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20::$gcuaddrurn20:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email2:;MEMBER="$gcuaddrurn20:":$cuaddrurn2:
+ATTENDEE;CN=$username3:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email3:;MEMBER="$gcuaddrurn20:":$cuaddrurn3:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:$related:
+SEQUENCE:1
+SUMMARY:event 1
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/8.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/8.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/implicit/groups/splitexistingremove/8.ics	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,21 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:$uid1:
+DTSTART:$now.2:T100000Z
+DURATION:PT1H
+RRULE:FREQ=WEEKLY
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$groupname20:;CUTYPE=X-SERVER-GROUP;EMAIL=$gemail20::$gcuaddrurn20:
+ATTENDEE;CN=$username3:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email3:;MEMBER="$gcuaddrurn20:":$cuaddrurn3:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:$related:
+SEQUENCE:2
+SUMMARY:event 1
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/Common/POST/controladdmember.json
===================================================================
--- CalDAVTester/trunk/Resource/Common/POST/controladdmember.json	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/POST/controladdmember.json	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,7 @@
+{
+	"action": "addgroupmembers",
+	"group": "$controlgroup:",
+	"members":[
+		"$controlmember:"
+	]
+}

Added: CalDAVTester/trunk/Resource/Common/POST/controladdmember2.json
===================================================================
--- CalDAVTester/trunk/Resource/Common/POST/controladdmember2.json	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/POST/controladdmember2.json	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,8 @@
+{
+	"action": "addgroupmembers",
+	"group": "$controlgroup:",
+	"members":[
+		"$controlmember1:",
+		"$controlmember2:"
+	]
+}

Added: CalDAVTester/trunk/Resource/Common/POST/controlgrouprefresh.json
===================================================================
--- CalDAVTester/trunk/Resource/Common/POST/controlgrouprefresh.json	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/POST/controlgrouprefresh.json	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,4 @@
+{
+	"action": "refreshgroups",
+	"wait": true
+}

Added: CalDAVTester/trunk/Resource/Common/POST/controlremovemember.json
===================================================================
--- CalDAVTester/trunk/Resource/Common/POST/controlremovemember.json	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/POST/controlremovemember.json	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,7 @@
+{
+	"action": "removegroupmembers",
+	"group": "$controlgroup:",
+	"members":[
+		"$controlmember:"
+	]
+}

Added: CalDAVTester/trunk/Resource/Common/POST/controlremovemember2.json
===================================================================
--- CalDAVTester/trunk/Resource/Common/POST/controlremovemember2.json	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/POST/controlremovemember2.json	2014-09-22 19:48:56 UTC (rev 13994)
@@ -0,0 +1,8 @@
+{
+	"action": "removegroupmembers",
+	"group": "$controlgroup:",
+	"members":[
+		"$controlmember1:",
+		"$controlmember2:"
+	]
+}

Modified: CalDAVTester/trunk/odsetup.py
===================================================================
--- CalDAVTester/trunk/odsetup.py	2014-09-22 19:46:49 UTC (rev 13993)
+++ CalDAVTester/trunk/odsetup.py	2014-09-22 19:48:56 UTC (rev 13994)
@@ -56,7 +56,7 @@
 base_dir = "../CalendarServer/"
 
 number_of_users = 40
-number_of_groups = 10
+number_of_groups = 40
 number_of_publics = 10
 number_of_resources = 20
 number_of_locations = 10

Modified: CalDAVTester/trunk/scripts/server/serverinfo-template.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-template.xml	2014-09-22 19:46:49 UTC (rev 13993)
+++ CalDAVTester/trunk/scripts/server/serverinfo-template.xml	2014-09-22 19:48:56 UTC (rev 13994)
@@ -723,7 +723,7 @@
 
 
 		<!--  Ten Group accounts -->
-		<repeat count="10">
+		<repeat count="40">
 			<substitution>
 				<key>$groupid%d:</key>
 				<value>group%02d</value>

Modified: CalDAVTester/trunk/scripts/server/serverinfo.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo.xml	2014-09-22 19:46:49 UTC (rev 13993)
+++ CalDAVTester/trunk/scripts/server/serverinfo.xml	2014-09-22 19:48:56 UTC (rev 13994)
@@ -723,7 +723,7 @@
 
 
 		<!--  Ten Group accounts -->
-		<repeat count="10">
+		<repeat count="40">
 			<substitution>
 				<key>$groupid%d:</key>
 				<value>group%02d</value>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/implicitgroup.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/implicitgroup.xml	2014-09-22 19:46:49 UTC (rev 13993)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/implicitgroup.xml	2014-09-22 19:48:56 UTC (rev 13994)
@@ -32,6 +32,14 @@
 			<method>GET</method>
 			<ruri>$calendarpath1:/</ruri>
 		</request>
+		<request user="$userid2:" pswd="$pswd2:">
+			<method>GET</method>
+			<ruri>$calendarpath2:/</ruri>
+		</request>
+		<request user="$userid3:" pswd="$pswd3:">
+			<method>GET</method>
+			<ruri>$calendarpath3:/</ruri>
+		</request>
 		<request user="$userid6:" pswd="$pswd6:">
 			<method>GET</method>
 			<ruri>$calendarpath6:/</ruri>
@@ -42,7 +50,7 @@
 		</request>
 	</start>
 	
-	<test-suite name='Invite group'>
+	<test-suite name='Invite group with existing membership'>
 		<test name='1'>
 			<description>Organizer invites Group Attendee</description>
 			<request>
@@ -139,6 +147,732 @@
 		</test>
 	</test-suite>
 	
+	<test-suite name='Invite empty group, then add member'>
+		<test name='1'>
+			<description>Organizer invites Group Attendee</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/implicit/groups/emptyadd/1.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>Organizer checks data</description>
+			<request>
+				<method>GET</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/emptyadd/2.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3'>
+			<description>Add group member</description>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controladdmember.json</filepath>
+					<substitute>
+						<name>$controlgroup:</name>
+						<value>$groupguid20:</value>
+					</substitute>
+					<substitute>
+						<name>$controlmember:</name>
+						<value>$userguid2:</value>
+					</substitute>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controlgrouprefresh.json</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>Attendee Inbox Item</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>WAITDELETEALL 1</method>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+		</test>
+		<test name='5'>
+			<description>Attendee has data</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>GETNEW</method>
+				<ruri>$calendarpath2:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/emptyadd/3.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='6'>
+			<description>Organizer checks data</description>
+			<request>
+				<method>GET</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/emptyadd/4.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='-1'>
+			<description>Clean-up</description>
+			<request user="$userid1:" pswd="$pswd1:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath1:/</ruri>
+				<ruri>$inboxpath1:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>WAITDELETEALL 1</method>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath2:/</ruri>
+			</request>
+		</test>
+	</test-suite>
+	
+	<test-suite name='Invite group, then remove member'>
+		<test name='1'>
+			<description>Organizer invites Group Attendee</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/implicit/groups/existingremove/1.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>Organizer checks data</description>
+			<request>
+				<method>GET</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/existingremove/2.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3'>
+			<description>Attendee Inbox Item</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>WAITDELETEALL 1</method>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+		</test>
+		<test name='4'>
+			<description>Attendee has data</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>GETNEW</method>
+				<ruri>$calendarpath2:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/existingremove/3.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='5'>
+			<description>Remove group member</description>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controlremovemember.json</filepath>
+					<substitute>
+						<name>$controlgroup:</name>
+						<value>$groupguid20:</value>
+					</substitute>
+					<substitute>
+						<name>$controlmember:</name>
+						<value>$userguid2:</value>
+					</substitute>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controlgrouprefresh.json</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='6'>
+			<description>Attendee Inbox Item</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>WAITDELETEALL 1</method>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+		</test>
+		<test name='7'>
+			<description>Attendee has data</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>GETNEW</method>
+				<ruri>$calendarpath2:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/existingremove/4.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='8'>
+			<description>Organizer checks data</description>
+			<request>
+				<method>GET</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/existingremove/5.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='-1'>
+			<description>Clean-up</description>
+			<request user="$userid1:" pswd="$pswd1:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath1:/</ruri>
+				<ruri>$inboxpath1:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath2:/</ruri>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='Recurring invite empty group, then add member to split'>
+		<test name='1'>
+			<description>Organizer invites Group Attendee</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/implicit/groups/splitemptyadd/1.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>Organizer checks data</description>
+			<request>
+				<method>GETNEW</method>
+				<ruri>$calendarpath1:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitemptyadd/2.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3'>
+			<description>Add group member</description>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controladdmember.json</filepath>
+					<substitute>
+						<name>$controlgroup:</name>
+						<value>$groupguid20:</value>
+					</substitute>
+					<substitute>
+						<name>$controlmember:</name>
+						<value>$userguid2:</value>
+					</substitute>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controlgrouprefresh.json</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>Attendee Inbox Item</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>WAITDELETEALL 1</method>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+		</test>
+		<test name='5'>
+			<description>Attendee has data</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>GETNEW</method>
+				<ruri>$calendarpath2:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitemptyadd/3.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RELATED-TO</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='6'>
+			<description>Organizer checks new split data</description>
+			<request>
+				<method>GET</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitemptyadd/4.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RELATED-TO</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='7'>
+			<description>Organizer checks old splitdata</description>
+			<request>
+				<method>GETNEW</method>
+				<ruri>$calendarpath1:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitemptyadd/5.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RELATED-TO</value>
+						<value>UID</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='-1'>
+			<description>Clean-up</description>
+			<request user="$userid1:" pswd="$pswd1:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath1:/</ruri>
+				<ruri>$inboxpath1:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>WAITDELETEALL 1</method>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath2:/</ruri>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controlremovemember.json</filepath>
+					<substitute>
+						<name>$controlgroup:</name>
+						<value>$groupguid20:</value>
+					</substitute>
+					<substitute>
+						<name>$controlmember:</name>
+						<value>$userguid2:</value>
+					</substitute>
+				</data>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controlgrouprefresh.json</filepath>
+				</data>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='Recurring invite two members group, then remove member to split' only='yes'>
+		<test name='1'>
+			<description>Add group members</description>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controladdmember2.json</filepath>
+					<substitute>
+						<name>$controlgroup:</name>
+						<value>$groupguid20:</value>
+					</substitute>
+					<substitute>
+						<name>$controlmember1:</name>
+						<value>$userguid2:</value>
+					</substitute>
+					<substitute>
+						<name>$controlmember2:</name>
+						<value>$userguid3:</value>
+					</substitute>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controlgrouprefresh.json</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>Organizer invites Group Attendee</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/implicit/groups/splitexistingremove/1.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='3'>
+			<description>Organizer checks data</description>
+			<request>
+				<method>GETNEW</method>
+				<ruri>$calendarpath1:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitexistingremove/2.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>Attendee Inbox Item</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>WAITDELETEALL 1</method>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+		</test>
+		<test name='5'>
+			<description>Attendee has data</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>GETNEW</method>
+				<ruri>$calendarpath2:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitexistingremove/3.ics</value>
+					</arg>
+				</verify>
+				<graburi>$href2:</graburi>
+			</request>
+		</test>
+		<test name='6'>
+			<description>Attendee Inbox Item</description>
+			<request user="$userid3:" pswd="$pswd3:">
+				<method>WAITDELETEALL 1</method>
+				<ruri>$inboxpath3:/</ruri>
+			</request>
+		</test>
+		<test name='7'>
+			<description>Attendee has data</description>
+			<request user="$userid3:" pswd="$pswd3:">
+				<method>GETNEW</method>
+				<ruri>$calendarpath3:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitexistingremove/3.ics</value>
+					</arg>
+				</verify>
+				<graburi>$href3:</graburi>
+			</request>
+		</test>
+		<test name='8'>
+			<description>Remove group member</description>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controlremovemember.json</filepath>
+					<substitute>
+						<name>$controlgroup:</name>
+						<value>$groupguid20:</value>
+					</substitute>
+					<substitute>
+						<name>$controlmember:</name>
+						<value>$userguid2:</value>
+					</substitute>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controlgrouprefresh.json</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='9'>
+			<description>Attendee Inbox Item</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>WAITDELETEALL 1</method>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+		</test>
+		<test name='10'>
+			<description>Organizer checks data</description>
+			<request>
+				<method>GET</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitexistingremove/4.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RELATED-TO</value>
+					</arg>
+				</verify>
+				<grabcalproperty>
+					<name>VEVENT/RELATED-TO</name>
+					<variable>$related:</variable>
+				</grabcalproperty>
+			</request>
+		</test>
+		<test name='11'>
+			<description>Organizer checks split data</description>
+			<request>
+				<method>GETNEW</method>
+				<ruri>$calendarpath1:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitexistingremove/5.ics</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>RELATED-TO</value>
+						<value>UID</value>
+					</arg>
+				</verify>
+				<grabcalproperty>
+					<name>VEVENT/UID</name>
+					<variable>$uidsplit:</variable>
+				</grabcalproperty>
+			</request>
+		</test>
+		<test name='12'>
+			<description>Attendee has data</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>GET</method>
+				<ruri>$href2:</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitexistingremove/6.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='13'>
+			<description>Attendee has split data</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>GETOTHER</method>
+				<ruri>$href2:</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitexistingremove/7.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='14'>
+			<description>Attendee Inbox Item</description>
+			<request user="$userid3:" pswd="$pswd3:">
+				<method>WAITDELETEALL 1</method>
+				<ruri>$inboxpath3:/</ruri>
+			</request>
+		</test>
+		<test name='15'>
+			<description>Attendee has data</description>
+			<request user="$userid3:" pswd="$pswd3:">
+				<method>GET</method>
+				<ruri>$href3:</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitexistingremove/8.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='16'>
+			<description>Attendee has split data</description>
+			<request user="$userid3:" pswd="$pswd3:">
+				<method>GETOTHER</method>
+				<ruri>$href3:</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/implicit/groups/splitexistingremove/7.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='-1'>
+			<description>Clean-up</description>
+			<request user="$userid1:" pswd="$pswd1:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath1:/</ruri>
+				<ruri>$inboxpath1:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>WAITDELETEALL 1</method>
+				<ruri>$inboxpath2:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath2:/</ruri>
+			</request>
+			<request user="$userid3:" pswd="$pswd3:">
+				<method>WAITDELETEALL 2</method>
+				<ruri>$inboxpath3:/</ruri>
+			</request>
+			<request user="$userid3:" pswd="$pswd3:">
+				<method>DELETEALL</method>
+				<ruri>$calendarpath3:/</ruri>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controlremovemember2.json</filepath>
+					<substitute>
+						<name>$controlgroup:</name>
+						<value>$groupguid20:</value>
+					</substitute>
+					<substitute>
+						<name>$controlmember1:</name>
+						<value>$userguid2:</value>
+					</substitute>
+					<substitute>
+						<name>$controlmember2:</name>
+						<value>$userguid3:</value>
+					</substitute>
+				</data>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>POST</method>
+				<ruri>/control</ruri>
+				<data>
+					<content-type>application/json; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/controlgrouprefresh.json</filepath>
+				</data>
+			</request>
+		</test>
+	</test-suite>
+
 	<end/>
 	
 </caldavtest>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140922/fc1662bf/attachment-0001.html>


More information about the calendarserver-changes mailing list