/** * @group AjaxService */ public function testCanRefreshTokens() { elgg_register_page_handler('refresh_token', [$this->actions, 'handleTokenRefreshRequest']); $dt = new \DateTime(); $this->actions->setCurrentTime($dt); $ts = $dt->getTimestamp(); $token = $this->actions->generateActionToken($ts); $session_token = elgg_get_session()->get('__elgg_session'); $this->request = $this->prepareHttpRequest('refresh_token', 'POST', [], 1); $this->createService(); set_input('pairs', ["{$ts},{$token}", "{$ts},fake"]); set_input('session_token', $session_token); $this->route(); $response = _elgg_services()->responseFactory->getSentResponse(); $this->assertInstanceOf(Response::class, $response); $this->assertEquals(ELGG_HTTP_OK, $response->getStatusCode()); $this->assertContains('application/json', $response->headers->get('Content-Type')); $expected = json_encode(['token' => ['__elgg_ts' => $ts, '__elgg_token' => $token, 'logged_in' => false], 'valid_tokens' => [$token => true], 'session_token' => $session_token, 'user_guid' => 0]); $this->assertEquals($expected, $response->getContent()); }