Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kesselberg <mail@danielkesselberg.de>2021-10-08 17:34:43 +0300
committerDaniel Kesselberg <mail@danielkesselberg.de>2021-10-08 19:12:37 +0300
commitfab887cb7c577a3e70219e686707bb52e0bc9bbe (patch)
tree05207504dc8e3ac1738265ba9170d6d8d0d875bd /apps/dav/tests
parent35be21dbb7d3f32405c9813694ad61c2393114d8 (diff)
Update attendence for external users
For local users it's possible to select their calendar via the principal url and first update their own attendance status. External users have no calendar event hence the recipient is the organizer. Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
Diffstat (limited to 'apps/dav/tests')
-rw-r--r--apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php97
1 files changed, 73 insertions, 24 deletions
diff --git a/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php b/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php
index e8b6af9fcea..cd3269d657c 100644
--- a/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php
+++ b/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php
@@ -27,6 +27,7 @@ declare(strict_types=1);
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+
namespace OCA\DAV\Tests\Unit\DAV\Controller;
use OCA\DAV\CalDAV\InvitationResponse\InvitationResponseServer;
@@ -77,7 +78,17 @@ class InvitationResponseControllerTest extends TestCase {
);
}
- public function testAccept() {
+ public function attendeeProvider(): array {
+ return [
+ 'local attendee' => [false],
+ 'external attendee' => [true]
+ ];
+ }
+
+ /**
+ * @dataProvider attendeeProvider
+ */
+ public function testAccept(bool $isExternalAttendee): void {
$this->buildQueryExpects('TOKEN123', [
'id' => 0,
'uid' => 'this-is-the-events-uid',
@@ -110,21 +121,26 @@ EOF;
$called = false;
$this->responseServer->expects($this->once())
->method('handleITipMessage')
- ->willReturnCallback(function (Message $iTipMessage) use (&$called, $expected) {
+ ->willReturnCallback(function (Message $iTipMessage) use (&$called, $isExternalAttendee, $expected) {
$called = true;
$this->assertEquals('this-is-the-events-uid', $iTipMessage->uid);
$this->assertEquals('VEVENT', $iTipMessage->component);
$this->assertEquals('REPLY', $iTipMessage->method);
$this->assertEquals(null, $iTipMessage->sequence);
$this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->sender);
- $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient);
+ if ($isExternalAttendee) {
+ $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient);
+ } else {
+ $this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->recipient);
+ }
$iTipMessage->scheduleStatus = '1.2;Message delivered locally';
$this->assertEquals($expected, $iTipMessage->message->serialize());
});
-
-
+ $this->responseServer->expects($this->once())
+ ->method('isExternalAttendee')
+ ->willReturn($isExternalAttendee);
$response = $this->controller->accept('TOKEN123');
$this->assertInstanceOf(TemplateResponse::class, $response);
@@ -133,7 +149,10 @@ EOF;
$this->assertTrue($called);
}
- public function testAcceptSequence() {
+ /**
+ * @dataProvider attendeeProvider
+ */
+ public function testAcceptSequence(bool $isExternalAttendee): void {
$this->buildQueryExpects('TOKEN123', [
'id' => 0,
'uid' => 'this-is-the-events-uid',
@@ -166,21 +185,26 @@ EOF;
$called = false;
$this->responseServer->expects($this->once())
->method('handleITipMessage')
- ->willReturnCallback(function (Message $iTipMessage) use (&$called, $expected) {
+ ->willReturnCallback(function (Message $iTipMessage) use (&$called, $isExternalAttendee, $expected) {
$called = true;
$this->assertEquals('this-is-the-events-uid', $iTipMessage->uid);
$this->assertEquals('VEVENT', $iTipMessage->component);
$this->assertEquals('REPLY', $iTipMessage->method);
$this->assertEquals(1337, $iTipMessage->sequence);
$this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->sender);
- $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient);
+ if ($isExternalAttendee) {
+ $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient);
+ } else {
+ $this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->recipient);
+ }
$iTipMessage->scheduleStatus = '1.2;Message delivered locally';
$this->assertEquals($expected, $iTipMessage->message->serialize());
});
-
-
+ $this->responseServer->expects($this->once())
+ ->method('isExternalAttendee')
+ ->willReturn($isExternalAttendee);
$response = $this->controller->accept('TOKEN123');
$this->assertInstanceOf(TemplateResponse::class, $response);
@@ -189,7 +213,10 @@ EOF;
$this->assertTrue($called);
}
- public function testAcceptRecurrenceId() {
+ /**
+ * @dataProvider attendeeProvider
+ */
+ public function testAcceptRecurrenceId(bool $isExternalAttendee): void {
$this->buildQueryExpects('TOKEN123', [
'id' => 0,
'uid' => 'this-is-the-events-uid',
@@ -223,21 +250,26 @@ EOF;
$called = false;
$this->responseServer->expects($this->once())
->method('handleITipMessage')
- ->willReturnCallback(function (Message $iTipMessage) use (&$called, $expected) {
+ ->willReturnCallback(function (Message $iTipMessage) use (&$called, $isExternalAttendee, $expected) {
$called = true;
$this->assertEquals('this-is-the-events-uid', $iTipMessage->uid);
$this->assertEquals('VEVENT', $iTipMessage->component);
$this->assertEquals('REPLY', $iTipMessage->method);
$this->assertEquals(0, $iTipMessage->sequence);
$this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->sender);
- $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient);
+ if ($isExternalAttendee) {
+ $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient);
+ } else {
+ $this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->recipient);
+ }
$iTipMessage->scheduleStatus = '1.2;Message delivered locally';
$this->assertEquals($expected, $iTipMessage->message->serialize());
});
-
-
+ $this->responseServer->expects($this->once())
+ ->method('isExternalAttendee')
+ ->willReturn($isExternalAttendee);
$response = $this->controller->accept('TOKEN123');
$this->assertInstanceOf(TemplateResponse::class, $response);
@@ -273,7 +305,10 @@ EOF;
$this->assertEquals([], $response->getParams());
}
- public function testDecline() {
+ /**
+ * @dataProvider attendeeProvider
+ */
+ public function testDecline(bool $isExternalAttendee): void {
$this->buildQueryExpects('TOKEN123', [
'id' => 0,
'uid' => 'this-is-the-events-uid',
@@ -306,21 +341,26 @@ EOF;
$called = false;
$this->responseServer->expects($this->once())
->method('handleITipMessage')
- ->willReturnCallback(function (Message $iTipMessage) use (&$called, $expected) {
+ ->willReturnCallback(function (Message $iTipMessage) use (&$called, $isExternalAttendee, $expected) {
$called = true;
$this->assertEquals('this-is-the-events-uid', $iTipMessage->uid);
$this->assertEquals('VEVENT', $iTipMessage->component);
$this->assertEquals('REPLY', $iTipMessage->method);
$this->assertEquals(null, $iTipMessage->sequence);
$this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->sender);
- $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient);
+ if ($isExternalAttendee) {
+ $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient);
+ } else {
+ $this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->recipient);
+ }
$iTipMessage->scheduleStatus = '1.2;Message delivered locally';
$this->assertEquals($expected, $iTipMessage->message->serialize());
});
-
-
+ $this->responseServer->expects($this->once())
+ ->method('isExternalAttendee')
+ ->willReturn($isExternalAttendee);
$response = $this->controller->decline('TOKEN123');
$this->assertInstanceOf(TemplateResponse::class, $response);
@@ -336,7 +376,10 @@ EOF;
$this->assertEquals(['token' => 'TOKEN123'], $response->getParams());
}
- public function testProcessMoreOptionsResult() {
+ /**
+ * @dataProvider attendeeProvider
+ */
+ public function testProcessMoreOptionsResult(bool $isExternalAttendee): void {
$this->request->expects($this->at(0))
->method('getParam')
->with('partStat')
@@ -384,20 +427,26 @@ EOF;
$called = false;
$this->responseServer->expects($this->once())
->method('handleITipMessage')
- ->willReturnCallback(function (Message $iTipMessage) use (&$called, $expected) {
+ ->willReturnCallback(function (Message $iTipMessage) use (&$called, $isExternalAttendee, $expected) {
$called = true;
$this->assertEquals('this-is-the-events-uid', $iTipMessage->uid);
$this->assertEquals('VEVENT', $iTipMessage->component);
$this->assertEquals('REPLY', $iTipMessage->method);
$this->assertEquals(null, $iTipMessage->sequence);
$this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->sender);
- $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient);
+ if ($isExternalAttendee) {
+ $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient);
+ } else {
+ $this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->recipient);
+ }
$iTipMessage->scheduleStatus = '1.2;Message delivered locally';
$this->assertEquals($expected, $iTipMessage->message->serialize());
});
-
+ $this->responseServer->expects($this->once())
+ ->method('isExternalAttendee')
+ ->willReturn($isExternalAttendee);
$response = $this->controller->processMoreOptionsResult('TOKEN123');