[CalendarServer-changes] [11797]
source_changes at macosforge.org
source_changes at macosforge.org
Tue Oct 8 16:02:09 PDT 2013
Revision: 11797
http://trac.calendarserver.org//changeset/11797
Author: gaya at apple.com
Date: 2013-10-08 16:02:09 -0700 (Tue, 08 Oct 2013)
Log Message:
-----------
sync report for shared groups cleaning - all tests now pass
Modified Paths:
--------------
CalendarServer/branches/users/gaya/sharedgroupfixes/txdav/carddav/datastore/sql.py
Removed Paths:
-------------
CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-sync-groups.xml
Deleted: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-sync-groups.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-sync-groups.xml 2013-10-08 00:31:49 UTC (rev 11796)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-sync-groups.xml 2013-10-08 23:02:09 UTC (rev 11797)
@@ -1,1461 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006-2013 Apple Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
-<caldavtest>
- <description>Test address book/group sharing and cached home sync tokens</description>
-
- <require-feature>
- <feature>carddav</feature>
- <feature>shared-addressbooks</feature>
- <feature>sync-report</feature>
- </require-feature>
-
- <start>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>$addressbookhome1:/</ruri>
- <ruri>$addressbookhome2:/</ruri>
- <ruri>$notificationpath1:/</ruri>
- <ruri>$notificationpath2:/</ruri>
- </request>
- </start>
-
-
- <!-- test suite below is similar to test suite in ../CalDAV/sharing-sync.xml -->
- <test-suite name='two shared groups' ignore='no'>
- <test name='0' ignore='no'>
- <description>clean up old data</description>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>$addressbookhome1:/</ruri>
- <ruri>$addressbookhome2:/</ruri>
- <ruri>$notificationpath1:/</ruri>
- <ruri>$notificationpath2:/</ruri>
- </request>
- <description>create users groups</description>
- <request>
- <method>PUT</method>
- <ruri>$addressbookpath1:/1.vcf</ruri>
- <data>
- <content-type>text/vcard; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/1.vcf</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$addressbookpath1:/2.vcf</ruri>
- <data>
- <content-type>text/vcard; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/2.vcf</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$addressbookpath1:/4.vcf</ruri>
- <data>
- <content-type>text/vcard; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/4.vcf</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$addressbookpath1:/5.vcf</ruri>
- <data>
- <content-type>text/vcard; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/5.vcf</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$addressbookpath1:/6.vcf</ruri>
- <data>
- <content-type>text/vcard; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/6.vcf</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$addressbookpath1:/7.vcf</ruri>
- <data>
- <content-type>text/vcard; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/7.vcf</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='1a' ignore='no'>
- <description>Initial sync tokens</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken1:</variable>
- </grabelement>
- </request>
- </test>
- <test name='1b' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken2:</variable>
- </grabelement>
- </request>
- </test>
- <test name='1c' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookpath1:/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken3:</variable>
- </grabelement>
- </request>
- </test>
- <test name='1d' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken4:</variable>
- </grabelement>
- </request>
- </test>
- <test name='1e' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken5:</variable>
- </grabelement>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>user1 POSTs invitation</description>
- <request print-response="no">
- <method>POST</method>
- <ruri>$addressbookpath1:/6.vcf</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/11.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>Check user2 notification collection and get invite uid</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>WAITCOUNT 1</method>
- <ruri>$notificationpath2:/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>GETNEW</method>
- <ruri>$notificationpath2:/</ruri>
- <grabelement>
- <name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
- <variable>$inviteuid:</variable>
- </grabelement>
- </request>
- </test>
- <test name='4'>
- <description>user2 replies ACCEPTED and deletes notification</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>POST</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions="yes">
- <content-type>application/xml; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/12.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>DELETE</method>
- <ruri>$notificationpath2:/$inviteuid:</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='5a' ignore='no'>
- <description>Updated tokens</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken1:</variable>
- </grabelement>
- </request>
- </test>
- <test name='5b' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken2:</variable>
- </grabelement>
- </request>
- </test>
- <test name='5c' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookpath1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken3:</variable>
- </grabelement>
- </request>
- </test>
- <test name='5d-' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5d' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- <value>$userguid1:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken4:</variable>
- </grabelement>
- </request>
- </test>
- <test name='5e-' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5e' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- <value>$userguid1:/</value>
- <value>$userguid1:/1.vcf</value>
- <value>$userguid1:/2.vcf</value>
- <value>$userguid1:/6.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken5:</variable>
- </grabelement>
- </request>
- </test>
- <test name='5f' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/$userguid1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.vcf</value>
- <value>2.vcf</value>
- <value>6.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken6:</variable>
- </grabelement>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>user1 POSTs invitation</description>
- <request print-response="no">
- <method>POST</method>
- <ruri>$addressbookpath1:/7.vcf</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/14.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='7'>
- <description>Check user2 notification collection and get invite uid</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>WAITCOUNT 1</method>
- <ruri>$notificationpath2:/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>GETNEW</method>
- <ruri>$notificationpath2:/</ruri>
- <grabelement>
- <name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
- <variable>$inviteuid:</variable>
- </grabelement>
- </request>
- </test>
- <test name='8'>
- <description>user2 replies ACCEPTED and deletes notification</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>POST</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions="yes">
- <content-type>application/xml; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/15.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>DELETE</method>
- <ruri>$notificationpath2:/$inviteuid:</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='9a' ignore='no'>
- <description>Updated tokens</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken1:</variable>
- </grabelement>
- </request>
- </test>
- <test name='9b' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken2:</variable>
- </grabelement>
- </request>
- </test>
- <test name='9c' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookpath1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken3:</variable>
- </grabelement>
- </request>
- </test>
- <test name='9d-' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9d' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- <value>$userguid1:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken4:</variable>
- </grabelement>
- </request>
- </test>
- <test name='9e-' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9e' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- <value>$userguid1:/</value>
- <value>$userguid1:/1.vcf</value>
- <value>$userguid1:/2.vcf</value>
- <value>$userguid1:/4.vcf</value>
- <value>$userguid1:/5.vcf</value>
- <value>$userguid1:/6.vcf</value>
- <value>$userguid1:/7.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken5:</variable>
- </grabelement>
- </request>
- </test>
- <test name='9f-' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/$userguid1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9f' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/$userguid1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.vcf</value>
- <value>2.vcf</value>
- <value>4.vcf</value>
- <value>5.vcf</value>
- <value>6.vcf</value>
- <value>7.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken6:</variable>
- </grabelement>
- </request>
- </test>
-
- <test name='10'>
- <description>Sharee creates vcard</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>PUT</method>
- <ruri>$addressbookhome2:/$userguid1:/3.vcf</ruri>
- <data>
- <content-type>text/vcard; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/3.vcf</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='11a' ignore='no'>
- <description>Updated tokens</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken1:</variable>
- </grabelement>
- </request>
- </test>
- <test name='11b' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- <value>$addressbook:/3.vcf</value>
- <value>$addressbook:/6.vcf</value>
- <value>$addressbook:/7.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken2:</variable>
- </grabelement>
- </request>
- </test>
- <test name='11c' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookpath1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>3.vcf</value>
- <value>6.vcf</value>
- <value>7.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken3:</variable>
- </grabelement>
- </request>
- </test>
- <test name='11d' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$userguid1:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken4:</variable>
- </grabelement>
- </request>
- </test>
- <test name='11e' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$userguid1:/</value>
- <value>$userguid1:/3.vcf</value>
- <value>$userguid1:/6.vcf</value>
- <value>$userguid1:/7.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken5:</variable>
- </grabelement>
- </request>
- </test>
- <test name='11f' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/$userguid1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>3.vcf</value>
- <value>6.vcf</value>
- <value>7.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken6:</variable>
- </grabelement>
- </request>
- </test>
- <test name='12'>
- <description>Sharer changes vcard</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$addressbookpath1:/3.vcf</ruri>
- <data>
- <content-type>text/vcard; charset=utf-8</content-type>
- <filepath>Resource/CardDAV/sharing/sync/group-two/3.vcf</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='13a' ignore='no'>
- <description>Updated tokens</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken1:</variable>
- </grabelement>
- </request>
- </test>
- <test name='13b' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- <value>$addressbook:/3.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken2:</variable>
- </grabelement>
- </request>
- </test>
- <test name='13c' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookpath1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>3.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken3:</variable>
- </grabelement>
- </request>
- </test>
- <test name='13d' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$userguid1:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken4:</variable>
- </grabelement>
- </request>
- </test>
- <test name='13e' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$userguid1:/</value>
- <value>$userguid1:/3.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken5:</variable>
- </grabelement>
- </request>
- </test>
- <test name='13f' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/$userguid1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>3.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken6:</variable>
- </grabelement>
- </request>
- </test>
- <test name='13'>
- <description>Sharee deletes vcard</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>DELETE</method>
- <ruri>$addressbookhome2:/$userguid1:/3.vcf</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='14a' ignore='no'>
- <description>Updated tokens</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken1:</variable>
- </grabelement>
- </request>
- </test>
- <test name='14b' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- <value>$addressbook:/6.vcf</value>
- <value>$addressbook:/7.vcf</value>
- </arg>
- <arg>
- <name>badhrefs</name>
- <value>$addressbook:/3.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken2:</variable>
- </grabelement>
- </request>
- </test>
- <test name='14c' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookpath1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>6.vcf</value>
- <value>7.vcf</value>
- </arg>
- <arg>
- <name>badhrefs</name>
- <value>3.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken3:</variable>
- </grabelement>
- </request>
- </test>
- <test name='14d' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$userguid1:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken4:</variable>
- </grabelement>
- </request>
- </test>
- <test name='14e' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$userguid1:/</value>
- <value>$userguid1:/6.vcf</value>
- <value>$userguid1:/7.vcf</value>
- </arg>
- <arg>
- <name>badhrefs</name>
- <value>$userguid1:/3.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken5:</variable>
- </grabelement>
- </request>
- </test>
- <test name='14f' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/$userguid1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>6.vcf</value>
- <value>7.vcf</value>
- </arg>
- <arg>
- <name>badhrefs</name>
- <value>3.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken6:</variable>
- </grabelement>
- </request>
- </test>
- <test name='15'>
- <description>Sharer unshares first group</description>
- <request print-response='no'>
- <method>POST</method>
- <ruri>$addressbookpath1:/6.vcf</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/POST/sharingremove2.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='16a' ignore='no'>
- <description>Updated tokens</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken1:</variable>
- </grabelement>
- </request>
- </test>
- <test name='16b' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken2:</variable>
- </grabelement>
- </request>
- </test>
- <test name='16c' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookpath1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken3:</variable>
- </grabelement>
- </request>
- </test>
- <test name='16d-' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='16d' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- <value>$userguid1:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken4:</variable>
- </grabelement>
- </request>
- </test>
- <test name='16e-' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token5-level-1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='16e' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- <value>$userguid1:/</value>
- <value>$userguid1:/4.vcf</value>
- <value>$userguid1:/5.vcf</value>
- <value>$userguid1:/7.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken5:</variable>
- </grabelement>
- </request>
- </test>
- <test name='16f-' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='16f' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/$userguid1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>4.vcf</value>
- <value>5.vcf</value>
- <value>7.vcf</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken6:</variable>
- </grabelement>
- </request>
- </test>
- <test name='17'>
- <description>Sharer unshares 2nd group</description>
- <request print-response='no'>
- <method>POST</method>
- <ruri>$addressbookpath1:/7.vcf</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/POST/sharingremove2.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='18a' ignore='no'>
- <description>Updated tokens</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken1:</variable>
- </grabelement>
- </request>
- </test>
- <test name='18b' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$addressbook:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken2:</variable>
- </grabelement>
- </request>
- </test>
- <test name='18c' ignore='no'>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookpath1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken3:</variable>
- </grabelement>
- </request>
- </test>
- <test name='18d' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>badhrefs</name>
- <value>$userguid1:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken4:</variable>
- </grabelement>
- </request>
- </test>
- <test name='18e' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>badhrefs</name>
- <value>$userguid1:/</value>
- </arg>
- </verify>
- <grabelement>
- <name>/{DAV:}multistatus/{DAV:}sync-token</name>
- <variable>$synctoken5:</variable>
- </grabelement>
- </request>
- </test>
- <test name='18f' ignore='no'>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$addressbookhome2:/$userguid1:/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>$addressbookhome1:/</ruri>
- <ruri>$addressbookhome2:/</ruri>
- <ruri>$addressbookhome3:/</ruri>
- <ruri>$addressbookhome4:/</ruri>
- <ruri>$notificationpath1:/</ruri>
- <ruri>$notificationpath2:/</ruri>
- <ruri>$notificationpath3:/</ruri>
- <ruri>$notificationpath4:/</ruri>
- </request>
- </end>
-
-</caldavtest>
Modified: CalendarServer/branches/users/gaya/sharedgroupfixes/txdav/carddav/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/sharedgroupfixes/txdav/carddav/datastore/sql.py 2013-10-08 00:31:49 UTC (rev 11796)
+++ CalendarServer/branches/users/gaya/sharedgroupfixes/txdav/carddav/datastore/sql.py 2013-10-08 23:02:09 UTC (rev 11797)
@@ -604,10 +604,11 @@
# add change for addressbook group
changed, deleted = yield super(AddressBook, self).sharedChildResourceNamesSinceRevision(revision, depth)
- ''' add the following for have addressbook group in sync report
- if changed or deleted and depth != "1":
- changed.add("%s/%s" % (path, self._groupForSharedAddressBookName(),))
- '''
+ #===================================================================
+ # # Add the following for have addressbook group in sync report
+ # if changed or deleted and depth != "1":
+ # changed.add("%s/%s" % (path, self._groupForSharedAddressBookName(),))
+ #===================================================================
returnValue((changed, deleted))
@@ -1465,11 +1466,13 @@
shareeView.viewerHome()._children.pop(self.shareeName(), None)
shareeView.viewerHome()._children.pop(shareeView._resourceID, None)
else:
- #update all bind revisions
+ #update revision in all remaining bind table rows for this address book
yield shareeView.notifyPropertyChanged()
for groupBindRow in groupBindRows:
groupObject = yield shareeView.objectResourceWithID(groupBindRow[2])
yield groupObject._initBindRevision()
+ shareeView._objects = {}
+ shareeView._objectNames = None
if bind.MESSAGE in columnMap:
shareeView._bindMessage = columnMap[bind.MESSAGE]
@@ -1491,7 +1494,7 @@
@inlineCallbacks
def shareWith(self, shareeHome, mode, status=None, message=None):
"""
- call super and set isShared = True
+ call super and set self.isShared True
"""
# Note: super always calls shareView._initSyncToken():
@@ -1534,10 +1537,12 @@
shareeHome._children.pop(shareeAddressBook._resourceID, None)
else:
yield shareeAddressBook.notifyPropertyChanged()
- #update all bind revisions
+ #update revision in all remaining bind table rows for this address book
for groupBindRow in groupBindRows:
groupObject = yield shareeAddressBook.objectResourceWithID(groupBindRow[2])
yield groupObject._initBindRevision()
+ shareeAddressBook._objects = {}
+ shareeAddressBook._objectNames = None
# Must send notification to ensure cache invalidation occurs
yield self.notifyPropertyChanged()
@@ -1640,7 +1645,7 @@
aboMembers = schema.ABO_MEMBERS
groupRows = yield Select([aboMembers.GROUP_ID, aboMembers.MEMBER_ID, aboMembers.REMOVED, aboMembers.REVISION],
From=aboMembers,
- Where=(aboMembers.MEMBER_ID == self._resourceID)
+ Where=aboMembers.MEMBER_ID == self._resourceID,
).on(self._txn)
# combine by groupID
@@ -2521,12 +2526,14 @@
shareeHome._children.pop(self.addressbook()._resourceID, None)
else:
shareeAddressBook.notifyPropertyChanged()
- #update all bind revisions
+ #update revision in all remaining bind table rows for this address book
for groupBindRow in groupBindRows:
groupObject = yield shareeAddressBook.objectResourceWithID(groupBindRow[2])
yield groupObject._initBindRevision()
if shareeAddressBook.fullyShared():
yield shareeAddressBook._initBindRevision()
+ shareeAddressBook._objects = {}
+ shareeAddressBook._objectNames = None
# Must send notification to ensure cache invalidation occurs
yield self.addressbook().notifyPropertyChanged()
@@ -2606,13 +2613,13 @@
else:
if status == _BIND_STATUS_ACCEPTED:
shareeView = yield shareeHome.objectWithShareUID(bindName)
- groupBindRows = yield AddressBookObject._acceptedBindForHomeIDAndAddressBookID.on(
- self._txn, homeID=shareeView.viewerHome()._resourceID, addressbookID=shareeView.addressbook()._resourceID
- )
- currentAcceptedBindCount = len(groupBindRows)
if not shareeView.addressbook().fullyShared():
- if currentAcceptedBindCount == 1:
+ groupBindRows = yield AddressBookObject._acceptedBindForHomeIDAndAddressBookID.on(
+ self._txn, homeID=shareeView.viewerHome()._resourceID, addressbookID=shareeView.addressbook()._resourceID
+ )
+ if len(groupBindRows) == 1:
yield shareeView.addressbook()._initSyncToken()
+ yield shareeView._initBindRevision()
queryCacher = self._txn._queryCacher
if queryCacher:
@@ -2639,11 +2646,11 @@
@inlineCallbacks
def updateShare(self, shareeView, mode=None, status=None, message=None):
"""
- Update share mode, status, and message for a home child shared with
- this (owned) L{CommonHomeChild}.
+ Update share mode, status, and message for a address book group with
+ this (owned) L{AddressBookObject}.
- @param shareeView: The sharee home child that shares this.
- @type shareeView: L{CommonHomeChild}
+ @param shareeView: The sharee addressbook group that shares this.
+ @type shareeView: L{AddressBookObject}
@param mode: The sharing mode; L{_BIND_MODE_READ} or
L{_BIND_MODE_WRITE} or None to not update
@@ -2708,7 +2715,7 @@
shareeView.viewerHome()._children.pop(self.addressbook().shareeName(), None)
shareeView.viewerHome()._children.pop(shareeView._resourceID, None)
else:
- # update all bind revisions
+ # update revision in all remaining bind table rows for this address book
yield shareeView.addressbook().notifyPropertyChanged()
for groupBindRow in groupBindRows:
if groupBindRow[2] != shareeView._resourceID:
@@ -2716,6 +2723,8 @@
yield groupObject._initBindRevision()
if shareeView.addressbook().fullyShared():
yield shareeView.addressbook()._initBindRevision()
+ shareeView.addressbook()._objects = {}
+ shareeView.addressbook()._objectNames = None
if bind.MESSAGE in columnMap:
shareeView._bindMessage = columnMap[bind.MESSAGE]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20131008/01c86b8c/attachment-0001.html>
More information about the calendarserver-changes
mailing list