requestMock = $this->createPartialMock( Http::class, ['getBasePath', 'isSecure', 'getHttpHost'] ); $this->requestMock->expects($this->atLeastOnce())->method('getBasePath')->willReturn('/'); $this->requestMock->expects($this->atLeastOnce()) ->method('getHttpHost') ->willReturn('init.host'); $this->objectManager = new ObjectManager($this); $this->validatorFactory = $this->getMockBuilder(ValidatorFactory::class) ->addMethods(['setInstanceName']) ->onlyMethods(['create']) ->disableOriginalConstructor() ->getMock(); $backendUrl = $this->createMock(Url::class); $backendUrl->expects($this->once())->method('getBaseUrl')->willReturn('/'); $this->backendUrlFactory = $this->createPartialMock(UrlFactory::class, ['create']); $this->backendUrlFactory->expects($this->any())->method('create')->willReturn($backendUrl); $this->filesystemMock = $this->createMock(Filesystem::class); $dirMock = $this->getMockForAbstractClass(WriteInterface::class); $this->filesystemMock->expects($this->any()) ->method('getDirectoryWrite') ->willReturn($dirMock); } public function testSetCookiePathNonDefault() { $mockFrontNameResolver = $this->getMockBuilder(FrontNameResolver::class) ->disableOriginalConstructor() ->getMock(); $mockFrontNameResolver->expects($this->once()) ->method('getFrontName') ->willReturn('backend'); $validatorMock = $this->getMockBuilder(ValidatorInterface::class) ->disableOriginalConstructor() ->getMockForAbstractClass(); $validatorMock->expects($this->any()) ->method('isValid') ->willReturn(true); $this->validatorFactory->expects($this->any()) ->method('setInstanceName') ->willReturnSelf(); $this->validatorFactory->expects($this->any()) ->method('create') ->willReturn($validatorMock); $adminConfig = $this->objectManager->getObject( AdminConfig::class, [ 'validatorFactory' => $this->validatorFactory, 'request' => $this->requestMock, 'frontNameResolver' => $mockFrontNameResolver, 'backendUrlFactory' => $this->backendUrlFactory, 'filesystem' => $this->filesystemMock, ] ); $this->assertEquals('/backend', $adminConfig->getCookiePath()); } /** * Test for setting session name and secure_cookie for admin * @dataProvider requestSecureDataProvider * @param $secureRequest */ public function testSetSessionSettingsByConstructor($secureRequest) { $sessionName = 'admin'; $this->requestMock->expects($this->exactly(2))->method('isSecure')->willReturn($secureRequest); $validatorMock = $this->getMockBuilder(ValidatorInterface::class) ->disableOriginalConstructor() ->getMockForAbstractClass(); $validatorMock->expects($this->any()) ->method('isValid') ->willReturn(true); $this->validatorFactory->expects($this->any()) ->method('setInstanceName') ->willReturnSelf(); $this->validatorFactory->expects($this->any()) ->method('create') ->willReturn($validatorMock); $adminConfig = $this->objectManager->getObject( AdminConfig::class, [ 'validatorFactory' => $this->validatorFactory, 'request' => $this->requestMock, 'sessionName' => $sessionName, 'backendUrlFactory' => $this->backendUrlFactory, 'filesystem' => $this->filesystemMock, ] ); $this->assertSame($sessionName, $adminConfig->getName()); $this->assertSame($secureRequest, $adminConfig->getCookieSecure()); } /** * @return array */ public static function requestSecureDataProvider() { return [[true], [false]]; } }