mirror of
				https://github.com/elyby/accounts.git
				synced 2025-05-31 14:11:46 +05:30 
			
		
		
		
	Rework tests structure. Upgrade codeception to 2.5.3. Merge params configuration into app configuration.
This commit is contained in:
		
							
								
								
									
										26
									
								
								api/tests/functional/_steps/AuthserverSteps.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								api/tests/functional/_steps/AuthserverSteps.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| <?php | ||||
| declare(strict_types=1); | ||||
|  | ||||
| namespace api\tests\functional\_steps; | ||||
|  | ||||
| use Ramsey\Uuid\Uuid; | ||||
| use api\tests\_pages\AuthserverRoute; | ||||
| use api\tests\FunctionalTester; | ||||
|  | ||||
| class AuthserverSteps extends FunctionalTester { | ||||
|  | ||||
|     public function amAuthenticated(string $asUsername = 'admin', string $password = 'password_0'): array { | ||||
|         $route = new AuthserverRoute($this); | ||||
|         $clientToken = Uuid::uuid4()->toString(); | ||||
|         $route->authenticate([ | ||||
|             'username' => $asUsername, | ||||
|             'password' => $password, | ||||
|             'clientToken' => $clientToken, | ||||
|         ]); | ||||
|  | ||||
|         $accessToken = $this->grabDataFromResponseByJsonPath('$.accessToken')[0]; | ||||
|  | ||||
|         return [$accessToken, $clientToken]; | ||||
|     } | ||||
|  | ||||
| } | ||||
							
								
								
									
										67
									
								
								api/tests/functional/_steps/OauthSteps.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								api/tests/functional/_steps/OauthSteps.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| <?php | ||||
| namespace api\tests\functional\_steps; | ||||
|  | ||||
| use api\components\OAuth2\Storage\ScopeStorage as S; | ||||
| use api\tests\_pages\OauthRoute; | ||||
| use api\tests\FunctionalTester; | ||||
|  | ||||
| class OauthSteps extends FunctionalTester { | ||||
|  | ||||
|     public function getAuthCode(array $permissions = []) { | ||||
|         $this->amAuthenticated(); | ||||
|         $route = new OauthRoute($this); | ||||
|         $route->complete([ | ||||
|             'client_id' => 'ely', | ||||
|             'redirect_uri' => 'http://ely.by', | ||||
|             'response_type' => 'code', | ||||
|             'scope' => implode(',', $permissions), | ||||
|         ], ['accept' => true]); | ||||
|         $this->canSeeResponseJsonMatchesJsonPath('$.redirectUri'); | ||||
|         $response = json_decode($this->grabResponse(), true); | ||||
|         preg_match('/code=([\w-]+)/', $response['redirectUri'], $matches); | ||||
|  | ||||
|         return $matches[1]; | ||||
|     } | ||||
|  | ||||
|     public function getAccessToken(array $permissions = []) { | ||||
|         $authCode = $this->getAuthCode($permissions); | ||||
|         $response = $this->issueToken($authCode); | ||||
|  | ||||
|         return $response['access_token']; | ||||
|     } | ||||
|  | ||||
|     public function getRefreshToken(array $permissions = []) { | ||||
|         $authCode = $this->getAuthCode(array_merge([S::OFFLINE_ACCESS], $permissions)); | ||||
|         $response = $this->issueToken($authCode); | ||||
|  | ||||
|         return $response['refresh_token']; | ||||
|     } | ||||
|  | ||||
|     public function issueToken($authCode) { | ||||
|         $route = new OauthRoute($this); | ||||
|         $route->issueToken([ | ||||
|             'code' => $authCode, | ||||
|             'client_id' => 'ely', | ||||
|             'client_secret' => 'ZuM1vGchJz-9_UZ5HC3H3Z9Hg5PzdbkM', | ||||
|             'redirect_uri' => 'http://ely.by', | ||||
|             'grant_type' => 'authorization_code', | ||||
|         ]); | ||||
|  | ||||
|         return json_decode($this->grabResponse(), true); | ||||
|     } | ||||
|  | ||||
|     public function getAccessTokenByClientCredentialsGrant(array $permissions = [], $useTrusted = true) { | ||||
|         $route = new OauthRoute($this); | ||||
|         $route->issueToken([ | ||||
|             'client_id' => $useTrusted ? 'trusted-client' : 'default-client', | ||||
|             'client_secret' => $useTrusted ? 'tXBbyvMcyaOgHMOAXBpN2EC7uFoJAaL9' : 'AzWRy7ZjS1yRQUk2vRBDic8fprOKDB1W', | ||||
|             'grant_type' => 'client_credentials', | ||||
|             'scope' => implode(',', $permissions), | ||||
|         ]); | ||||
|  | ||||
|         $response = json_decode($this->grabResponse(), true); | ||||
|  | ||||
|         return $response['access_token']; | ||||
|     } | ||||
|  | ||||
| } | ||||
							
								
								
									
										67
									
								
								api/tests/functional/_steps/SessionServerSteps.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								api/tests/functional/_steps/SessionServerSteps.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| <?php | ||||
| namespace api\tests\functional\_steps; | ||||
|  | ||||
| use common\rbac\Permissions as P; | ||||
| use Faker\Provider\Uuid; | ||||
| use api\tests\_pages\SessionServerRoute; | ||||
| use api\tests\FunctionalTester; | ||||
|  | ||||
| class SessionServerSteps extends FunctionalTester { | ||||
|  | ||||
|     public function amJoined($byLegacy = false) { | ||||
|         $oauthSteps = new OauthSteps($this->scenario); | ||||
|         $accessToken = $oauthSteps->getAccessToken([P::MINECRAFT_SERVER_SESSION]); | ||||
|         $route = new SessionServerRoute($this); | ||||
|         $serverId = Uuid::uuid(); | ||||
|         $username = 'Admin'; | ||||
|  | ||||
|         if ($byLegacy) { | ||||
|             $route->joinLegacy([ | ||||
|                 'sessionId' => 'token:' . $accessToken . ':' . 'df936908-b2e1-544d-96f8-2977ec213022', | ||||
|                 'user' => $username, | ||||
|                 'serverId' => $serverId, | ||||
|             ]); | ||||
|  | ||||
|             $this->canSeeResponseEquals('OK'); | ||||
|         } else { | ||||
|             $route->join([ | ||||
|                 'accessToken' => $accessToken, | ||||
|                 'selectedProfile' => 'df936908-b2e1-544d-96f8-2977ec213022', | ||||
|                 'serverId' => $serverId, | ||||
|             ]); | ||||
|  | ||||
|             $this->canSeeResponseContainsJson(['id' => 'OK']); | ||||
|         } | ||||
|  | ||||
|         return [$username, $serverId]; | ||||
|     } | ||||
|  | ||||
|     public function canSeeValidTexturesResponse($expectedUsername, $expectedUuid) { | ||||
|         $this->seeResponseIsJson(); | ||||
|         $this->canSeeResponseContainsJson([ | ||||
|             'name' => $expectedUsername, | ||||
|             'id' => $expectedUuid, | ||||
|             'ely' => true, | ||||
|             'properties' => [ | ||||
|                 [ | ||||
|                     'name' => 'textures', | ||||
|                     'signature' => 'Cg==', | ||||
|                 ], | ||||
|             ], | ||||
|         ]); | ||||
|         $this->canSeeResponseJsonMatchesJsonPath('$.properties[0].value'); | ||||
|         $value = json_decode($this->grabResponse(), true)['properties'][0]['value']; | ||||
|         $decoded = json_decode(base64_decode($value), true); | ||||
|         $this->assertArrayHasKey('timestamp', $decoded); | ||||
|         $this->assertArrayHasKey('textures', $decoded); | ||||
|         $this->assertEquals($expectedUuid, $decoded['profileId']); | ||||
|         $this->assertEquals($expectedUsername, $decoded['profileName']); | ||||
|         $this->assertTrue($decoded['ely']); | ||||
|         $textures = $decoded['textures']; | ||||
|         $this->assertArrayHasKey('SKIN', $textures); | ||||
|         $skinTextures = $textures['SKIN']; | ||||
|         $this->assertArrayHasKey('url', $skinTextures); | ||||
|         $this->assertArrayHasKey('hash', $skinTextures); | ||||
|     } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user