appwrite/tests/e2e/Services/GraphQL/UsersTest.php

607 lines
21 KiB
PHP
Raw Normal View History

2022-06-30 09:26:46 +00:00
<?php
namespace Tests\E2E\Services\GraphQL;
use Tests\E2E\Client;
use Tests\E2E\Scopes\ProjectCustom;
use Tests\E2E\Scopes\Scope;
use Tests\E2E\Scopes\SideServer;
2023-01-16 09:25:40 +00:00
use Utopia\Database\Helpers\ID;
use Utopia\Database\Query;
2022-06-30 09:26:46 +00:00
2022-09-22 08:29:42 +00:00
class UsersTest extends Scope
2022-06-30 09:26:46 +00:00
{
use ProjectCustom;
use SideServer;
2022-09-22 08:29:42 +00:00
use Base;
2022-06-30 09:26:46 +00:00
private static array $cachedUser = [];
private static array $cachedUserTarget = [];
protected function setupUser(): array
2022-06-30 09:26:46 +00:00
{
$key = $this->getProject()['$id'];
2026-03-31 16:34:37 +00:00
if (!empty(self::$cachedUser[$key])) {
return self::$cachedUser[$key];
}
2022-06-30 09:26:46 +00:00
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::CREATE_USER);
2022-06-30 09:26:46 +00:00
$email = 'users.service@example.com';
$graphQLPayload = [
'query' => $query,
'variables' => [
2022-09-22 01:53:41 +00:00
'userId' => ID::unique(),
2022-06-30 09:26:46 +00:00
'email' => $email,
'password' => 'password',
'name' => 'Project User',
]
2022-06-30 09:26:46 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
$user = $user['body']['data']['usersCreate'];
$this->assertEquals('Project User', $user['name']);
$this->assertEquals($email, $user['email']);
2026-03-31 16:34:37 +00:00
self::$cachedUser[$key] = $user;
2022-06-30 09:26:46 +00:00
return $user;
}
protected function setupUserTarget(): array
2023-10-17 17:59:10 +00:00
{
$key = $this->getProject()['$id'];
2026-03-31 16:34:37 +00:00
if (!empty(self::$cachedUserTarget[$key])) {
return self::$cachedUserTarget[$key];
}
$user = $this->setupUser();
2023-10-17 17:59:10 +00:00
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::CREATE_MAILGUN_PROVIDER);
2023-10-17 17:59:10 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'providerId' => ID::unique(),
'name' => 'Mailgun1',
'apiKey' => 'api-key',
'domain' => 'domain',
2023-12-05 18:24:55 +00:00
'fromName' => 'sender name',
'fromEmail' => 'from@domain.com',
2023-10-17 17:59:10 +00:00
'isEuRegion' => false,
],
];
$provider = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$providerId = $provider['body']['data']['messagingCreateMailgunProvider']['_id'];
$this->assertEquals(200, $provider['headers']['status-code']);
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::CREATE_USER_TARGET);
2023-10-17 17:59:10 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'targetId' => ID::unique(),
'userId' => $user['_id'],
2023-11-14 12:44:07 +00:00
'providerType' => 'email',
2023-10-17 17:59:10 +00:00
'providerId' => $providerId,
2023-11-21 09:49:19 +00:00
'identifier' => 'random-email@mail.org',
2023-10-17 17:59:10 +00:00
]
];
$target = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertEquals(200, $target['headers']['status-code']);
2023-11-21 09:49:19 +00:00
$this->assertEquals('random-email@mail.org', $target['body']['data']['usersCreateTarget']['identifier']);
2023-10-17 17:59:10 +00:00
2026-03-31 16:34:37 +00:00
self::$cachedUserTarget[$key] = $target['body']['data']['usersCreateTarget'];
return self::$cachedUserTarget[$key];
}
public function testCreateUser(): void
{
$user = $this->setupUser();
$this->assertEquals('Project User', $user['name']);
}
public function testCreateUserTarget(): void
{
$target = $this->setupUserTarget();
$this->assertEquals('random-email@mail.org', $target['identifier']);
2023-10-17 17:59:10 +00:00
}
2022-06-30 09:26:46 +00:00
public function testGetUsers()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::GET_USERS);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
2022-09-22 06:54:58 +00:00
'queries' => [
2023-12-20 10:55:09 +00:00
Query::limit(100)->toString(),
Query::offset(0)->toString(),
2022-09-22 06:54:58 +00:00
],
]
2022-06-30 09:26:46 +00:00
];
$users = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($users['body']['data']);
$this->assertArrayNotHasKey('errors', $users['body']);
$this->assertIsArray($users['body']['data']['usersList']);
$this->assertGreaterThan(0, \count($users['body']['data']['usersList']));
}
public function testGetUser()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::GET_USER);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
]
2022-06-30 09:26:46 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
$this->assertIsArray($user['body']['data']['usersGet']);
2022-12-08 03:08:57 +00:00
$this->assertEquals($this->getUser()['$id'], $user['body']['data']['usersGet']['_id']);
2022-06-30 09:26:46 +00:00
}
public function testGetUserPreferences()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::GET_USER_PREFERENCES);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
]
2022-06-30 09:26:46 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
$this->assertIsArray($user['body']['data']['usersGetPrefs']);
}
public function testGetUserSessions()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::GET_USER_SESSIONS);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
]
2022-06-30 09:26:46 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
2022-09-22 01:57:31 +00:00
$this->assertIsArray($user['body']['data']['usersListSessions']);
2022-06-30 09:26:46 +00:00
}
public function testGetUserMemberships()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::GET_USER_MEMBERSHIPS);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
]
2022-06-30 09:26:46 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
2022-09-22 06:54:58 +00:00
$this->assertIsArray($user['body']['data']['usersListMemberships']);
2022-06-30 09:26:46 +00:00
}
public function testGetUserLogs()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::GET_USER_LOGS);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
]
2022-06-30 09:26:46 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
2022-09-21 07:03:28 +00:00
$this->assertIsArray($user['body']['data']['usersListLogs']);
2022-06-30 09:26:46 +00:00
}
public function testListUserTargets()
2023-10-17 17:59:10 +00:00
{
$target = $this->setupUserTarget();
2023-10-17 17:59:10 +00:00
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::LIST_USER_TARGETS);
2023-10-17 17:59:10 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $target['userId'],
]
];
$targets = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertEquals(200, $targets['headers']['status-code']);
$this->assertIsArray($targets['body']['data']['usersListTargets']);
$this->assertCount(2, $targets['body']['data']['usersListTargets']['targets']);
2023-10-17 17:59:10 +00:00
}
public function testGetUserTarget()
2023-10-17 17:59:10 +00:00
{
$target = $this->setupUserTarget();
2023-10-17 17:59:10 +00:00
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::GET_USER_TARGET);
2023-10-17 17:59:10 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $target['userId'],
'targetId' => $target['_id'],
]
];
$target = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertEquals(200, $target['headers']['status-code']);
2023-11-21 09:49:19 +00:00
$this->assertEquals('random-email@mail.org', $target['body']['data']['usersGetTarget']['identifier']);
2023-10-17 17:59:10 +00:00
}
2022-06-30 09:26:46 +00:00
public function testUpdateUserStatus()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::UPDATE_USER_STATUS);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
'status' => true,
]
2022-06-30 09:26:46 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
$this->assertIsArray($user['body']['data']['usersUpdateStatus']);
2022-12-08 03:08:57 +00:00
$this->assertEquals($this->getUser()['$id'], $user['body']['data']['usersUpdateStatus']['_id']);
2022-06-30 09:26:46 +00:00
}
public function testUpdateUserEmailVerification()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::UPDATE_USER_EMAIL_VERIFICATION);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
'emailVerification' => true,
]
2022-06-30 09:26:46 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
2022-07-01 00:02:59 +00:00
$this->assertIsArray($user['body']['data']['usersUpdateEmailVerification']);
2022-06-30 09:26:46 +00:00
}
2022-07-01 00:02:59 +00:00
public function testUpdateUserPhoneVerification()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::UPDATE_USER_PHONE_VERIFICATION);
2022-07-01 00:02:59 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
'phoneVerification' => true,
]
2022-07-01 00:02:59 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
$this->assertIsArray($user['body']['data']['usersUpdatePhoneVerification']);
2022-12-08 03:08:57 +00:00
$this->assertEquals($this->getUser()['$id'], $user['body']['data']['usersUpdatePhoneVerification']['_id']);
2022-07-01 00:02:59 +00:00
}
2022-06-30 09:26:46 +00:00
public function testUpdateUserName()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::UPDATE_USER_NAME);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
'name' => 'Updated Name',
]
2022-06-30 09:26:46 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
$this->assertIsArray($user['body']['data']['usersUpdateName']);
$this->assertEquals('Updated Name', $user['body']['data']['usersUpdateName']['name']);
}
public function testUpdateUserEmail()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::UPDATE_USER_EMAIL);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
'email' => 'newemail@appwrite.io'
2022-06-30 09:26:46 +00:00
],
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
$this->assertIsArray($user['body']['data']['usersUpdateEmail']);
$this->assertEquals('newemail@appwrite.io', $user['body']['data']['usersUpdateEmail']['email']);
}
public function testUpdateUserPassword()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::UPDATE_USER_PASSWORD);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
'password' => 'newpassword'
2022-06-30 09:26:46 +00:00
],
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
$this->assertIsArray($user['body']['data']['usersUpdatePassword']);
}
2022-07-06 03:51:49 +00:00
public function testUpdateUserPhone()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::UPDATE_USER_PHONE);
2022-07-06 03:51:49 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
'number' => '+123456789'
2022-07-06 03:51:49 +00:00
],
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
$this->assertIsArray($user['body']['data']['usersUpdatePhone']);
2022-09-22 06:54:58 +00:00
$this->assertEquals('+123456789', $user['body']['data']['usersUpdatePhone']['phone']);
2022-07-06 03:51:49 +00:00
}
2022-06-30 09:26:46 +00:00
public function testUpdateUserPrefs()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::UPDATE_USER_PREFS);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
'prefs' => [
'key' => 'value'
]
2022-06-30 09:26:46 +00:00
],
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsArray($user['body']['data']);
$this->assertArrayNotHasKey('errors', $user['body']);
$this->assertIsArray($user['body']['data']['usersUpdatePrefs']);
$this->assertEquals('{"key":"value"}', $user['body']['data']['usersUpdatePrefs']['data']);
}
public function testUpdateUserTarget()
2023-10-17 17:59:10 +00:00
{
$target = $this->setupUserTarget();
2023-10-17 17:59:10 +00:00
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::UPDATE_USER_TARGET);
2023-10-17 17:59:10 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $target['userId'],
'targetId' => $target['_id'],
2023-11-21 09:49:19 +00:00
'identifier' => 'random-email1@mail.org',
2023-10-17 17:59:10 +00:00
],
];
$target = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertEquals(200, $target['headers']['status-code']);
2023-11-21 09:49:19 +00:00
$this->assertEquals('random-email1@mail.org', $target['body']['data']['usersUpdateTarget']['identifier']);
2023-10-17 17:59:10 +00:00
}
2022-06-30 09:26:46 +00:00
public function testDeleteUserSessions()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::DELETE_USER_SESSIONS);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
]
2022-06-30 09:26:46 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
2022-07-18 09:38:13 +00:00
$this->assertIsNotArray($user['body']);
2022-06-30 09:26:46 +00:00
$this->assertEquals(204, $user['headers']['status-code']);
2025-08-19 11:13:47 +00:00
unset(self::$user[$this->getProject()['$id']]);
2022-06-30 09:26:46 +00:00
$this->getUser();
}
public function testDeleteUserSession()
{
$projectId = $this->getProject()['$id'];
// Create a fresh user with a session specifically for this test
$user = $this->getUser(true);
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::DELETE_USER_SESSION);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $user['$id'],
'sessionId' => $user['sessionId'],
]
2022-06-30 09:26:46 +00:00
];
$result = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
2022-06-30 09:26:46 +00:00
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertIsNotArray($result['body']);
$this->assertEquals(204, $result['headers']['status-code']);
2022-06-30 09:26:46 +00:00
2025-08-19 11:13:47 +00:00
unset(self::$user[$this->getProject()['$id']]);
2022-06-30 09:26:46 +00:00
$this->getUser();
}
public function testDeleteUserTarget()
2023-10-17 17:59:10 +00:00
{
$target = $this->setupUserTarget();
2023-10-17 17:59:10 +00:00
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::DELETE_USER_TARGET);
2023-10-17 17:59:10 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $target['userId'],
'targetId' => $target['_id'],
]
];
$target = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
$this->assertEquals(204, $target['headers']['status-code']);
// Clear cache after deletion
$key = $this->getProject()['$id'];
2026-03-31 16:34:37 +00:00
self::$cachedUserTarget[$key] = [];
2023-10-17 17:59:10 +00:00
}
2022-06-30 09:26:46 +00:00
public function testDeleteUser()
{
$projectId = $this->getProject()['$id'];
2025-08-19 11:03:18 +00:00
$query = $this->getQuery(self::DELETE_USER);
2022-06-30 09:26:46 +00:00
$graphQLPayload = [
'query' => $query,
'variables' => [
'userId' => $this->getUser()['$id'],
]
2022-06-30 09:26:46 +00:00
];
$user = $this->client->call(Client::METHOD_POST, '/graphql', \array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
], $this->getHeaders()), $graphQLPayload);
2022-07-18 09:38:13 +00:00
$this->assertIsNotArray($user['body']);
2022-06-30 09:26:46 +00:00
$this->assertEquals(204, $user['headers']['status-code']);
}
2022-07-11 21:52:00 +00:00
}