public function testAuthenticateReturnsSuccessfulResultForValidIdentityAndCredential() { $adapterChain = new AdapterChain([]); $identity = '*****@*****.**'; $credential = 'Password123'; /** @var ChainableAdapterInterface[]|\PHPUnit_Framework_MockObject_Stub[] $adapters */ $adapters = [$this->createChainableAdapterMock('foo'), $this->createChainableAdapterMock('bar'), $this->createChainableAdapterMock('baz')]; $failure = $this->getMockBuilder(Result::class)->disableOriginalConstructor()->getMock(); $failure->expects($this->once())->method('getCode')->will($this->returnValue(Result::FAILURE)); $success = $this->getMockBuilder(Result::class)->disableOriginalConstructor()->getMock(); $success->expects($this->once())->method('getCode')->will($this->returnValue(Result::SUCCESS)); $adapters[0]->expects($this->once())->method('setIdentity')->with($identity); $adapters[0]->expects($this->once())->method('setCredential')->with($credential); $adapters[0]->expects($this->once())->method('authenticate')->will($this->returnValue($failure)); $adapters[1]->expects($this->once())->method('setIdentity')->with($identity); $adapters[1]->expects($this->once())->method('setCredential')->with($credential); $adapters[1]->expects($this->once())->method('authenticate')->will($this->returnValue($success)); $adapterChain->setIdentity($identity); $adapterChain->setCredential($credential); $adapterChain->setAdapters($adapters); $result = $adapterChain->authenticate(); $this->assertSame($success, $result); }