Merge pull request #46 from Octol1ttle/add-new-username-to-uuid-endpoint

update: add new username->UUID endpoint
This commit is contained in:
ErickSkrauch 2025-02-14 16:03:55 +01:00 committed by GitHub
commit 4a0fd68df2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 43 additions and 24 deletions

View File

@ -48,6 +48,7 @@ return [
'POST /mojang/profiles' => 'mojang/api/uuids-by-usernames', 'POST /mojang/profiles' => 'mojang/api/uuids-by-usernames',
'GET /mojang/services/minecraft/profile' => 'mojang/services/profile', 'GET /mojang/services/minecraft/profile' => 'mojang/services/profile',
'POST /mojang/services/minecraft/profile/lookup/bulk/byname' => 'mojang/api/uuids-by-usernames', 'POST /mojang/services/minecraft/profile/lookup/bulk/byname' => 'mojang/api/uuids-by-usernames',
'GET /mojang/services/minecraft/profile/lookup/name/<username>' => 'mojang/api/uuid-by-username',
// authlib-injector // authlib-injector
'/authlib-injector/authserver/<action>' => 'authserver/authentication/<action>', '/authlib-injector/authserver/<action>' => 'authserver/authentication/<action>',
@ -56,4 +57,5 @@ return [
'/authlib-injector/sessionserver/session/minecraft/profile/<uuid>' => 'session/session/profile', '/authlib-injector/sessionserver/session/minecraft/profile/<uuid>' => 'session/session/profile',
'/authlib-injector/api/profiles/minecraft' => 'mojang/api/uuids-by-usernames', '/authlib-injector/api/profiles/minecraft' => 'mojang/api/uuids-by-usernames',
'/authlib-injector/sessionserver/session/minecraft/profile/lookup/bulk/byname' => 'mojang/api/uuids-by-usernames', '/authlib-injector/sessionserver/session/minecraft/profile/lookup/bulk/byname' => 'mojang/api/uuids-by-usernames',
'/authlib-injector/minecraftservices/minecraft/profile/lookup/name/<username>' => 'mojang/api/uuid-by-username',
]; ];

View File

@ -3,11 +3,6 @@ namespace api\tests\_pages;
class MojangApiRoute extends BasePage { class MojangApiRoute extends BasePage {
public function usernameToUuid($username, $at = null): void {
$params = $at === null ? [] : ['at' => $at];
$this->getActor()->sendGET("/api/mojang/profiles/{$username}", $params);
}
public function usernamesByUuid($uuid): void { public function usernamesByUuid($uuid): void {
$this->getActor()->sendGET("/api/mojang/profiles/{$uuid}/names"); $this->getActor()->sendGET("/api/mojang/profiles/{$uuid}/names");
} }

View File

@ -1,20 +1,24 @@
<?php <?php
namespace api\tests\functional\mojang; namespace api\tests\functional\mojang;
use api\tests\_pages\MojangApiRoute;
use api\tests\FunctionalTester; use api\tests\FunctionalTester;
use Codeception\Example;
class UsernameToUuidCest { class UsernameToUuidCest {
private MojangApiRoute $route; public static function endpoints(): array {
return [
public function _before(FunctionalTester $I): void { ['/api/mojang/profiles'],
$this->route = new MojangApiRoute($I); ['/api/mojang/services/minecraft/profile/lookup/name'],
];
} }
public function getUuidByUsername(FunctionalTester $I): void { /**
* @dataProvider endpoints
*/
public function getUuidByUsername(FunctionalTester $I, Example $url): void {
$I->wantTo('get user uuid by his username'); $I->wantTo('get user uuid by his username');
$this->route->usernameToUuid('Admin'); $I->sendGET("{$url[0]}/Admin");
$I->canSeeResponseCodeIs(200); $I->canSeeResponseCodeIs(200);
$I->canSeeResponseIsJson(); $I->canSeeResponseIsJson();
$I->canSeeResponseContainsJson([ $I->canSeeResponseContainsJson([
@ -23,9 +27,12 @@ class UsernameToUuidCest {
]); ]);
} }
public function getUuidByUsernameAtMoment(FunctionalTester $I): void { /**
* @dataProvider endpoints
*/
public function getUuidByUsernameAtMoment(FunctionalTester $I, Example $url): void {
$I->wantTo('get user uuid by his username at fixed moment'); $I->wantTo('get user uuid by his username at fixed moment');
$this->route->usernameToUuid('klik201', 1474404142); $I->sendGET("{$url[0]}/klik201", ['at' => 1474404142]);
$I->canSeeResponseCodeIs(200); $I->canSeeResponseCodeIs(200);
$I->canSeeResponseIsJson(); $I->canSeeResponseIsJson();
$I->canSeeResponseContainsJson([ $I->canSeeResponseContainsJson([
@ -34,37 +41,52 @@ class UsernameToUuidCest {
]); ]);
} }
public function getUuidByUsernameAtWrongMoment(FunctionalTester $I): void { /**
* @dataProvider endpoints
*/
public function getUuidByUsernameAtWrongMoment(FunctionalTester $I, Example $url): void {
$I->wantTo('get 204 if passed once used, but changed username at moment, when it was changed'); $I->wantTo('get 204 if passed once used, but changed username at moment, when it was changed');
$this->route->usernameToUuid('klik201', 1474404144); $I->sendGET("{$url[0]}/klik201", ['at' => 1474404144]);
$I->canSeeResponseCodeIs(204); $I->canSeeResponseCodeIs(204);
$I->canSeeResponseEquals(''); $I->canSeeResponseEquals('');
} }
public function getUuidByUsernameWithoutMoment(FunctionalTester $I): void { /**
* @dataProvider endpoints
*/
public function getUuidByUsernameWithoutMoment(FunctionalTester $I, Example $url): void {
$I->wantTo('get 204 if username not busy and not passed valid time mark, when it was busy'); $I->wantTo('get 204 if username not busy and not passed valid time mark, when it was busy');
$this->route->usernameToUuid('klik201'); $I->sendGET("{$url[0]}/klik201");
$I->canSeeResponseCodeIs(204); $I->canSeeResponseCodeIs(204);
$I->canSeeResponseEquals(''); $I->canSeeResponseEquals('');
} }
public function getUuidByWrongUsername(FunctionalTester $I): void { /**
* @dataProvider endpoints
*/
public function getUuidByWrongUsername(FunctionalTester $I, Example $url): void {
$I->wantTo('get user uuid by some wrong username'); $I->wantTo('get user uuid by some wrong username');
$this->route->usernameToUuid('not-exists-user'); $I->sendGET("{$url[0]}/not-exists-user");
$I->canSeeResponseCodeIs(204); $I->canSeeResponseCodeIs(204);
$I->canSeeResponseEquals(''); $I->canSeeResponseEquals('');
} }
public function getUuidForDeletedAccount(FunctionalTester $I): void { /**
* @dataProvider endpoints
*/
public function getUuidForDeletedAccount(FunctionalTester $I, Example $url): void {
$I->wantTo('get uuid for account that marked for deleting'); $I->wantTo('get uuid for account that marked for deleting');
$this->route->usernameToUuid('DeletedAccount'); $I->sendGET("{$url[0]}/DeletedAccount");
$I->canSeeResponseCodeIs(204); $I->canSeeResponseCodeIs(204);
$I->canSeeResponseEquals(''); $I->canSeeResponseEquals('');
} }
public function nonPassedUsername(FunctionalTester $I): void { /**
* @dataProvider endpoints
*/
public function nonPassedUsername(FunctionalTester $I, Example $url): void {
$I->wantTo('get 404 on not passed username'); $I->wantTo('get 404 on not passed username');
$this->route->usernameToUuid(''); $I->sendGET($url[0]);
$I->canSeeResponseCodeIs(404); $I->canSeeResponseCodeIs(404);
} }