)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d5554dd8e0c28cbc0a45a98afd01b99f3c25a94c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"04fb0dfc_67fb68c0","updated":"2023-12-20 17:44:02.000000000","message":"seems solid!","commit_id":"eb05494b7c0964798dd9e9918f5367784a8a5a16"}],"test/unit/common/middleware/s3api/test_obj.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d5554dd8e0c28cbc0a45a98afd01b99f3c25a94c","unresolved":true,"context_lines":[{"line_number":80,"context_line":"        self._register_bucket_policy_index_head("},{"line_number":81,"context_line":"            \u0027bucket\u0027, self.bucket_policy_index)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def _test_object_GETorHEAD(self, method):"},{"line_number":84,"context_line":"        req \u003d Request.blank(\u0027/bucket/object\u0027,"},{"line_number":85,"context_line":"                            environ\u003d{\u0027REQUEST_METHOD\u0027: method},"},{"line_number":86,"context_line":"                            headers\u003d{\u0027Authorization\u0027: \u0027AWS test:tester:hmac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1c298385_0ac07b40","line":83,"updated":"2023-12-20 17:44:02.000000000","message":"so this method basically goes back to what i was originally","commit_id":"eb05494b7c0964798dd9e9918f5367784a8a5a16"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6910183746b0e531ff1aa0de5932c4bed3712130","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        self._register_bucket_policy_index_head("},{"line_number":81,"context_line":"            \u0027bucket\u0027, self.bucket_policy_index)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def _test_object_GETorHEAD(self, method):"},{"line_number":84,"context_line":"        req \u003d Request.blank(\u0027/bucket/object\u0027,"},{"line_number":85,"context_line":"                            environ\u003d{\u0027REQUEST_METHOD\u0027: method},"},{"line_number":86,"context_line":"                            headers\u003d{\u0027Authorization\u0027: \u0027AWS test:tester:hmac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"a6ce3407_88862a9b","line":83,"in_reply_to":"1c298385_0ac07b40","updated":"2023-12-21 17:09:43.000000000","message":"Acknowledged","commit_id":"eb05494b7c0964798dd9e9918f5367784a8a5a16"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d5554dd8e0c28cbc0a45a98afd01b99f3c25a94c","unresolved":true,"context_lines":[{"line_number":334,"context_line":"                expected_status\u003d\u0027429 Slow Down\u0027)"},{"line_number":335,"context_line":"            self.assertEqual(code, \u0027SlowDown\u0027)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def _test_non_slo_object_GETorHEAD_part_num(self, method, part_number):"},{"line_number":338,"context_line":"        req \u003d Request.blank(\u0027/bucket/object?partNumber\u003d%s\u0027 % part_number,"},{"line_number":339,"context_line":"                            environ\u003d{\u0027REQUEST_METHOD\u0027: method},"},{"line_number":340,"context_line":"                            headers\u003d{\u0027Authorization\u0027: \u0027AWS test:tester:hmac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a372cd3_983f423c","line":337,"updated":"2023-12-20 17:44:02.000000000","message":"and this is a new method for getting the part_number assetions we want for GET/HEAD","commit_id":"eb05494b7c0964798dd9e9918f5367784a8a5a16"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6910183746b0e531ff1aa0de5932c4bed3712130","unresolved":false,"context_lines":[{"line_number":334,"context_line":"                expected_status\u003d\u0027429 Slow Down\u0027)"},{"line_number":335,"context_line":"            self.assertEqual(code, \u0027SlowDown\u0027)"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    def _test_non_slo_object_GETorHEAD_part_num(self, method, part_number):"},{"line_number":338,"context_line":"        req \u003d Request.blank(\u0027/bucket/object?partNumber\u003d%s\u0027 % part_number,"},{"line_number":339,"context_line":"                            environ\u003d{\u0027REQUEST_METHOD\u0027: method},"},{"line_number":340,"context_line":"                            headers\u003d{\u0027Authorization\u0027: \u0027AWS test:tester:hmac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"85150335_0ed55672","line":337,"in_reply_to":"3a372cd3_983f423c","updated":"2023-12-21 17:09:43.000000000","message":"Acknowledged","commit_id":"eb05494b7c0964798dd9e9918f5367784a8a5a16"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d5554dd8e0c28cbc0a45a98afd01b99f3c25a94c","unresolved":true,"context_lines":[{"line_number":341,"context_line":"                                     \u0027Date\u0027: self.get_date_header()})"},{"line_number":342,"context_line":"        status, headers, body \u003d self.call_s3api(req)"},{"line_number":343,"context_line":"        self.assertEqual(status.split()[0], \u0027206\u0027)"},{"line_number":344,"context_line":"        self.assertEqual(headers[\u0027content-length\u0027], \u00275\u0027)"},{"line_number":345,"context_line":"        self.assertTrue(\u0027content-range\u0027 in headers)"},{"line_number":346,"context_line":"        self.assertEqual(headers[\u0027content-range\u0027], \u0027bytes 0-4/5\u0027)"},{"line_number":347,"context_line":"        self.assertEqual(headers[\u0027content-type\u0027], \u0027text/html\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"6ad34264_dc0d015a","line":344,"updated":"2023-12-20 17:44:02.000000000","message":"doesn\u0027t seem very generic; but it seems like all the places it uses have length 5 objects","commit_id":"eb05494b7c0964798dd9e9918f5367784a8a5a16"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6910183746b0e531ff1aa0de5932c4bed3712130","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                     \u0027Date\u0027: self.get_date_header()})"},{"line_number":342,"context_line":"        status, headers, body \u003d self.call_s3api(req)"},{"line_number":343,"context_line":"        self.assertEqual(status.split()[0], \u0027206\u0027)"},{"line_number":344,"context_line":"        self.assertEqual(headers[\u0027content-length\u0027], \u00275\u0027)"},{"line_number":345,"context_line":"        self.assertTrue(\u0027content-range\u0027 in headers)"},{"line_number":346,"context_line":"        self.assertEqual(headers[\u0027content-range\u0027], \u0027bytes 0-4/5\u0027)"},{"line_number":347,"context_line":"        self.assertEqual(headers[\u0027content-type\u0027], \u0027text/html\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c7dd1dcf_bbccd312","line":344,"in_reply_to":"6ad34264_dc0d015a","updated":"2023-12-21 17:09:43.000000000","message":"Acknowledged","commit_id":"eb05494b7c0964798dd9e9918f5367784a8a5a16"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d5554dd8e0c28cbc0a45a98afd01b99f3c25a94c","unresolved":true,"context_lines":[{"line_number":343,"context_line":"        self.assertEqual(status.split()[0], \u0027206\u0027)"},{"line_number":344,"context_line":"        self.assertEqual(headers[\u0027content-length\u0027], \u00275\u0027)"},{"line_number":345,"context_line":"        self.assertTrue(\u0027content-range\u0027 in headers)"},{"line_number":346,"context_line":"        self.assertEqual(headers[\u0027content-range\u0027], \u0027bytes 0-4/5\u0027)"},{"line_number":347,"context_line":"        self.assertEqual(headers[\u0027content-type\u0027], \u0027text/html\u0027)"},{"line_number":348,"context_line":"        # we\u0027ll want this for logging"},{"line_number":349,"context_line":"        self._assert_policy_index(req.headers, headers,"}],"source_content_type":"text/x-python","patch_set":1,"id":"552ce1e6_8585256c","line":346,"updated":"2023-12-20 17:44:02.000000000","message":"i guess this makes sense since only part_number\u003d1 works with non-slo","commit_id":"eb05494b7c0964798dd9e9918f5367784a8a5a16"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6910183746b0e531ff1aa0de5932c4bed3712130","unresolved":false,"context_lines":[{"line_number":343,"context_line":"        self.assertEqual(status.split()[0], \u0027206\u0027)"},{"line_number":344,"context_line":"        self.assertEqual(headers[\u0027content-length\u0027], \u00275\u0027)"},{"line_number":345,"context_line":"        self.assertTrue(\u0027content-range\u0027 in headers)"},{"line_number":346,"context_line":"        self.assertEqual(headers[\u0027content-range\u0027], \u0027bytes 0-4/5\u0027)"},{"line_number":347,"context_line":"        self.assertEqual(headers[\u0027content-type\u0027], \u0027text/html\u0027)"},{"line_number":348,"context_line":"        # we\u0027ll want this for logging"},{"line_number":349,"context_line":"        self._assert_policy_index(req.headers, headers,"}],"source_content_type":"text/x-python","patch_set":1,"id":"83479a29_1fcec536","line":346,"in_reply_to":"552ce1e6_8585256c","updated":"2023-12-21 17:09:43.000000000","message":"Acknowledged","commit_id":"eb05494b7c0964798dd9e9918f5367784a8a5a16"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"d5554dd8e0c28cbc0a45a98afd01b99f3c25a94c","unresolved":true,"context_lines":[{"line_number":1189,"context_line":"        self.assertEqual(code, \u0027InvalidRange\u0027)"},{"line_number":1190,"context_line":""},{"line_number":1191,"context_line":"    def test_object_HEAD(self):"},{"line_number":1192,"context_line":"        self._test_object_GETorHEAD(\u0027HEAD\u0027)"},{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"    @patch_policies(["},{"line_number":1195,"context_line":"        StoragePolicy(0, \u0027gold\u0027, is_default\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":1,"id":"64b2576f_55148fb7","line":1192,"updated":"2023-12-20 17:44:02.000000000","message":"i geuss this wasn\u0027t originally decorated with @s3acl, but we should probably go ahead and move it into Base - it passes in TestS3ApiObjAcl just fine:\n\n\tdiff --git a/test/unit/common/middleware/s3api/test_obj.py b/test/unit/common/middleware/s3api/test_obj.py\n\tindex 9dd91ef0d..b6381e101 100644\n\t--- a/test/unit/common/middleware/s3api/test_obj.py\n\t+++ b/test/unit/common/middleware/s3api/test_obj.py\n\t@@ -122,6 +122,9 @@ class BaseS3ApiObj(object):\n\t     def test_object_GET(self):\n\t\t self._test_object_GETorHEAD(\u0027GET\u0027)\n\t \n\t+    def test_object_HEAD(self):\n\t+        self._test_object_GETorHEAD(\u0027HEAD\u0027)\n\t+\n\t     def test_object_HEAD_error(self):\n\t\t # HEAD does not return the body even an error response in the\n\t\t # specifications of the REST API.\n\t@@ -1188,9 +1191,6 @@ class TestS3ApiObj(BaseS3ApiObj, S3ApiTestCase):\n\t\t\t\t\t\tswob.HTTPRequestedRangeNotSatisfiable)\n\t\t self.assertEqual(code, \u0027InvalidRange\u0027)\n\t \n\t-    def test_object_HEAD(self):\n\t-        self._test_object_GETorHEAD(\u0027HEAD\u0027)\n\t-\n\t     @patch_policies([\n\t\t StoragePolicy(0, \u0027gold\u0027, is_default\u003dTrue),\n\t\t StoragePolicy(1, \u0027silver\u0027)])","commit_id":"eb05494b7c0964798dd9e9918f5367784a8a5a16"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"6910183746b0e531ff1aa0de5932c4bed3712130","unresolved":false,"context_lines":[{"line_number":1189,"context_line":"        self.assertEqual(code, \u0027InvalidRange\u0027)"},{"line_number":1190,"context_line":""},{"line_number":1191,"context_line":"    def test_object_HEAD(self):"},{"line_number":1192,"context_line":"        self._test_object_GETorHEAD(\u0027HEAD\u0027)"},{"line_number":1193,"context_line":""},{"line_number":1194,"context_line":"    @patch_policies(["},{"line_number":1195,"context_line":"        StoragePolicy(0, \u0027gold\u0027, is_default\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a2e5e98_b957c463","line":1192,"in_reply_to":"64b2576f_55148fb7","updated":"2023-12-21 17:09:43.000000000","message":"Done","commit_id":"eb05494b7c0964798dd9e9918f5367784a8a5a16"}]}
