public function testConstructStringToSign() { $http_method = "GET"; $headers = NULL; $uri = "/fds/bucket/test.txt?uploads&uploadId=xx&partNumber=1"; // No headers $this->assertEquals($http_method . "\n" . "\n" . "\n" . "\n" . "" . "/fds/bucket/test.txt?partNumber=1&uploadId=xx&uploads", Signer::constructStringToSign($http_method, $uri, $headers)); // Normal headers $headers = array(); $headers[Common::CONTENT_TYPE] = "application/json"; $headers[Common::CONTENT_MD5] = "123131331313231"; $headers[Common::DATE] = "Tue, 27 Mar 2007 21:20:26+0000"; $this->assertEquals($http_method . "\n" . $headers[Common::CONTENT_MD5] . "\n" . $headers[Common::CONTENT_TYPE] . "\n" . $headers[Common::DATE] . "\n" . "" . "/fds/bucket/test.txt?partNumber=1&uploadId=xx&uploads", Signer::constructStringToSign($http_method, $uri, $headers)); // Xiaomi date overrides default 'Date' $headers[Common::XIAOMI_HEADER_PREFIX . "date"] = "Tue, 28 Mar 2007 21:20:26+0000"; $this->assertEquals($http_method . "\n" . $headers[Common::CONTENT_MD5] . "\n" . $headers[Common::CONTENT_TYPE] . "\n" . "\n" . Common::XIAOMI_HEADER_PREFIX . "date:Tue, 28 Mar 2007 21:20:26+0000\n" . "/fds/bucket/test.txt?partNumber=1&uploadId=xx&uploads", Signer::constructStringToSign($http_method, $uri, $headers)); // Pre-signed uri $uri = "/fds/bucket/test.txt?GalaxyAccessKeyId=AKIAIOSFODNN7EXAMPLE" . "&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D"; $this->assertEquals($http_method . "\n" . $headers[Common::CONTENT_MD5] . "\n" . $headers[Common::CONTENT_TYPE] . "\n" . "1141889120\n" . Common::XIAOMI_HEADER_PREFIX . "date:Tue, 28 Mar 2007 21:20:26+0000\n" . "/fds/bucket/test.txt", Signer::constructStringToSign($http_method, $uri, $headers)); }