)]}'
{"test/s3api/test_input_errors.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a275155f50b8bc01e3fc18d69246acdd024b9246","unresolved":true,"context_lines":[{"line_number":1479,"context_line":"            self.bucket_name,"},{"line_number":1480,"context_line":"            \u0027test-obj\u0027,"},{"line_number":1481,"context_line":"            method\u003d\u0027PUT\u0027,"},{"line_number":1482,"context_line":"            body\u003diter([chunked_body]),"},{"line_number":1483,"context_line":"            headers\u003d{"},{"line_number":1484,"context_line":"                \u0027x-amz-content-sha256\u0027: \u0027STREAMING-UNSIGNED-PAYLOAD-TRAILER\u0027,"},{"line_number":1485,"context_line":"                \u0027content-encoding\u0027: \u0027aws-chunked\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"f38df12b_acb7cab1","side":"PARENT","line":1482,"range":{"start_line":1482,"start_character":17,"end_line":1482,"end_character":37},"updated":"2025-02-14 18:57:33.000000000","message":"This it not a duplicate test, though the distinction *is* subtle.\n\nThe name, stupid as it is, is a give-away: It\u0027s testing the combination of `Content-Encoding: aws-chunked` **and** `Transfer-Encoding: chunked`","commit_id":"0047cb40a3e3f0286c0590315cd8c2143bea0eae"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7eb0846aeedd4802728aa667706db24f88bb20aa","unresolved":true,"context_lines":[{"line_number":1479,"context_line":"            self.bucket_name,"},{"line_number":1480,"context_line":"            \u0027test-obj\u0027,"},{"line_number":1481,"context_line":"            method\u003d\u0027PUT\u0027,"},{"line_number":1482,"context_line":"            body\u003diter([chunked_body]),"},{"line_number":1483,"context_line":"            headers\u003d{"},{"line_number":1484,"context_line":"                \u0027x-amz-content-sha256\u0027: \u0027STREAMING-UNSIGNED-PAYLOAD-TRAILER\u0027,"},{"line_number":1485,"context_line":"                \u0027content-encoding\u0027: \u0027aws-chunked\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5e8d50f3_84160d70","side":"PARENT","line":1482,"range":{"start_line":1482,"start_character":17,"end_line":1482,"end_character":37},"in_reply_to":"f38df12b_acb7cab1","updated":"2025-02-17 17:06:12.000000000","message":"OIC. I can see this easily now I have the header stat patch cherry-picked onto this branch.","commit_id":"0047cb40a3e3f0286c0590315cd8c2143bea0eae"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a275155f50b8bc01e3fc18d69246acdd024b9246","unresolved":false,"context_lines":[{"line_number":1667,"context_line":"                \u0027x-amz-trailer\u0027: \u0027x-amz-checksum-crc32\u0027})"},{"line_number":1668,"context_line":"        self.assertOK(resp)"},{"line_number":1669,"context_line":""},{"line_number":1670,"context_line":"    def test_no_md5_streaming_unsigned_no_amz_trailer(self):"},{"line_number":1671,"context_line":"        chunked_body \u003d b\u0027\u0027.join("},{"line_number":1672,"context_line":"            b\u0027%x\\r\\n%s\\r\\n\u0027 % (len(chunk), chunk)"},{"line_number":1673,"context_line":"            for chunk in [TEST_BODY, b\u0027\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a76bc79_443a8b28","side":"PARENT","line":1670,"updated":"2025-02-14 18:57:33.000000000","message":"I take it this was the other duplicate test? Being a subset of `test_no_md5_strm_unsgnd_pyld_trl_no_trailer_ok`","commit_id":"0047cb40a3e3f0286c0590315cd8c2143bea0eae"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7eb0846aeedd4802728aa667706db24f88bb20aa","unresolved":false,"context_lines":[{"line_number":1667,"context_line":"                \u0027x-amz-trailer\u0027: \u0027x-amz-checksum-crc32\u0027})"},{"line_number":1668,"context_line":"        self.assertOK(resp)"},{"line_number":1669,"context_line":""},{"line_number":1670,"context_line":"    def test_no_md5_streaming_unsigned_no_amz_trailer(self):"},{"line_number":1671,"context_line":"        chunked_body \u003d b\u0027\u0027.join("},{"line_number":1672,"context_line":"            b\u0027%x\\r\\n%s\\r\\n\u0027 % (len(chunk), chunk)"},{"line_number":1673,"context_line":"            for chunk in [TEST_BODY, b\u0027\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"2a4b1053_a2aaa979","side":"PARENT","line":1670,"in_reply_to":"5a76bc79_443a8b28","updated":"2025-02-17 17:06:12.000000000","message":"yes","commit_id":"0047cb40a3e3f0286c0590315cd8c2143bea0eae"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a275155f50b8bc01e3fc18d69246acdd024b9246","unresolved":true,"context_lines":[{"line_number":1958,"context_line":"        # As best we can tell, AWS doesn\u0027t care at all about how"},{"line_number":1959,"context_line":"        # \u003e The Content-Encoding representation header lists any encodings"},{"line_number":1960,"context_line":"        # \u003e that have been applied to the representation (message payload),"},{"line_number":1961,"context_line":"        # \u003e and in what order."},{"line_number":1962,"context_line":"        chunked_body \u003d b\u0027\u0027.join("},{"line_number":1963,"context_line":"            b\u0027%x\\r\\n%s\\r\\n\u0027 % (len(chunk), chunk)"},{"line_number":1964,"context_line":"            for chunk in [TEST_BODY, b\u0027\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7635b1c0_de332ab2","side":"PARENT","line":1961,"updated":"2025-02-14 18:57:33.000000000","message":"This was actually intentional; I was quoting from an RFC.","commit_id":"0047cb40a3e3f0286c0590315cd8c2143bea0eae"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7eb0846aeedd4802728aa667706db24f88bb20aa","unresolved":true,"context_lines":[{"line_number":1958,"context_line":"        # As best we can tell, AWS doesn\u0027t care at all about how"},{"line_number":1959,"context_line":"        # \u003e The Content-Encoding representation header lists any encodings"},{"line_number":1960,"context_line":"        # \u003e that have been applied to the representation (message payload),"},{"line_number":1961,"context_line":"        # \u003e and in what order."},{"line_number":1962,"context_line":"        chunked_body \u003d b\u0027\u0027.join("},{"line_number":1963,"context_line":"            b\u0027%x\\r\\n%s\\r\\n\u0027 % (len(chunk), chunk)"},{"line_number":1964,"context_line":"            for chunk in [TEST_BODY, b\u0027\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"0da529fa_404b0048","side":"PARENT","line":1961,"in_reply_to":"408fe7f3_b710b50b","updated":"2025-02-17 17:06:12.000000000","message":"ah, ok. good to have the url. I guessed it had been cut\u0027n\u0027paste but didn\u0027t realise the \u003e-quoting was intentional.","commit_id":"0047cb40a3e3f0286c0590315cd8c2143bea0eae"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"66d7ffbc90b7e5f7b8393f1f530123fa06e61e38","unresolved":true,"context_lines":[{"line_number":1958,"context_line":"        # As best we can tell, AWS doesn\u0027t care at all about how"},{"line_number":1959,"context_line":"        # \u003e The Content-Encoding representation header lists any encodings"},{"line_number":1960,"context_line":"        # \u003e that have been applied to the representation (message payload),"},{"line_number":1961,"context_line":"        # \u003e and in what order."},{"line_number":1962,"context_line":"        chunked_body \u003d b\u0027\u0027.join("},{"line_number":1963,"context_line":"            b\u0027%x\\r\\n%s\\r\\n\u0027 % (len(chunk), chunk)"},{"line_number":1964,"context_line":"            for chunk in [TEST_BODY, b\u0027\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"408fe7f3_b710b50b","side":"PARENT","line":1961,"in_reply_to":"7635b1c0_de332ab2","updated":"2025-02-14 20:37:45.000000000","message":"I take that back; I was quoting [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding) ... and that URL is too long to include effectively :-/\n\nMaybe I\u0027ll just update it to\n```\n        # As best we can tell, AWS doesn\u0027t care at all about how\n        # \u003e If one or more encodings have been applied to a representation,\n        # \u003e the sender that applied the encodings MUST generate a\n        # \u003e Content-Encoding header field that lists the content codings in\n        # \u003e the order in which they were applied.\n        # See https://www.rfc-editor.org/rfc/rfc9110.html#section-8.4\n```","commit_id":"0047cb40a3e3f0286c0590315cd8c2143bea0eae"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"66d7ffbc90b7e5f7b8393f1f530123fa06e61e38","unresolved":true,"context_lines":[{"line_number":2415,"context_line":""},{"line_number":2416,"context_line":""},{"line_number":2417,"context_line":"class NotV4AuthHeadersMixin:"},{"line_number":2418,"context_line":"    def test_no_md5_strm_unsgnd_pyld_trl_not_encoded(self):"},{"line_number":2419,"context_line":"        resp \u003d self.conn.make_request("},{"line_number":2420,"context_line":"            self.bucket_name,"},{"line_number":2421,"context_line":"            \u0027test-obj\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bc2684b6_0f20d3d8","line":2418,"updated":"2025-02-14 20:37:45.000000000","message":"Formerly `test_no_md5_streaming_unsigned_not_encoded`","commit_id":"602e55197f0352281eaf560208e0087bbfaf97b2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"66d7ffbc90b7e5f7b8393f1f530123fa06e61e38","unresolved":true,"context_lines":[{"line_number":2427,"context_line":"        self.assertSHA256Mismatch(resp, \u0027STREAMING-UNSIGNED-PAYLOAD-TRAILER\u0027,"},{"line_number":2428,"context_line":"                                  _sha256(TEST_BODY))"},{"line_number":2429,"context_line":""},{"line_number":2430,"context_line":"    def test_no_md5_strm_unsgnd_pyld_trl_encoding_declared_not_encoded(self):"},{"line_number":2431,"context_line":"        resp \u003d self.conn.make_request("},{"line_number":2432,"context_line":"            self.bucket_name,"},{"line_number":2433,"context_line":"            \u0027test-obj\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1e56ccc7_f220efd2","line":2430,"updated":"2025-02-14 20:37:45.000000000","message":"Formerly `test_no_md5_streaming_unsigned_encoding_declared_but_not_encoded`","commit_id":"602e55197f0352281eaf560208e0087bbfaf97b2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"66d7ffbc90b7e5f7b8393f1f530123fa06e61e38","unresolved":true,"context_lines":[{"line_number":2440,"context_line":"        self.assertSHA256Mismatch(resp, \u0027STREAMING-UNSIGNED-PAYLOAD-TRAILER\u0027,"},{"line_number":2441,"context_line":"                                  _sha256(TEST_BODY))"},{"line_number":2442,"context_line":""},{"line_number":2443,"context_line":"    def test_no_md5_strm_unsgnd_pyld_trl(self):"},{"line_number":2444,"context_line":"        chunked_body \u003d b\u0027\u0027.join("},{"line_number":2445,"context_line":"            b\u0027%x\\r\\n%s\u0027 % (len(chunk), chunk)"},{"line_number":2446,"context_line":"            for chunk in [TEST_BODY, b\u0027\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f76b1f3_a40f360b","line":2443,"updated":"2025-02-14 20:37:45.000000000","message":"Formerly `test_no_md5_streaming_unsigned`\n\nOK, at the very least, this should be named `test_no_md5_strm_unsgnd_pyld_trl_no_trailer` -- but I\u0027m not sure I like how disconnected it is now from `test_no_md5_strm_unsgnd_pyld_trl_no_trailer_ok`. The relationship [could maybe be more clear](https://review.opendev.org/c/openstack/swift/+/935409), but I think it\u0027s significant that the request setup all looks identical and it\u0027s just the auth mechanism that\u0027s different, and I think it\u0027s worth preserving that relationship somehow.\n\nNow, if I want to run all 4 related tests, I need something like\n```\npytest test/s3api/test_input_errors.py::TestV{{4AuthQuery,2AuthHeaders,2AuthQuery}::test_no_md5_strm_unsgnd_pyld_trl},4AuthHeaders::test_no_md5_strm_unsgnd_pyld_trl_no_trailer_ok}\n```\ninstead of just\n```\npytest test/s3api/test_input_errors.py::TestV{2,4}Auth{Query,Headers}::test_no_md5_strm_unsgnd_pyld_trl_no_trailer\n```","commit_id":"602e55197f0352281eaf560208e0087bbfaf97b2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7eb0846aeedd4802728aa667706db24f88bb20aa","unresolved":true,"context_lines":[{"line_number":2440,"context_line":"        self.assertSHA256Mismatch(resp, \u0027STREAMING-UNSIGNED-PAYLOAD-TRAILER\u0027,"},{"line_number":2441,"context_line":"                                  _sha256(TEST_BODY))"},{"line_number":2442,"context_line":""},{"line_number":2443,"context_line":"    def test_no_md5_strm_unsgnd_pyld_trl(self):"},{"line_number":2444,"context_line":"        chunked_body \u003d b\u0027\u0027.join("},{"line_number":2445,"context_line":"            b\u0027%x\\r\\n%s\u0027 % (len(chunk), chunk)"},{"line_number":2446,"context_line":"            for chunk in [TEST_BODY, b\u0027\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"ebfa4c0f_4ae182b5","line":2443,"in_reply_to":"9f76b1f3_a40f360b","updated":"2025-02-17 17:06:12.000000000","message":"I find pytest -k option useful. But if dropping the ``_ok`` is helpful then do that.\n\nThe key piece of the name change is ``_streaming_unsigned`` -\u003e ``strm_unsgnd_pyld_trl``","commit_id":"602e55197f0352281eaf560208e0087bbfaf97b2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"66d7ffbc90b7e5f7b8393f1f530123fa06e61e38","unresolved":true,"context_lines":[{"line_number":2455,"context_line":"                \u0027x-amz-decoded-content-length\u0027: str(len(TEST_BODY))})"},{"line_number":2456,"context_line":"        self.assertIncompleteBody(resp, len(chunked_body), len(TEST_BODY))"},{"line_number":2457,"context_line":""},{"line_number":2458,"context_line":"    def test_no_md5_strm_unsgnd_pyld_trl_cl_matches_decoded_cl(self):"},{"line_number":2459,"context_line":"        chunked_body \u003d b\u0027\u0027.join("},{"line_number":2460,"context_line":"            b\u0027%x\\r\\n%s\u0027 % (len(chunk), chunk)"},{"line_number":2461,"context_line":"            for chunk in [TEST_BODY, b\u0027\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"8752e219_bfdf946b","line":2458,"updated":"2025-02-14 20:37:45.000000000","message":"Formerly `test_no_md5_streaming_unsigned_cl_matches_decoded_cl`","commit_id":"602e55197f0352281eaf560208e0087bbfaf97b2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"66d7ffbc90b7e5f7b8393f1f530123fa06e61e38","unresolved":true,"context_lines":[{"line_number":2471,"context_line":"        self.assertSHA256Mismatch(resp, \u0027STREAMING-UNSIGNED-PAYLOAD-TRAILER\u0027,"},{"line_number":2472,"context_line":"                                  _sha256(chunked_body))"},{"line_number":2473,"context_line":""},{"line_number":2474,"context_line":"    def test_no_md5_strm_sgnd_pyld(self):"},{"line_number":2475,"context_line":"        chunked_body \u003d b\u0027\u0027.join("},{"line_number":2476,"context_line":"            b\u0027%x\\r\\n%s\u0027 % (len(chunk), chunk)"},{"line_number":2477,"context_line":"            for chunk in [TEST_BODY, b\u0027\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"798ce8f8_6cb750b0","line":2474,"updated":"2025-02-14 20:37:45.000000000","message":"Are these last two new? I see how they closely mirror `test_no_md5_strm_unsgnd_pyld_trl` and `test_no_md5_strm_unsgnd_pyld_trl_cl_matches_decoded_cl` -- should there be similar new tests for v4?","commit_id":"602e55197f0352281eaf560208e0087bbfaf97b2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b6635c5b1f9a8b55e734b0e36c8f0d589d300537","unresolved":true,"context_lines":[{"line_number":2473,"context_line":""},{"line_number":2474,"context_line":"    def test_no_md5_strm_sgnd_pyld(self):"},{"line_number":2475,"context_line":"        chunked_body \u003d b\u0027\u0027.join("},{"line_number":2476,"context_line":"            b\u0027%x\\r\\n%s\u0027 % (len(chunk), chunk)"},{"line_number":2477,"context_line":"            for chunk in [TEST_BODY, b\u0027\u0027])"},{"line_number":2478,"context_line":"        resp \u003d self.conn.make_request("},{"line_number":2479,"context_line":"            self.bucket_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"8300b98d_11b447ca","line":2476,"updated":"2025-02-14 20:45:30.000000000","message":"If this is supposed to be signed, should we be including `chunk-signature`s?","commit_id":"602e55197f0352281eaf560208e0087bbfaf97b2"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"7eb0846aeedd4802728aa667706db24f88bb20aa","unresolved":true,"context_lines":[{"line_number":2473,"context_line":""},{"line_number":2474,"context_line":"    def test_no_md5_strm_sgnd_pyld(self):"},{"line_number":2475,"context_line":"        chunked_body \u003d b\u0027\u0027.join("},{"line_number":2476,"context_line":"            b\u0027%x\\r\\n%s\u0027 % (len(chunk), chunk)"},{"line_number":2477,"context_line":"            for chunk in [TEST_BODY, b\u0027\u0027])"},{"line_number":2478,"context_line":"        resp \u003d self.conn.make_request("},{"line_number":2479,"context_line":"            self.bucket_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ef39b768_8938aa1f","line":2476,"in_reply_to":"8300b98d_11b447ca","updated":"2025-02-17 17:06:12.000000000","message":"IDK, I think I was just feeling my way here and didn\u0027t complete, although I see the assertion is assertIncompleteBody ??\n\nalso, are these in the wrong mixin - or as you say, we should have similar in the v4 auth headers mixin","commit_id":"602e55197f0352281eaf560208e0087bbfaf97b2"}]}
