@@ -387,6 +387,82 @@ public function testHandleImipWithNoEvent(): void {
387387 $ this ->assertFalse ($ result );
388388 }
389389
390+ public function testHandleImipMissingOrganizerWithRecipient (): void {
391+ // construct mock user calendar
392+ $ userCalendar = $ this ->createMock (ITestCalendar::class);
393+ $ userCalendar ->expects (self ::once ())
394+ ->method ('isDeleted ' )
395+ ->willReturn (false );
396+ $ userCalendar ->expects (self ::once ())
397+ ->method ('isWritable ' )
398+ ->willReturn (true );
399+ $ userCalendar ->expects (self ::once ())
400+ ->method ('search ' )
401+ ->willReturn ([['uri ' => 'principals/user/attendee1/personal ' ]]);
402+ // construct mock calendar manager and returns
403+ /** @var Manager&MockObject $manager */
404+ $ manager = $ this ->getMockBuilder (Manager::class)
405+ ->setConstructorArgs ([
406+ $ this ->coordinator ,
407+ $ this ->container ,
408+ $ this ->logger ,
409+ $ this ->time ,
410+ $ this ->secureRandom ,
411+ $ this ->userManager ,
412+ $ this ->serverFactory ,
413+ $ this ->propertyMapper ,
414+ ])
415+ ->onlyMethods (['getCalendarsForPrincipal ' ])
416+ ->getMock ();
417+ $ manager ->expects (self ::once ())
418+ ->method ('getCalendarsForPrincipal ' )
419+ ->willReturn ([$ userCalendar ]);
420+ // construct parameters
421+ $ userId = 'attendee1 ' ;
422+ $ calendar = $ this ->vCalendar1a ;
423+ $ calendar ->add ('METHOD ' , 'REQUEST ' );
424+ $ calendar ->VEVENT ->remove ('ORGANIZER ' );
425+ // construct user calendar returns
426+ $ userCalendar ->expects (self ::once ())
427+ ->method ('handleIMipMessage ' );
428+ // test method
429+ $ result = $ manager ->handleIMip ($ userId , $ calendar ->serialize (), ['recipient ' => 'organizer@testing.com ' ]);
430+ }
431+
432+ public function testHandleImipMissingOrganizerNoRecipient (): void {
433+ // construct mock user calendar
434+ $ userCalendar = $ this ->createMock (ITestCalendar::class);
435+ // construct mock calendar manager and returns
436+ /** @var Manager&MockObject $manager */
437+ $ manager = $ this ->getMockBuilder (Manager::class)
438+ ->setConstructorArgs ([
439+ $ this ->coordinator ,
440+ $ this ->container ,
441+ $ this ->logger ,
442+ $ this ->time ,
443+ $ this ->secureRandom ,
444+ $ this ->userManager ,
445+ $ this ->serverFactory ,
446+ $ this ->propertyMapper ,
447+ ])
448+ ->onlyMethods (['getCalendarsForPrincipal ' ])
449+ ->getMock ();
450+ $ manager ->expects (self ::once ())
451+ ->method ('getCalendarsForPrincipal ' )
452+ ->willReturn ([$ userCalendar ]);
453+ // construct parameters
454+ $ userId = 'attendee1 ' ;
455+ $ calendar = $ this ->vCalendar1a ;
456+ $ calendar ->add ('METHOD ' , 'REQUEST ' );
457+ $ calendar ->VEVENT ->remove ('ORGANIZER ' );
458+ // Logger expects warning
459+ $ this ->logger ->expects ($ this ->once ())
460+ ->method ('warning ' )
461+ ->with ('iMip message event does not contain an organizer and no recipient was provided ' );
462+
463+ $ result = $ manager ->handleIMip ($ userId , $ calendar ->serialize (), []);
464+ }
465+
390466 public function testHandleImipWithNoUid (): void {
391467 // construct mock user calendar
392468 $ userCalendar = $ this ->createMock (ITestCalendar::class);
0 commit comments