diff --git a/lib/SSO.php b/lib/SSO.php index 6eed387..db3649a 100644 --- a/lib/SSO.php +++ b/lib/SSO.php @@ -127,30 +127,14 @@ public function getProfileAndToken($code) */ public function getProfile($accessToken) { - $getProfilePath = "sso/profile"; - - $params = [ - "access_token" => $accessToken - ]; - - $method = Client::METHOD_GET; - - $url = "https://api.workos.com/sso/profile"; - - $requestHeaders = ["Authorization: Bearer " . $accessToken]; - - list($result) = Client::requestClient()->request( - $method, - $url, - $requestHeaders, - null + $response = Client::request( + Client::METHOD_GET, + 'sso/profile', + ["Authorization: Bearer " . $accessToken], + null, ); - $decodedResponse = json_decode($result, true); - - $profile = Resource\Profile::constructFromResponse($decodedResponse); - - return $profile->json(); + return Resource\Profile::constructFromResponse($response); } /** diff --git a/tests/WorkOS/SSOTest.php b/tests/WorkOS/SSOTest.php index c2d4cda..071d2e5 100644 --- a/tests/WorkOS/SSOTest.php +++ b/tests/WorkOS/SSOTest.php @@ -115,6 +115,28 @@ public function testGetProfileAndTokenReturnsProfileWithExpectedValues() $this->assertEquals($profileFixture, $profileAndToken->profile->toArray()); } + public function testGetProfileReturnsProfileWithExpectedValues() + { + $path = "sso/profile"; + $token = 'token'; + + $result = $this->profileResponseFixture(); + + $this->mockRequest( + Client::METHOD_GET, + $path, + ['Authorization: Bearer ' . $token], + null, + false, + $result + ); + + $profile = $this->sso->getProfile($token); + $profileFixture = $this->profileFixture(); + + $this->assertEquals($profileFixture, $profile->toArray()); + } + public function testGetConnection() { $connection = "connection_id"; @@ -259,6 +281,31 @@ private function profileFixture() ]; } + private function profileResponseFixture() + { + return json_encode([ + "id" => "prof_hen", + "email" => "hen@papagenos.com", + "first_name" => "hen", + "last_name" => "cha", + "organization_id" => "org_01FG7HGMY2CZZR2FWHTEE94VF0", + "connection_id" => "conn_01EMH8WAK20T42N2NBMNBCYHAG", + "connection_type" => "GoogleOAuth", + "idp_id" => "randomalphanum", + "role" => new RoleResponse("admin"), + "groups" => array("Admins", "Developers"), + "custom_attributes" => array("license" => "professional"), + "raw_attributes" => array( + "email" => "hen@papagenos.com", + "first_name" => "hen", + "last_name" => "cha", + "ipd_id" => "randomalphanum", + "groups" => array("Admins", "Developers"), + "license" => "professional" + ), + ]); + } + private function connectionFixture() { return [