public function testGetUsernameFromRequests()
 {
     $mb = $this->getMockBuilder(AuthenticationRequest::class);
     for ($i = 0; $i < 3; $i++) {
         $req = $mb->getMockForAbstractClass();
         $req->expects($this->any())->method('getFieldInfo')->will($this->returnValue(['username' => ['type' => 'string']]));
         $reqs[] = $req;
     }
     $req = $mb->getMockForAbstractClass();
     $req->expects($this->any())->method('getFieldInfo')->will($this->returnValue([]));
     $req->username = '******';
     $reqs[] = $req;
     $this->assertNull(AuthenticationRequest::getUsernameFromRequests($reqs));
     $reqs[1]->username = '******';
     $this->assertSame('foo', AuthenticationRequest::getUsernameFromRequests($reqs));
     $reqs[0]->username = '******';
     $reqs[2]->username = '******';
     $this->assertSame('foo', AuthenticationRequest::getUsernameFromRequests($reqs));
     $reqs[1]->username = '******';
     try {
         AuthenticationRequest::getUsernameFromRequests($reqs);
         $this->fail('Expected exception not thrown');
     } catch (\UnexpectedValueException $ex) {
         $this->assertSame('Conflicting username fields: "bar" from ' . get_class($reqs[1]) . '::$username vs. "foo" from ' . get_class($reqs[0]) . '::$username', $ex->getMessage());
     }
 }