From da9133ae853e3885b678bb699240fb30c411652e Mon Sep 17 00:00:00 2001 From: Akshay Rana Date: Tue, 4 Oct 2022 23:48:15 +0530 Subject: [PATCH 1/3] fixed: wrong error message show on adding duplicate number to a user --- app/controllers/api/users.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 407bc1eaab..c95105b775 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -888,7 +888,7 @@ App::patch('/v1/users/:userId/phone') try { $user = $dbForProject->updateDocument('users', $user->getId(), $user); } catch (Duplicate $th) { - throw new Exception(Exception::USER_EMAIL_ALREADY_EXISTS); + throw new Exception(Exception::USER_PHONE_ALREADY_EXISTS); } $events->setParam('userId', $user->getId()); From 737a0ab6d7f22939424bb889f7b12239631cbe8d Mon Sep 17 00:00:00 2001 From: Akshay Rana Date: Wed, 5 Oct 2022 17:30:53 +0530 Subject: [PATCH 2/3] added: test case - update user phone number & user search by new phone number --- tests/e2e/Services/Users/UsersBase.php | 56 ++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/tests/e2e/Services/Users/UsersBase.php b/tests/e2e/Services/Users/UsersBase.php index 627f12d3d1..a12e278dc4 100644 --- a/tests/e2e/Services/Users/UsersBase.php +++ b/tests/e2e/Services/Users/UsersBase.php @@ -926,6 +926,62 @@ trait UsersBase return $data; } + /** + * @depends testGetUser + */ + public function testUpdateUserNumber(array $data): array + { + /** + * Test for SUCCESS + */ + $updatedNumber = "+910000000000"; //dummy number + $user = $this->client->call(Client::METHOD_PATCH, '/users/' . $data['userId'] . '/phone', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'number' => $updatedNumber, + ]); + + $this->assertEquals($user['headers']['status-code'], 200); + $this->assertEquals($user['body']['phone'], $updatedNumber); + + $user = $this->client->call(Client::METHOD_GET, '/users/' . $data['userId'], array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + $this->assertEquals($user['headers']['status-code'], 200); + $this->assertEquals($user['body']['phone'], $updatedNumber); + + return $data; + } + + /** + * @depends testUpdateUserNumber + */ + public function testUpdateUserNumberSearch($data): void + { + $id = $data['userId'] ?? ''; + $newNumber = "+910000000000"; //dummy number + + /** + * Test for SUCCESS + */ + $response = $this->client->call(Client::METHOD_GET, '/users', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'search' => $newNumber, + ]); + + $this->assertEquals($response['headers']['status-code'], 200); + $this->assertNotEmpty($response['body']); + $this->assertNotEmpty($response['body']['users']); + $this->assertCount(1, $response['body']['users']); + $this->assertEquals($response['body']['users'][0]['$id'], $id); + $this->assertEquals($response['body']['users'][0]['phone'], $newNumber); + } + /** * @depends testGetUser From 57bbf346aaf1a4be2840e9ec8512a5abbb540c30 Mon Sep 17 00:00:00 2001 From: Akshay Rana Date: Wed, 5 Oct 2022 23:40:11 +0530 Subject: [PATCH 3/3] added: test case - failure case to add same number to different user --- tests/e2e/Services/Users/UsersBase.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/e2e/Services/Users/UsersBase.php b/tests/e2e/Services/Users/UsersBase.php index a12e278dc4..ac3b116b32 100644 --- a/tests/e2e/Services/Users/UsersBase.php +++ b/tests/e2e/Services/Users/UsersBase.php @@ -953,6 +953,25 @@ trait UsersBase $this->assertEquals($user['headers']['status-code'], 200); $this->assertEquals($user['body']['phone'], $updatedNumber); + /** + * Test for FAILURE + */ + + $errorType = "user_phone_already_exists"; + $user1Id = "user1"; + $statusCodeForUserPhoneAlredyExists = 409; + + // adding same number ($updatedNumber) to different user i.e user1 + $response = $this->client->call(Client::METHOD_PATCH, '/users/' . $user1Id . '/phone', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'number' => $updatedNumber, + ]); + $this->assertEquals($response['headers']['status-code'], $statusCodeForUserPhoneAlredyExists); + $this->assertNotEmpty($response['body']); + $this->assertEquals($response['body']['type'], $errorType); + return $data; }