|
|
@@ -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'); |