예제 #1
0
    /**
     * @dataProvider providesSharingData
     */
    public function testCalendarSharing($userCanRead, $userCanWrite, $groupCanRead, $groupCanWrite, $add)
    {
        $calendarId = $this->createTestCalendar();
        $books = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER);
        $this->assertEquals(1, count($books));
        $calendar = new Calendar($this->backend, $books[0]);
        $this->backend->updateShares($calendar, $add, []);
        $books = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER1);
        $this->assertEquals(1, count($books));
        $calendar = new Calendar($this->backend, $books[0]);
        $acl = $calendar->getACL();
        $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}read', $acl);
        $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}write', $acl);
        $this->assertAccess($userCanRead, self::UNIT_TEST_USER1, '{DAV:}read', $acl);
        $this->assertAccess($userCanWrite, self::UNIT_TEST_USER1, '{DAV:}write', $acl);
        $this->assertAccess($groupCanRead, self::UNIT_TEST_GROUP, '{DAV:}read', $acl);
        $this->assertAccess($groupCanWrite, self::UNIT_TEST_GROUP, '{DAV:}write', $acl);
        $this->assertEquals(self::UNIT_TEST_USER, $calendar->getOwner());
        // test acls on the child
        $uri = $this->getUniqueID('calobj');
        $calData = <<<'EOD'
BEGIN:VCALENDAR
VERSION:2.0
PRODID:ownCloud Calendar
BEGIN:VEVENT
CREATED;VALUE=DATE-TIME:20130910T125139Z
UID:47d15e3ec8
LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z
DTSTAMP;VALUE=DATE-TIME:20130910T125139Z
SUMMARY:Test Event
DTSTART;VALUE=DATE-TIME:20130912T130000Z
DTEND;VALUE=DATE-TIME:20130912T140000Z
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR
EOD;
        $this->backend->createCalendarObject($calendarId, $uri, $calData);
        /** @var IACL $child */
        $child = $calendar->getChild($uri);
        $acl = $child->getACL();
        $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}read', $acl);
        $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}write', $acl);
        $this->assertAccess($userCanRead, self::UNIT_TEST_USER1, '{DAV:}read', $acl);
        $this->assertAccess($userCanWrite, self::UNIT_TEST_USER1, '{DAV:}write', $acl);
        $this->assertAccess($groupCanRead, self::UNIT_TEST_GROUP, '{DAV:}read', $acl);
        $this->assertAccess($groupCanWrite, self::UNIT_TEST_GROUP, '{DAV:}write', $acl);
        // delete the address book
        $this->backend->deleteCalendar($books[0]['id']);
        $books = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER);
        $this->assertEquals(0, count($books));
    }
예제 #2
0
    /**
     * @dataProvider providesSharingData
     */
    public function testCalendarSharing($userCanRead, $userCanWrite, $groupCanRead, $groupCanWrite, $add)
    {
        /** @var IL10N | \PHPUnit_Framework_MockObject_MockObject $l10n */
        $l10n = $this->getMockBuilder('\\OCP\\IL10N')->disableOriginalConstructor()->getMock();
        $l10n->expects($this->any())->method('t')->will($this->returnCallback(function ($text, $parameters = array()) {
            return vsprintf($text, $parameters);
        }));
        $calendarId = $this->createTestCalendar();
        $books = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER);
        $this->assertEquals(1, count($books));
        $calendar = new Calendar($this->backend, $books[0], $l10n);
        $this->backend->updateShares($calendar, $add, []);
        $books = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER1);
        $this->assertEquals(1, count($books));
        $calendar = new Calendar($this->backend, $books[0], $l10n);
        $acl = $calendar->getACL();
        $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}read', $acl);
        $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}write', $acl);
        $this->assertAccess($userCanRead, self::UNIT_TEST_USER1, '{DAV:}read', $acl);
        $this->assertAccess($userCanWrite, self::UNIT_TEST_USER1, '{DAV:}write', $acl);
        $this->assertAccess($groupCanRead, self::UNIT_TEST_GROUP, '{DAV:}read', $acl);
        $this->assertAccess($groupCanWrite, self::UNIT_TEST_GROUP, '{DAV:}write', $acl);
        $this->assertEquals(self::UNIT_TEST_USER, $calendar->getOwner());
        // test acls on the child
        $uri = $this->getUniqueID('calobj');
        $calData = <<<'EOD'
BEGIN:VCALENDAR
VERSION:2.0
PRODID:ownCloud Calendar
BEGIN:VEVENT
CREATED;VALUE=DATE-TIME:20130910T125139Z
UID:47d15e3ec8
LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z
DTSTAMP;VALUE=DATE-TIME:20130910T125139Z
SUMMARY:Test Event
DTSTART;VALUE=DATE-TIME:20130912T130000Z
DTEND;VALUE=DATE-TIME:20130912T140000Z
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR
EOD;
        $this->backend->createCalendarObject($calendarId, $uri, $calData);
        /** @var IACL $child */
        $child = $calendar->getChild($uri);
        $acl = $child->getACL();
        $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}read', $acl);
        $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}write', $acl);
        $this->assertAccess($userCanRead, self::UNIT_TEST_USER1, '{DAV:}read', $acl);
        $this->assertAccess($userCanWrite, self::UNIT_TEST_USER1, '{DAV:}write', $acl);
        $this->assertAccess($groupCanRead, self::UNIT_TEST_GROUP, '{DAV:}read', $acl);
        $this->assertAccess($groupCanWrite, self::UNIT_TEST_GROUP, '{DAV:}write', $acl);
        // delete the address book
        $this->backend->deleteCalendar($books[0]['id']);
        $books = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER);
        $this->assertEquals(0, count($books));
    }