)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"17422a44376fb6feb290e93b7839f944a2952a43","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bbf13a85_4493c54f","updated":"2023-12-14 04:48:47.000000000","message":"this also seems good; squash it all","commit_id":"fd00d9380828c16f44c592f472749f45ee52fe65"}],"test/unit/common/middleware/s3api/__init__.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"            def authorize_cb(req):"},{"line_number":64,"context_line":"                # Assume swift owner, if not yet set"},{"line_number":65,"context_line":"                req.environ.setdefault(\u0027REMOTE_USER\u0027, \u0027authorized\u0027)"},{"line_number":66,"context_line":"                req.environ.setdefault(\u0027swift_owner\u0027, True)"},{"line_number":67,"context_line":"                # But then default to blocking authz, to ensure we\u0027ve replaced"},{"line_number":68,"context_line":"                # the default auth system"}],"source_content_type":"text/x-python","patch_set":1,"id":"0e61cbf1_3966815a","side":"PARENT","line":65,"updated":"2023-12-13 19:03:29.000000000","message":"IIUC tempauth does this in ``__call__``, not in the authorize callback","commit_id":"d0e3ada0aa82c65e887e053717dda0c9bf211bba"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":37,"context_line":"    account_existence_skip_cache \u003d 0.0"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, s3_acl\u003dFalse):"},{"line_number":40,"context_line":"        self.s3_acl \u003d s3_acl"},{"line_number":41,"context_line":"        self.remote_user \u003d \u0027authorized\u0027"},{"line_number":42,"context_line":"        self._pipeline_final_app \u003d self"},{"line_number":43,"context_line":"        self.swift \u003d FakeSwift(allowed_methods\u003d[\u0027TEST\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"c8f80958_8e9e10c1","line":40,"updated":"2023-12-13 19:03:29.000000000","message":"oops, this is no longer needed","commit_id":"a27f5721927dd3ed3a80860f80cc0063985018a7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"17422a44376fb6feb290e93b7839f944a2952a43","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    account_existence_skip_cache \u003d 0.0"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, s3_acl\u003dFalse):"},{"line_number":40,"context_line":"        self.s3_acl \u003d s3_acl"},{"line_number":41,"context_line":"        self.remote_user \u003d \u0027authorized\u0027"},{"line_number":42,"context_line":"        self._pipeline_final_app \u003d self"},{"line_number":43,"context_line":"        self.swift \u003d FakeSwift(allowed_methods\u003d[\u0027TEST\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"4d6f7af8_e8ca91a5","line":40,"in_reply_to":"c8f80958_8e9e10c1","updated":"2023-12-14 04:48:47.000000000","message":"Acknowledged","commit_id":"a27f5721927dd3ed3a80860f80cc0063985018a7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        # the default auth system"},{"line_number":65,"context_line":"        return swob.HTTPForbidden(request\u003dreq)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def handle(self, env):"},{"line_number":68,"context_line":"        if \u0027s3api.auth_details\u0027 in env:"},{"line_number":69,"context_line":"            self._update_s3_path_info(env)"},{"line_number":70,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9b04d13f_f7ad68f4","line":67,"updated":"2023-12-13 19:03:29.000000000","message":"this could all be in ``__call__``.  There was some where that mocks with signature (env) that would need to be changed.","commit_id":"a27f5721927dd3ed3a80860f80cc0063985018a7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":268,"context_line":"    def setUp(self):"},{"line_number":269,"context_line":"        super(S3ApiTestCaseAcl, self).setUp()"},{"line_number":270,"context_line":"        self.s3api.conf.s3_acl \u003d True"},{"line_number":271,"context_line":"        self.app.s3_acl \u003d True"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        def gen_grant(permission):"},{"line_number":274,"context_line":"            # generate Grant with a grantee named by \"permission\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7ea64c9a_a2a35ab0","line":271,"updated":"2023-12-13 19:03:29.000000000","message":"remove","commit_id":"a27f5721927dd3ed3a80860f80cc0063985018a7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"17422a44376fb6feb290e93b7839f944a2952a43","unresolved":false,"context_lines":[{"line_number":268,"context_line":"    def setUp(self):"},{"line_number":269,"context_line":"        super(S3ApiTestCaseAcl, self).setUp()"},{"line_number":270,"context_line":"        self.s3api.conf.s3_acl \u003d True"},{"line_number":271,"context_line":"        self.app.s3_acl \u003d True"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        def gen_grant(permission):"},{"line_number":274,"context_line":"            # generate Grant with a grantee named by \"permission\""}],"source_content_type":"text/x-python","patch_set":1,"id":"2e55ef50_2e73754d","line":271,"in_reply_to":"7ea64c9a_a2a35ab0","updated":"2023-12-14 04:48:47.000000000","message":"Acknowledged","commit_id":"a27f5721927dd3ed3a80860f80cc0063985018a7"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"17422a44376fb6feb290e93b7839f944a2952a43","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    Grant, User, ACL, PERMISSIONS, AllUsers, AuthenticatedUsers"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from test.debug_logger import debug_logger"},{"line_number":32,"context_line":"from test.unit.common.middleware.s3api.helpers import FakeSwift"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class FakeApp(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"8674ab6f_d667f7ad","side":"PARENT","line":32,"updated":"2023-12-14 04:48:47.000000000","message":"so long!","commit_id":"880a0d83b97f5d63a5083206f2d18701951d6ea6"}],"test/unit/common/middleware/s3api/helpers.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":24,"context_line":"    \"\"\""},{"line_number":25,"context_line":"    A good-enough fake Swift proxy server to use in testing middleware."},{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":"    ALLOWED_METHODS \u003d BaseFakeSwift.ALLOWED_METHODS + [\u0027TEST\u0027]"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, s3_acl\u003dFalse):"},{"line_number":30,"context_line":"        super(FakeSwift, self).__init__()"}],"source_content_type":"text/x-python","patch_set":1,"id":"708ec179_b9f9144c","side":"PARENT","line":27,"updated":"2023-12-13 19:03:29.000000000","message":"this would end up being the only reason to subclass","commit_id":"d0e3ada0aa82c65e887e053717dda0c9bf211bba"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":31,"context_line":"        self.s3_acl \u003d s3_acl"},{"line_number":32,"context_line":"        self.remote_user \u003d \u0027authorized\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _fake_auth_middleware(self, env):"},{"line_number":35,"context_line":"        if \u0027swift.authorize_override\u0027 in env:"},{"line_number":36,"context_line":"            return"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"d4b6f48a_5855bf41","side":"PARENT","line":34,"updated":"2023-12-13 19:03:29.000000000","message":"AFAICT this is very close to duplicating what FakeApp already does","commit_id":"d0e3ada0aa82c65e887e053717dda0c9bf211bba"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        env[\u0027PATH_INFO\u0027] \u003d path.replace(tenant_user, \u0027AUTH_\u0027 + tenant)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        if self.remote_user:"},{"line_number":48,"context_line":"            env[\u0027REMOTE_USER\u0027] \u003d self.remote_user"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        if env[\u0027REQUEST_METHOD\u0027] \u003d\u003d \u0027TEST\u0027:"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"21ffad31_0be4364d","side":"PARENT","line":48,"updated":"2023-12-13 19:03:29.000000000","message":"this seems to match tempauth i.e. do it in ``__call__``","commit_id":"d0e3ada0aa82c65e887e053717dda0c9bf211bba"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":61,"context_line":"            env[\u0027swift.authorize\u0027] \u003d lambda req: None"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __call__(self, env, start_response):"},{"line_number":64,"context_line":"        if self.s3_acl:"},{"line_number":65,"context_line":"            self._fake_auth_middleware(env)"},{"line_number":66,"context_line":"        return super(FakeSwift, self).__call__(env, start_response)"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"99cef7ae_fc9374f2","side":"PARENT","line":64,"range":{"start_line":64,"start_character":11,"end_line":64,"end_character":22},"updated":"2023-12-13 19:03:29.000000000","message":"I\u0027m not sure why this condition applied - what is s3acl specific in fake_auth_midleware?\n\ntest.unit.common.middleware.s3api.test_s3api.TestS3ApiMiddleware.test_s3api_with_only_s3_token_v3 relies on this, but that seems to be to exclude the fake auth regardless, rather than because it wants s3acl specific behavior (that test and another similar one create there own FakeSwift and do not wrap it in FakeApp, also to avoid the default fake auth I guess","commit_id":"d0e3ada0aa82c65e887e053717dda0c9bf211bba"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"17422a44376fb6feb290e93b7839f944a2952a43","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        if self.s3_acl:"},{"line_number":65,"context_line":"            self._fake_auth_middleware(env)"},{"line_number":66,"context_line":"        return super(FakeSwift, self).__call__(env, start_response)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class UnreadableInput(object):"},{"line_number":70,"context_line":"    # Some clients will send neither a Content-Length nor a Transfer-Encoding"}],"source_content_type":"text/x-python","patch_set":2,"id":"70286370_e4a78298","side":"PARENT","line":67,"updated":"2023-12-14 04:48:47.000000000","message":"ok good riddence.","commit_id":"880a0d83b97f5d63a5083206f2d18701951d6ea6"}],"test/unit/common/middleware/s3api/test_helpers.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"17422a44376fb6feb290e93b7839f944a2952a43","unresolved":true,"context_lines":[{"line_number":16,"context_line":"# This stuff can\u0027t live in test/unit/__init__.py due to its swob dependency."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import unittest"},{"line_number":19,"context_line":"from test.unit.common.middleware.helpers import FakeSwift"},{"line_number":20,"context_line":"from swift.common.middleware.s3api.utils import sysmeta_header"},{"line_number":21,"context_line":"from swift.common import swob"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"a96a64b9_136718e5","line":19,"updated":"2023-12-14 04:48:47.000000000","message":"heh, so i wonder if most of these tests should move to mw.test_helpers then","commit_id":"fd00d9380828c16f44c592f472749f45ee52fe65"}],"test/unit/common/middleware/s3api/test_s3api.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":1440,"context_line":"            self.s3api.logger.logger.statsd_client.get_increment_counts())"},{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"    def test_s3api_with_only_s3_token(self):"},{"line_number":1443,"context_line":"        self.swift \u003d FakeSwift(allowed_methods\u003d[\u0027TEST\u0027])"},{"line_number":1444,"context_line":"        self.keystone_auth \u003d KeystoneAuth("},{"line_number":1445,"context_line":"            self.swift, {\u0027operator_roles\u0027: \u0027swift-user\u0027})"},{"line_number":1446,"context_line":"        self.s3_token \u003d S3Token("}],"source_content_type":"text/x-python","patch_set":1,"id":"96f987d4_cbafc256","line":1443,"updated":"2023-12-13 19:03:29.000000000","message":"this test does NOT want to have FakeApp in its pipeline","commit_id":"a27f5721927dd3ed3a80860f80cc0063985018a7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":1470,"context_line":"                             req.environ[\u0027swift.backend_path\u0027])"},{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"    def test_s3api_with_only_s3_token_v3(self):"},{"line_number":1473,"context_line":"        self.swift \u003d FakeSwift(allowed_methods\u003d[\u0027TEST\u0027])"},{"line_number":1474,"context_line":"        self.keystone_auth \u003d KeystoneAuth("},{"line_number":1475,"context_line":"            self.swift, {\u0027operator_roles\u0027: \u0027swift-user\u0027})"},{"line_number":1476,"context_line":"        self.s3_token \u003d S3Token("}],"source_content_type":"text/x-python","patch_set":1,"id":"56c31ca8_2f233dea","line":1473,"updated":"2023-12-13 19:03:29.000000000","message":"ditto","commit_id":"a27f5721927dd3ed3a80860f80cc0063985018a7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":1500,"context_line":"                             req.environ[\u0027swift.backend_path\u0027])"},{"line_number":1501,"context_line":""},{"line_number":1502,"context_line":"    def test_s3api_with_s3_token_and_auth_token(self):"},{"line_number":1503,"context_line":"        self.swift \u003d FakeSwift(allowed_methods\u003d[\u0027TEST\u0027])"},{"line_number":1504,"context_line":"        self.keystone_auth \u003d KeystoneAuth("},{"line_number":1505,"context_line":"            self.swift, {\u0027operator_roles\u0027: \u0027swift-user\u0027})"},{"line_number":1506,"context_line":"        self.auth_token \u003d AuthProtocol("}],"source_content_type":"text/x-python","patch_set":1,"id":"d263e553_4689db5d","line":1503,"updated":"2023-12-13 19:03:29.000000000","message":"ditto","commit_id":"a27f5721927dd3ed3a80860f80cc0063985018a7"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d072463771dff21e1d561f020512659a02db1267","unresolved":true,"context_lines":[{"line_number":1555,"context_line":"                    statsd_client.get_increment_counts())"},{"line_number":1556,"context_line":""},{"line_number":1557,"context_line":"    def test_s3api_with_only_s3_token_in_s3acl(self):"},{"line_number":1558,"context_line":"        self.swift \u003d FakeSwift(allowed_methods\u003d[\u0027TEST\u0027])"},{"line_number":1559,"context_line":"        self.keystone_auth \u003d KeystoneAuth("},{"line_number":1560,"context_line":"            self.swift, {\u0027operator_roles\u0027: \u0027swift-user\u0027})"},{"line_number":1561,"context_line":"        self.s3_token \u003d S3Token("}],"source_content_type":"text/x-python","patch_set":1,"id":"051342f6_0f576743","line":1558,"updated":"2023-12-13 19:03:29.000000000","message":"ditto","commit_id":"a27f5721927dd3ed3a80860f80cc0063985018a7"}]}
