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);
 }