/** * Test valid signature for entity-body style requests (POST, PUT, PATCH, DELETE). */ public function testValidSignatureWithEntityBody() { $method = 'POST'; $body = '{hello: "world!"}'; $path = '/say/hello'; $secret = '456'; $queryParams = array('fiz' => 'buzz', 'foo' => 'bar'); $request = new EntityEnclosingRequest($method, $path); $request->setBody($body); $signature = new Signature($secret, $request); $expected = $secret . $method . $path; ksort($queryParams); foreach ($queryParams as $key => $param) { $expected .= "{$key}={$param}"; $request->getQuery()->set($key, $param); } $expected .= $body; $this->assertEquals($expected, $signature->getRawSignature(), 'Raw signature should include entity-body string.'); $this->assertEquals(43, strlen($signature), 'Hash signature should be 43 characters in length.'); }