fakeLockerPlugin = new FakeLockerPlugin(); } public function testInitialize(): void { /** @var Server $server */ $server = $this->getMockBuilder(Server::class) ->disableOriginalConstructor() ->getMock(); $server ->expects($this->exactly(4)) ->method('on') ->withConsecutive( ['method:LOCK', [$this->fakeLockerPlugin, 'fakeLockProvider'], 1], ['method:UNLOCK', [$this->fakeLockerPlugin, 'fakeUnlockProvider'], 1], ['propFind', [$this->fakeLockerPlugin, 'propFind']], ['validateTokens', [$this->fakeLockerPlugin, 'validateTokens']], ); $this->fakeLockerPlugin->initialize($server); } public function testGetHTTPMethods(): void { $expected = [ 'LOCK', 'UNLOCK', ]; $this->assertSame($expected, $this->fakeLockerPlugin->getHTTPMethods('Test')); } public function testGetFeatures(): void { $expected = [ 2, ]; $this->assertSame($expected, $this->fakeLockerPlugin->getFeatures()); } public function testPropFind(): void { $propFind = $this->getMockBuilder(PropFind::class) ->disableOriginalConstructor() ->getMock(); $node = $this->getMockBuilder(INode::class) ->disableOriginalConstructor() ->getMock(); $propFind->expects($this->exactly(2)) ->method('handle') ->withConsecutive( ['{DAV:}supportedlock'], ['{DAV:}lockdiscovery'], ); $this->fakeLockerPlugin->propFind($propFind, $node); } public function tokenDataProvider() { return [ [ [ [ 'tokens' => [ [ 'token' => 'aToken', 'validToken' => false, ], [], [ 'token' => 'opaquelocktoken:asdf', 'validToken' => false, ] ], ] ], [ [ 'tokens' => [ [ 'token' => 'aToken', 'validToken' => false, ], [], [ 'token' => 'opaquelocktoken:asdf', 'validToken' => true, ] ], ] ], ] ]; } /** * @dataProvider tokenDataProvider * @param array $input * @param array $expected */ public function testValidateTokens(array $input, array $expected): void { $request = $this->getMockBuilder(RequestInterface::class) ->disableOriginalConstructor() ->getMock(); $this->fakeLockerPlugin->validateTokens($request, $input); $this->assertSame($expected, $input); } public function testFakeLockProvider(): void { $request = $this->getMockBuilder(RequestInterface::class) ->disableOriginalConstructor() ->getMock(); $response = new Response(); $server = $this->getMockBuilder(Server::class) ->getMock(); $this->fakeLockerPlugin->initialize($server); $request->expects($this->exactly(2)) ->method('getPath') ->willReturn('MyPath'); $this->assertSame(false, $this->fakeLockerPlugin->fakeLockProvider($request, $response)); $expectedXml = 'MyPathinfinitySecond-1800opaquelocktoken:fe4f7f2437b151fbcb4e9f5c8118c6b1'; $this->assertXmlStringEqualsXmlString($expectedXml, $response->getBody()); } public function testFakeUnlockProvider(): void { $request = $this->getMockBuilder(RequestInterface::class) ->disableOriginalConstructor() ->getMock(); $response = $this->getMockBuilder(ResponseInterface::class) ->disableOriginalConstructor() ->getMock(); $response->expects($this->once()) ->method('setStatus') ->with('204'); $response->expects($this->once()) ->method('setHeader') ->with('Content-Length', '0'); $this->assertSame(false, $this->fakeLockerPlugin->fakeUnlockProvider($request, $response)); } }