public function testGeneratesCodeWithScope() { $controller = new Controller(); $request = new Request(['response_type' => 'device_code', 'client_id' => 'x', 'scope' => 'user']); $response = new Response(); $response = $controller->generate_code($request, $response); $data = json_decode($response->getContent()); # Make sure there's no error $this->assertObjectNotHasAttribute('error', $data); # Check that the info is cached against the user code $cache = Cache::get($data->user_code); $this->assertNotNull($cache); $this->assertEquals($cache->client_id, 'x'); $this->assertEquals($cache->device_code, $data->device_code); $this->assertEquals($cache->scope, 'user'); }
public function testRedirectsToAuthServerWithScopeGivenCode() { $controller = new Controller(); # First generate a code $request = new Request(['response_type' => 'device_code', 'client_id' => 'x', 'scope' => 'foo']); $response = new Response(); $response = $controller->generate_code($request, $response); $data = json_decode($response->getContent()); $request = new Request(['code' => $data->user_code]); $response = new Response(); $response = $controller->verify_code($request, $response); $responseString = $response->__toString(); preg_match('/Location:\\s+([^\\s]+)/', $responseString, $location); $authURL = parse_url($location[1]); parse_str($authURL['query'], $params); $this->assertEquals('code', $params['response_type']); $this->assertEquals('x', $params['client_id']); $this->assertEquals('foo', $params['scope']); $this->assertEquals(Config::$baseURL . '/auth/redirect', $params['redirect_uri']); $this->assertNotEmpty($params['state']); }
public function testAccessTokenGranted() { # obtain a device code $controller = new Controller(); $response = new Response(); $request = new Request(['response_type' => 'device_code', 'client_id' => 'x']); $response_data = $controller->generate_code($request, $response); $data = json_decode($response_data->getContent()); $this->assertObjectNotHasAttribute('error', $data); $device_code = $data->device_code; # simulate the access token being granted Cache::set($device_code, ['status' => 'complete', 'token_response' => ['access_token' => 'abc123', 'expires_in' => 600, 'custom' => 'foo']]); # check the status of the device code $request = new Request(['grant_type' => 'authorization_code', 'client_id' => 'x', 'code' => $device_code]); $response_data = $controller->access_token($request, $response); $data = json_decode($response_data->getContent()); $this->assertObjectNotHasAttribute('error', $data); $this->assertEquals('abc123', $data->access_token); $this->assertEquals(600, $data->expires_in); $this->assertEquals('foo', $data->custom); }