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