client->call(Client::METHOD_POST, '/account', [ 'origin' => 'http://localhost', 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], [ 'userId' => $id, 'email' => $email, 'password' => $password, ]); $this->assertEquals(201, $user['headers']['status-code']); $session = $this->client->call(Client::METHOD_POST, '/account/sessions/email', [ 'origin' => 'http://localhost', 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], [ 'email' => $email, 'password' => $password, ]); $session = $this->client->parseCookie((string) $session['headers']['set-cookie'])['a_session_'.$this->getProject()['$id']]; $user = [ '$id' => $user['body']['$id'], 'email' => $user['body']['email'], 'session' => $session, ]; $this->users[$id] = $user; return $user; } public function getCreatedUser(string $id): array { return $this->users[$id] ?? []; } public function createTeam(string $id, string $name): array { $team = $this->client->call(Client::METHOD_POST, '/teams', $this->getServerHeader(), [ 'teamId' => $id, 'name' => $name, ]); $this->teams[$id] = $team['body']; return $team['body']; } public function addToTeam(string $user, string $team, array $roles = []): array { $membership = $this->client->call(Client::METHOD_POST, '/teams/'.$team.'/memberships', $this->getServerHeader(), [ 'teamId' => $team, 'email' => $this->getCreatedUser($user)['email'], 'roles' => $roles, 'url' => 'http://localhost:5000/join-us#title', ]); return [ 'user' => $membership['body']['userId'], 'membership' => $membership['body']['$id'], ]; } public function getServerHeader(): array { return [ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ]; } }