| Conditions | 1 |
| Paths | 1 |
| Total Lines | 78 |
| Code Lines | 45 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 64 | public function testMultiAccess() |
||
| 65 | { |
||
| 66 | $userName = 'testUsername'; |
||
| 67 | |||
| 68 | /** |
||
| 69 | * First is Auth start and second once validated |
||
| 70 | * @var PreAuthenticatedToken $authenticated |
||
| 71 | * @var PreAuthenticatedToken $token |
||
| 72 | */ |
||
| 73 | |||
| 74 | $multiStrategy = new MultiStrategy(); |
||
| 75 | $multiStrategy->addStrategy($this->getStrategyByName('header')); |
||
| 76 | $multiStrategy->addStrategy($this->getStrategyByName('cookie')); |
||
| 77 | $multiStrategy->addStrategy($this->getStrategyByName('subnet')); |
||
| 78 | |||
| 79 | $authenticator = new SecurityAuthenticator( |
||
| 80 | true, |
||
| 81 | false, |
||
| 82 | true, |
||
| 83 | $this->userProvider, |
||
| 84 | $multiStrategy, |
||
| 85 | $this->logger |
||
| 86 | ); |
||
| 87 | |||
| 88 | // Test Header |
||
| 89 | $request = new Request(); |
||
| 90 | $request->headers->set('x-rest-token', $userName); |
||
| 91 | |||
| 92 | $token = $authenticator->createToken($request, 'test-key'); |
||
| 93 | $authenticated = $authenticator->authenticateToken($token, $this->userProvider, 'test-key'); |
||
| 94 | |||
| 95 | $roles = $this->rolesToArray($authenticated->getRoles()); |
||
| 96 | // Getting the dummy user and not the real Document User. |
||
| 97 | $user = $authenticated->getUser()->getUser(); |
||
| 98 | $this->assertEquals([SecurityUser::ROLE_CONSULTANT, SecurityUser::ROLE_USER], $roles, json_encode($roles)); |
||
| 99 | $this->assertEquals($userName, $user->username); |
||
| 100 | |||
| 101 | // With header, but unknown and allowing Anonymous |
||
| 102 | $request = new Request(); |
||
| 103 | $request->headers->set('x-rest-token', 'unknown'); |
||
| 104 | |||
| 105 | $token = $authenticator->createToken($request, 'test-key'); |
||
| 106 | $authenticated = $authenticator->authenticateToken($token, $this->userProvider, 'test-key'); |
||
| 107 | |||
| 108 | $roles = $this->rolesToArray($authenticated->getRoles()); |
||
| 109 | /** @var AnonymousUser $user */ |
||
| 110 | $user = $authenticated->getUser()->getUser(); |
||
| 111 | $this->assertEquals([SecurityUser::ROLE_ANONYMOUS, SecurityUser::ROLE_USER], $roles, json_encode($roles)); |
||
| 112 | $this->assertEquals('anonymous', $user->getUsername()); |
||
| 113 | |||
| 114 | // With cookie |
||
| 115 | $request = new Request(); |
||
| 116 | $request->cookies->set('graviton_user', $userName); |
||
| 117 | |||
| 118 | $token = $authenticator->createToken($request, 'test-key'); |
||
| 119 | $authenticated = $authenticator->authenticateToken($token, $this->userProvider, 'test-key'); |
||
| 120 | |||
| 121 | $roles = $this->rolesToArray($authenticated->getRoles()); |
||
| 122 | /** @var \stdClass $user */ |
||
| 123 | $user = $authenticated->getUser()->getUser(); |
||
| 124 | $this->assertEquals([SecurityUser::ROLE_CONSULTANT, SecurityUser::ROLE_USER], $roles, json_encode($roles)); |
||
| 125 | $this->assertEquals($userName, $user->username); |
||
| 126 | |||
| 127 | |||
| 128 | // Test Header for Subnet |
||
| 129 | $request = new Request([], [], [], [], [], ['REMOTE_ADDR' => '0.0.0.0']); |
||
| 130 | $request->headers->set('graviton_subnet', $userName); |
||
| 131 | |||
| 132 | $token = $authenticator->createToken($request, 'test-key'); |
||
| 133 | $authenticated = $authenticator->authenticateToken($token, $this->userProvider, 'test-key'); |
||
| 134 | |||
| 135 | $roles = $this->rolesToArray($authenticated->getRoles()); |
||
| 136 | // Getting the dummy user and not the real Document User. |
||
| 137 | /** @var SubnetUser $user */ |
||
| 138 | $user = $authenticated->getUser()->getUser(); |
||
| 139 | $this->assertEquals([SecurityUser::ROLE_SUBNET, SecurityUser::ROLE_USER], $roles, json_encode($roles)); |
||
| 140 | $this->assertEquals($userName, $user->getUsername()); |
||
| 141 | } |
||
| 142 | |||
| 269 |
This check looks for the generic type
arrayas a return type and suggests a more specific type. This type is inferred from the actual code.