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