From 8c82f45764bf36fc4a4ca1d6edaebf24dbbaaa2f Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Fri, 14 Feb 2025 15:22:43 +0500 Subject: [PATCH] new: add minecraftservices' Username->UUID endpoint Signed-off-by: Octol1ttle --- api/config/routes.php | 2 + api/tests/_pages/MojangApiRoute.php | 5 -- .../functional/mojang/UsernameToUuidCest.php | 60 +++++++++++++------ 3 files changed, 43 insertions(+), 24 deletions(-) diff --git a/api/config/routes.php b/api/config/routes.php index 2280169..e9bc19a 100644 --- a/api/config/routes.php +++ b/api/config/routes.php @@ -48,6 +48,7 @@ return [ 'POST /mojang/profiles' => 'mojang/api/uuids-by-usernames', 'GET /mojang/services/minecraft/profile' => 'mojang/services/profile', 'POST /mojang/services/minecraft/profile/lookup/bulk/byname' => 'mojang/api/uuids-by-usernames', + 'GET /mojang/services/minecraft/profile/lookup/name/' => 'mojang/api/uuid-by-username', // authlib-injector '/authlib-injector/authserver/' => 'authserver/authentication/', @@ -56,4 +57,5 @@ return [ '/authlib-injector/sessionserver/session/minecraft/profile/' => 'session/session/profile', '/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/minecraftservices/minecraft/profile/lookup/name/' => 'mojang/api/uuid-by-username', ]; diff --git a/api/tests/_pages/MojangApiRoute.php b/api/tests/_pages/MojangApiRoute.php index f4e5b9b..b2c5851 100644 --- a/api/tests/_pages/MojangApiRoute.php +++ b/api/tests/_pages/MojangApiRoute.php @@ -3,11 +3,6 @@ namespace api\tests\_pages; 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 { $this->getActor()->sendGET("/api/mojang/profiles/{$uuid}/names"); } diff --git a/api/tests/functional/mojang/UsernameToUuidCest.php b/api/tests/functional/mojang/UsernameToUuidCest.php index 2a87f21..99aacb7 100644 --- a/api/tests/functional/mojang/UsernameToUuidCest.php +++ b/api/tests/functional/mojang/UsernameToUuidCest.php @@ -1,20 +1,24 @@ route = new MojangApiRoute($I); + public static function endpoints(): array { + return [ + ['/api/mojang/profiles'], + ['/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'); - $this->route->usernameToUuid('Admin'); + $I->sendGET("{$url[0]}/Admin"); $I->canSeeResponseCodeIs(200); $I->canSeeResponseIsJson(); $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'); - $this->route->usernameToUuid('klik201', 1474404142); + $I->sendGET("{$url[0]}/klik201", ['at' => 1474404142]); $I->canSeeResponseCodeIs(200); $I->canSeeResponseIsJson(); $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'); - $this->route->usernameToUuid('klik201', 1474404144); + $I->sendGET("{$url[0]}/klik201", ['at' => 1474404144]); $I->canSeeResponseCodeIs(204); $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'); - $this->route->usernameToUuid('klik201'); + $I->sendGET("{$url[0]}/klik201"); $I->canSeeResponseCodeIs(204); $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'); - $this->route->usernameToUuid('not-exists-user'); + $I->sendGET("{$url[0]}/not-exists-user"); $I->canSeeResponseCodeIs(204); $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'); - $this->route->usernameToUuid('DeletedAccount'); + $I->sendGET("{$url[0]}/DeletedAccount"); $I->canSeeResponseCodeIs(204); $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'); - $this->route->usernameToUuid(''); + $I->sendGET($url[0]); $I->canSeeResponseCodeIs(404); }