Beispiel #1
0
 def _deleteCollection(self, name, status = 204):
   url = "%sfolder%s" % (self.resource, name)
   delete = webdavlib.WebDAVDELETE(url)
   self.client.execute(delete)
   self.assertEquals(delete.response["status"], status,
             "failure deleting collection"
             "(code = %d)" % delete.response["status"])
Beispiel #2
0
 def _deleteCard(self, client, filename, exp_status):
     url = "%s%s" % (self.resource, filename)
     delete = webdavlib.WebDAVDELETE(url)
     client.execute(delete)
     self.assertEquals(
         delete.response["status"], exp_status, "%s: card deletion:"
         " expected status code '%d' (received '%d')" %
         (filename, exp_status, delete.response["status"]))
Beispiel #3
0
 def setUp(self):
     delete = webdavlib.WebDAVDELETE(self.resource)
     self.client.execute(delete)
     mkcol = webdavlib.WebDAVMKCOL(self.resource)
     self.client.execute(mkcol)
     self.assertEquals(mkcol.response["status"], 201,
                       "preparation: failure creating collection"
                       "(code = %d)" % mkcol.response["status"])
Beispiel #4
0
 def setUp(self):
     self.resource = '/SOGo/dav/%s/Calendar/test-dav-put/' % username
     delete = webdavlib.WebDAVDELETE(self.resource)
     self.client.execute(delete)
     mkcol = webdavlib.WebDAVMKCOL(self.resource)
     self.client.execute(mkcol)
     self.assertEquals(
         mkcol.response["status"], 201,
         "preparation: failure creating collection"
         "(code = %d)" % mkcol.response["status"])
Beispiel #5
0
    def testSUAccess(self):
        """create, read, modify, delete for superuser"""
        event = event_template % {
            "class": "PUBLIC",
            "filename": self.filename,
            "organizer_line": "",
            "attendee_line": ""
        }

        # 1. Create
        put = webdavlib.HTTPPUT(self.url, event)
        put.content_type = "text/calendar; charset=utf-8"
        self.client.execute(put)
        self.assertEquals(
            put.response["status"], 201, "%s: event creation/modification:"
            " expected status code '201' (received '%d')" %
            (self.filename, put.response["status"]))

        # 2. Read
        readEvent = self._getEvent()
        self.assertEquals(readEvent, event,
                          "GET: returned event does not match")
        readEvent = self._propfindEvent()
        self.assertEquals(readEvent, event,
                          "PROPFIND: returned event does not match")
        readEvent = self._multigetEvent()
        self.assertEquals(readEvent, event,
                          "MULTIGET: returned event does not match")
        readEvent = self._webdavSyncEvent()
        self.assertEquals(readEvent, event,
                          "WEBDAV-SYNC: returned event does not match")

        # 3. Modify
        for eventClass in ["CONFIDENTIAL", "PRIVATE", "PUBLIC"]:
            event = event_template % {
                "class": eventClass,
                "filename": self.filename,
                "organizer_line": "",
                "attendee_line": ""
            }
            put = webdavlib.HTTPPUT(self.url, event)
            put.content_type = "text/calendar; charset=utf-8"
            self.client.execute(put)
            self.assertEquals(
                put.response["status"], 204, "%s: event modification failed"
                " expected status code '204' (received '%d')" %
                (self.filename, put.response["status"]))

        # 4. Delete
        delete = webdavlib.WebDAVDELETE(self.url)
        self.client.execute(delete)
        self.assertEquals(
            delete.response["status"], 204, "%s: event deletion failed"
            " expected status code '204' (received '%d')" %
            (self.filename, put.response["status"]))
Beispiel #6
0
 def setUp(self):
     delete = webdavlib.WebDAVDELETE(self.resource)
     self.client.execute(delete)
     mkcol = webdavlib.WebDAVMKCOL(self.resource)
     self.client.execute(mkcol)
     self.assertEquals(
         mkcol.response["status"], 201,
         "preparation: failure creating collection"
         "(code = %d)" % mkcol.response["status"])
     self.subscriber_client = webdavlib.WebDAVClient(
         hostname, port, subscriber_username, subscriber_password)
Beispiel #7
0
 def tearDown(self):
     delete = webdavlib.WebDAVDELETE(resource)
     self.client.execute(delete)
Beispiel #8
0
 def tearDown(self):
     delete = webdavlib.WebDAVDELETE(self.test_calendar)
     self.client.execute(delete)
Beispiel #9
0
 def _deleteEvent(self, client, filename, exp_status=204):
     delete = webdavlib.WebDAVDELETE(filename)
     client.execute(delete)
     if exp_status is not None:
         self.assertEquals(delete.response["status"], exp_status)
Beispiel #10
0
 def tearDown(self):
     if self.createdRsrc is not None:
         delete = webdavlib.WebDAVDELETE(self.createdRsrc)
         self.superuser_client.execute(delete)
Beispiel #11
0
    def testCalendarProxy2(self):
        """calendar-proxy as used from SOGo"""
        client = webdavlib.WebDAVClient(hostname, port, superuser,
                                        superuser_password)
        client.user_agent = "DAVKit/4.0.1 (730); CalendarStore/4.0.1 (973); iCal/4.0.1 (1374); Mac OS X/10.6.2 (10C540)"
        personal_resource = "/SOGo/dav/%s/Calendar/personal/" % username
        dav_utility = utilities.TestCalendarACLUtility(self, client,
                                                       personal_resource)
        dav_utility.setupRights(subscriber_username, {})
        dav_utility.subscribe([subscriber_username])

        other_resource = ("/SOGo/dav/%s/Calendar/test-calendar-proxy2/" %
                          username)
        delete = webdavlib.WebDAVDELETE(other_resource)
        client.execute(delete)
        mkcol = webdavlib.WebDAVMKCOL(other_resource)
        client.execute(mkcol)
        dav_utility = utilities.TestCalendarACLUtility(self, client,
                                                       other_resource)
        dav_utility.setupRights(subscriber_username, {})
        dav_utility.subscribe([subscriber_username])

        ## we test the rights mapping
        # write: write on 'personal', none on 'test-calendar-proxy2'
        self._testMapping(client, "write", personal_resource, {
            "c": True,
            "d": False,
            "pu": "v"
        })
        self._testMapping(client, "write", personal_resource, {
            "c": False,
            "d": True,
            "pu": "v"
        })
        self._testMapping(client, "write", personal_resource, {
            "c": False,
            "d": False,
            "pu": "m"
        })
        self._testMapping(client, "write", personal_resource, {
            "c": False,
            "d": False,
            "pu": "r"
        })

        # read: read on 'personal', none on 'test-calendar-proxy2'
        self._testMapping(client, "read", personal_resource, {
            "c": False,
            "d": False,
            "pu": "d"
        })
        self._testMapping(client, "read", personal_resource, {
            "c": False,
            "d": False,
            "pu": "v"
        })

        # write: read on 'personal', write on 'test-calendar-proxy2'
        self._testMapping(client, "write", other_resource, {
            "c": False,
            "d": False,
            "pu": "r"
        })

        ## we test the unsubscription
        # unsubscribed from personal, subscribed to 'test-calendar-proxy2'
        dav_utility = utilities.TestCalendarACLUtility(self, client,
                                                       personal_resource)
        dav_utility.unsubscribe([subscriber_username])
        membership = self._getMembership(subscriber_username)
        self.assertEquals(['/SOGo/dav/%s/calendar-proxy-write/' % username],
                          membership,
                          "'%s' must have write access to %s's calendars" %
                          (subscriber_username, username))
        # unsubscribed from personal, unsubscribed from 'test-calendar-proxy2'
        dav_utility = utilities.TestCalendarACLUtility(self, client,
                                                       other_resource)
        dav_utility.unsubscribe([subscriber_username])
        membership = self._getMembership(subscriber_username)
        self.assertEquals([], membership,
                          "'%s' must have no access to %s's calendars" %
                          (subscriber_username, username))

        delete = webdavlib.WebDAVDELETE(other_resource)
        client.execute(delete)