'foo_token', 'algorithm' => 'HMAC-SHA256', 'issued_at' => 321, 'code' => 'foo_code', 'state' => 'foo_state', 'user_id' => 123, 'foo' => 'bar', ]; protected function setUp() { $this->app = new FacebookApp('123', 'foo_app_secret'); } public function testAValidSignedRequestCanBeCreated() { $sr = new SignedRequest($this->app); $rawSignedRequest = $sr->make($this->payloadData); $srTwo = new SignedRequest($this->app, $rawSignedRequest); $payload = $srTwo->getPayload(); $expectedRawSignedRequest = $this->rawSignature . '.' . $this->rawPayload; $this->assertEquals($expectedRawSignedRequest, $rawSignedRequest); $this->assertEquals($this->payloadData, $payload); } /** * @expectedException \Facebook\Exceptions\FacebookSDKException */ public function testInvalidSignedRequestsWillFailFormattingValidation() { new SignedRequest($this->app, 'invalid_signed_request'); } public function testBase64EncodingIsUrlSafe() { $sr = new SignedRequest($this->app); $encodedData = $sr->base64UrlEncode('aijkoprstADIJKLOPQTUVX1256!)]-:;"<>?.|~'); $this->assertEquals('YWlqa29wcnN0QURJSktMT1BRVFVWWDEyNTYhKV0tOjsiPD4_Lnx-', $encodedData); } public function testAUrlSafeBase64EncodedStringCanBeDecoded() { $sr = new SignedRequest($this->app); $decodedData = $sr->base64UrlDecode('YWlqa29wcnN0QURJSktMT1BRVFVWWDEyNTYhKV0tOjsiPD4/Lnx+'); $this->assertEquals('aijkoprstADIJKLOPQTUVX1256!)]-:;"<>?.|~', $decodedData); } /** * @expectedException \Facebook\Exceptions\FacebookSDKException */ public function testAnImproperlyEncodedSignatureWillThrowAnException() { new SignedRequest($this->app, 'foo_sig.' . $this->rawPayload); } /** * @expectedException \Facebook\Exceptions\FacebookSDKException */ public function testAnImproperlyEncodedPayloadWillThrowAnException() { new SignedRequest($this->app, $this->rawSignature . '.foo_payload'); } /** * @expectedException \Facebook\Exceptions\FacebookSDKException */ public function testNonApprovedAlgorithmsWillThrowAnException() { $signedRequestData = $this->payloadData; $signedRequestData['algorithm'] = 'FOO-ALGORITHM'; $sr = new SignedRequest($this->app); $rawSignedRequest = $sr->make($signedRequestData); new SignedRequest($this->app, $rawSignedRequest); } public function testAsRawSignedRequestCanBeValidatedAndDecoded() { $rawSignedRequest = $this->rawSignature . '.' . $this->rawPayload; $sr = new SignedRequest($this->app, $rawSignedRequest); $this->assertEquals($this->payloadData, $sr->getPayload()); } public function testARawSignedRequestCanBeValidatedAndDecoded() { $rawSignedRequest = $this->rawSignature . '.' . $this->rawPayload; $sr = new SignedRequest($this->app, $rawSignedRequest); $this->assertEquals($sr->getPayload(), $this->payloadData); $this->assertEquals($sr->getRawSignedRequest(), $rawSignedRequest); $this->assertEquals(123, $sr->getUserId()); $this->assertTrue($sr->hasOAuthData()); } }