)]}'
{"keystone/tests/unit/test_middleware.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a184685a99947f6b5a918f4cb62f4bcef2182546","unresolved":false,"context_lines":[{"line_number":33,"context_line":"CONF \u003d cfg.CONF"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class MiddlewareRequestTests(unit.TestCase):"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    MIDDLEWARE_CLASS \u003d None  # override this"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_4b575a02","line":36,"updated":"2015-11-23 18:45:29.000000000","message":"nit: I think we could rename this to not include \u0027Tests\u0027 in the class name. Only because this module doesn\u0027t actually have any tests in it, it\u0027s more of a utility method to do setup things.\n\n\n    class MiddlewareRequestsSetup(unit.TestCase): \n\n\nor something similar?","commit_id":"d2572d5c4341be2e5e450178e083c6303587624b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a184685a99947f6b5a918f4cb62f4bcef2182546","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    MIDDLEWARE_CLASS \u003d None  # override this"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def _application(self):"},{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"},{"line_number":44,"context_line":"                            (\u0027Content-Length\u0027, \u00274\u0027)]"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_6b71fea7","line":41,"updated":"2015-11-23 18:45:29.000000000","message":"nit: use punctuation at the end of doc-strings to be consistent with the other doc-strings in the module.","commit_id":"d2572d5c4341be2e5e450178e083c6303587624b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d279a9fa3c3cd0b2b6d35f63a92a35feaf40b0a2","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def test_context_already_exists(self):"},{"line_number":276,"context_line":"        req \u003d make_request()"},{"line_number":277,"context_line":"        token_id \u003d uuid.uuid4().hex"},{"line_number":278,"context_line":"        req.environ[authorization.AUTH_CONTEXT_ENV] \u003d {\u0027token_id\u0027: token_id}"},{"line_number":279,"context_line":"        context \u003d self._create_context(request\u003dreq)"},{"line_number":280,"context_line":"        self.assertEqual(token_id, context[\u0027token_id\u0027])"},{"line_number":281,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_fa2e47a4","side":"PARENT","line":278,"updated":"2015-12-10 08:16:08.000000000","message":"where\u0027d this guy go in the new test?","commit_id":"79f141b81afa877fbe23efe7af4d78b9802ab113"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"c00020dfda7e22bcf527e1c6bba71df576b036bc","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def test_context_already_exists(self):"},{"line_number":276,"context_line":"        req \u003d make_request()"},{"line_number":277,"context_line":"        token_id \u003d uuid.uuid4().hex"},{"line_number":278,"context_line":"        req.environ[authorization.AUTH_CONTEXT_ENV] \u003d {\u0027token_id\u0027: token_id}"},{"line_number":279,"context_line":"        context \u003d self._create_context(request\u003dreq)"},{"line_number":280,"context_line":"        self.assertEqual(token_id, context[\u0027token_id\u0027])"},{"line_number":281,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_1cc70597","side":"PARENT","line":278,"in_reply_to":"7a740942_fa2e47a4","updated":"2015-12-13 22:20:05.000000000","message":"the webtest linter ensures that environment variables are supposed to just be strings. doesn\u0027t change the content of the test.","commit_id":"79f141b81afa877fbe23efe7af4d78b9802ab113"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a22bd4d710e41b61353d8c41577cf10a0aa586fe","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class MiddlewareRequestTestBase(unit.TestCase):"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    MIDDLEWARE_CLASS \u003d None  # override this"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def _application(self):"},{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_c76bb8b5","line":38,"updated":"2016-01-06 20:10:00.000000000","message":"A \"when\" and \"why\" would be appreciated here.","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"},{"line_number":44,"context_line":"                            (\u0027Content-Length\u0027, \u00274\u0027)]"},{"line_number":45,"context_line":"            start_response(\u0027200 OK\u0027, resp_headers)"},{"line_number":46,"context_line":"            return [\u0027body\u0027]"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_87e62042","line":44,"updated":"2016-01-06 20:33:41.000000000","message":"rather than use a magic number, reference a variable. Where does 4 come from?","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        return app"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def _app_response(self, app, headers\u003dNone, method\u003d\u0027get\u0027, path\u003d\u0027/\u0027,"},{"line_number":51,"context_line":"                      **kwargs):"},{"line_number":52,"context_line":"        \"\"\"Given a wsgi application wrap it in webtest and call it.\"\"\""},{"line_number":53,"context_line":"        return getattr(webtest.TestApp(app), method)(path,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_07af907d","line":50,"range":{"start_line":50,"start_character":9,"end_line":50,"end_character":21},"updated":"2016-01-06 20:33:41.000000000","message":"suggest rename to _generate_app_response. method names should be verbs.","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                                     headers\u003dheaders or {},"},{"line_number":55,"context_line":"                                                     **kwargs)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _middleware_failure(self, exc, *args, **kwargs):"},{"line_number":58,"context_line":"        \"\"\"Assert that an exception is being thrown from process_request.\"\"\""},{"line_number":59,"context_line":"        # NOTE(jamielennox): This is a little ugly. We need to call the webtest"},{"line_number":60,"context_line":"        # framework so that the correct RequestClass object is created for when"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_a7bec4ab","line":57,"updated":"2016-01-06 20:33:41.000000000","message":"suggest rename to _assert_failure . method names should be verbs.","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # see the response object and not the actual exception that is thrown"},{"line_number":63,"context_line":"        # by process_request. To get around this we subclass process_request"},{"line_number":64,"context_line":"        # with something that checks for the right type of exception being"},{"line_number":65,"context_line":"        # thrown so we can test the middle of the request process."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        class _Failing(self.MIDDLEWARE_CLASS):"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_67c0cc50","line":65,"updated":"2016-01-06 20:33:41.000000000","message":"There should be a TODO to change the tests so that our end-to-end tests don\u0027t check that an exception was raised and check the response instead.","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a22bd4d710e41b61353d8c41577cf10a0aa586fe","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"            _called \u003d False"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"            def process_request(i_self, *i_args, **i_kwargs):"},{"line_number":72,"context_line":"                e \u003d self.assertRaises(exc,"},{"line_number":73,"context_line":"                                      super(_Failing, i_self).process_request,"},{"line_number":74,"context_line":"                                      *i_args, **i_kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_c7a658ad","line":71,"updated":"2016-01-06 20:10:00.000000000","message":"The i_* convention really threw me off. Talked to Stanek in IRC and we assume this is supposed to convey \"inner/inline class\" variables that would otherwise stomp on _middleware_failure(self, ..., *args, **kwargs) ?\n\nEither way, inline comment for future generations!","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                i_self._called \u003d True"},{"line_number":76,"context_line":"                raise e"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # by default the returned status when an uncaught exception is thrown"},{"line_number":79,"context_line":"        # for validation or caught errors this will likely be 400"},{"line_number":80,"context_line":"        kwargs.setdefault(\u0027status\u0027, 500)"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_07aa3085","line":78,"range":{"start_line":78,"start_character":71,"end_line":78,"end_character":77},"updated":"2016-01-06 20:33:41.000000000","message":"raised\n\nalso, add a . since this is confusing.","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # by default the returned status when an uncaught exception is thrown"},{"line_number":79,"context_line":"        # for validation or caught errors this will likely be 400"},{"line_number":80,"context_line":"        kwargs.setdefault(\u0027status\u0027, 500)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        app \u003d _Failing(self._application())"},{"line_number":83,"context_line":"        resp \u003d self._app_response(app, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_e77a7c23","line":80,"updated":"2016-01-06 20:33:41.000000000","message":"http_client has constants for 500, etc.","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.assertTrue(app._called)"},{"line_number":85,"context_line":"        return resp"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def _middleware_response(self, *args, **kwargs):"},{"line_number":88,"context_line":"        \"\"\"Wrap a middleware around a sample application and call it.\"\"\""},{"line_number":89,"context_line":"        return self._app_response(self.MIDDLEWARE_CLASS(self._application()),"},{"line_number":90,"context_line":"                                  *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_2737344e","line":87,"range":{"start_line":87,"start_character":9,"end_line":87,"end_character":28},"updated":"2016-01-06 20:33:41.000000000","message":"_generate_middleware_response","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        return self._app_response(self.MIDDLEWARE_CLASS(self._application()),"},{"line_number":90,"context_line":"                                  *args, **kwargs)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _middleware_request(self, *args, **kwargs):"},{"line_number":93,"context_line":"        \"\"\"The request object from which a successful middleware was called.\"\"\""},{"line_number":94,"context_line":"        return self._middleware_response(*args, **kwargs).request"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_070b107e","line":92,"updated":"2016-01-06 20:33:41.000000000","message":"name should be a verb.","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                                  *args, **kwargs)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _middleware_request(self, *args, **kwargs):"},{"line_number":93,"context_line":"        \"\"\"The request object from which a successful middleware was called.\"\"\""},{"line_number":94,"context_line":"        return self._middleware_response(*args, **kwargs).request"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_47158899","line":93,"range":{"start_line":93,"start_character":54,"end_line":93,"end_character":64},"updated":"2016-01-06 20:33:41.000000000","message":"what\u0027s a successful middleware?","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def test_request_with_params(self):"},{"line_number":137,"context_line":"        headers \u003d {\u0027Content-Type\u0027: \u0027application/json\u0027}"},{"line_number":138,"context_line":"        req \u003d self._middleware_request(params\u003d\u0027{\"arg1\": \"one\", \"arg2\": [\"a\"]}\u0027,"},{"line_number":139,"context_line":"                                       headers\u003dheaders,"},{"line_number":140,"context_line":"                                       method\u003d\u0027post\u0027)"},{"line_number":141,"context_line":"        self.assertEqual({\"arg1\": \"one\", \"arg2\": [\"a\"]},"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_b2a7e4a5","line":138,"updated":"2016-01-06 20:33:41.000000000","message":"suggest use post_json.","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        self.assertIsNone(context)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def test_no_tokenless_attributes_request(self):"},{"line_number":312,"context_line":"        req \u003d self._middleware_request(path\u003d\u0027/auth/tokens\u0027, method\u003d\u0027post\u0027)"},{"line_number":313,"context_line":"        context \u003d req.environ.get(authorization.AUTH_CONTEXT_ENV)"},{"line_number":314,"context_line":"        self.assertIsNone(context)"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_72a72cbd","line":312,"updated":"2016-01-06 20:33:41.000000000","message":"why does this have path\u003d\u0027/auth/tokens\u0027? The original version didn\u0027t do it.","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e79a65dfdbf8813992dec543348b1b2550bc0d7c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyrigh500t 2012 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_5bdc3246","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":14},"updated":"2016-01-08 03:56:46.000000000","message":"Copyrigh500t?","commit_id":"1c5fa36c0caa43c43bc523604d34bfbe708401bc"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3a6e344c502e0986d5b0a5f78462735a598b5e1a","unresolved":false,"context_lines":[{"line_number":313,"context_line":"        :param request: HTTP request"},{"line_number":314,"context_line":"        :param mapping_ref: A mapping in JSON structure will be setup in the"},{"line_number":315,"context_line":"            backend DB for mapping a user or a group."},{"line_number":316,"context_line":"        :param exception_expected: Sets to True when an exception is expected"},{"line_number":317,"context_line":"            to raised based on the given arguments."},{"line_number":318,"context_line":"        :returns: context an auth context contains user and role information"},{"line_number":319,"context_line":"        :rtype: dict"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_ef5d3549","line":316,"range":{"start_line":316,"start_character":35,"end_line":316,"end_character":39},"updated":"2016-01-07 23:32:36.000000000","message":"Set","commit_id":"1c5fa36c0caa43c43bc523604d34bfbe708401bc"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a282c8b8f67b90f0c3c07d318f01bc561a4e1c1f","unresolved":false,"context_lines":[{"line_number":313,"context_line":"        :param request: HTTP request"},{"line_number":314,"context_line":"        :param mapping_ref: A mapping in JSON structure will be setup in the"},{"line_number":315,"context_line":"            backend DB for mapping a user or a group."},{"line_number":316,"context_line":"        :param exception_expected: Sets to True when an exception is expected"},{"line_number":317,"context_line":"            to raised based on the given arguments."},{"line_number":318,"context_line":"        :returns: context an auth context contains user and role information"},{"line_number":319,"context_line":"        :rtype: dict"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_1e41c839","line":316,"range":{"start_line":316,"start_character":35,"end_line":316,"end_character":39},"in_reply_to":"fa69d971_ef5d3549","updated":"2016-01-08 04:02:16.000000000","message":"these are all unrelated","commit_id":"1c5fa36c0caa43c43bc523604d34bfbe708401bc"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3a6e344c502e0986d5b0a5f78462735a598b5e1a","unresolved":false,"context_lines":[{"line_number":314,"context_line":"        :param mapping_ref: A mapping in JSON structure will be setup in the"},{"line_number":315,"context_line":"            backend DB for mapping a user or a group."},{"line_number":316,"context_line":"        :param exception_expected: Sets to True when an exception is expected"},{"line_number":317,"context_line":"            to raised based on the given arguments."},{"line_number":318,"context_line":"        :returns: context an auth context contains user and role information"},{"line_number":319,"context_line":"        :rtype: dict"},{"line_number":320,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_0f5be955","line":317,"range":{"start_line":317,"start_character":12,"end_line":317,"end_character":21},"updated":"2016-01-07 23:32:36.000000000","message":"to be raised","commit_id":"1c5fa36c0caa43c43bc523604d34bfbe708401bc"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3a6e344c502e0986d5b0a5f78462735a598b5e1a","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            backend DB for mapping a user or a group."},{"line_number":316,"context_line":"        :param exception_expected: Sets to True when an exception is expected"},{"line_number":317,"context_line":"            to raised based on the given arguments."},{"line_number":318,"context_line":"        :returns: context an auth context contains user and role information"},{"line_number":319,"context_line":"        :rtype: dict"},{"line_number":320,"context_line":"        \"\"\""},{"line_number":321,"context_line":"        if mapping_ref:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_4f3fa1d6","line":318,"range":{"start_line":318,"start_character":18,"end_line":318,"end_character":50},"updated":"2016-01-07 23:32:36.000000000","message":"-\u003e an auth context that contains","commit_id":"1c5fa36c0caa43c43bc523604d34bfbe708401bc"}],"keystone/tests/unit/test_v3.py":[{"author":{"_account_id":11434,"name":"werner mendizabal","email":"nonameentername@gmail.com","username":"nonameentername"},"change_message_id":"67bffb8c85695c6d15c025f00d9971086fb17a4d","unresolved":false,"context_lines":[{"line_number":1178,"context_line":"        # test to make sure AuthContextMiddleware does not attempt to build"},{"line_number":1179,"context_line":"        # auth context if the incoming auth token is the special admin token"},{"line_number":1180,"context_line":"        req \u003d self._middleware_request(CONF.admin_token)"},{"line_number":1181,"context_line":"        d \u003d req.environ.get(authorization.AUTH_CONTEXT_ENV)"},{"line_number":1182,"context_line":"        self.assertDictEqual(d, {})"},{"line_number":1183,"context_line":""},{"line_number":1184,"context_line":"    def test_unscoped_token_auth_context(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_8ba6e9bf","line":1181,"updated":"2015-11-24 19:22:21.000000000","message":"This variable is not descriptive.  Maybe rename \u0027d\u0027 to auth_context?","commit_id":"3ecbec1a38486acc41b4b28249fe3ce487eece4a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6704ba34a76786f1d0d4cf21f75d1bb215c9ffca","unresolved":false,"context_lines":[{"line_number":1127,"context_line":""},{"line_number":1128,"context_line":"        def application(environ, start_response):"},{"line_number":1129,"context_line":"            headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"},{"line_number":1130,"context_line":"                       (\u0027Content-Length\u0027, \u00274\u0027)]"},{"line_number":1131,"context_line":"            start_response(\u0027200 OK\u0027, headers)"},{"line_number":1132,"context_line":"            return [\u0027body\u0027]"},{"line_number":1133,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_d257f855","line":1130,"updated":"2016-01-06 20:33:41.000000000","message":"it\u0027s not obvious where the \"4\" magic number is coming from.","commit_id":"720f0ab70637de88180322b8148d567d56e67036"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a22bd4d710e41b61353d8c41577cf10a0aa586fe","unresolved":false,"context_lines":[{"line_number":1129,"context_line":"            headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"},{"line_number":1130,"context_line":"                       (\u0027Content-Length\u0027, \u00274\u0027)]"},{"line_number":1131,"context_line":"            start_response(\u0027200 OK\u0027, headers)"},{"line_number":1132,"context_line":"            return [\u0027body\u0027]"},{"line_number":1133,"context_line":""},{"line_number":1134,"context_line":"        app \u003d webtest.TestApp(middleware.AuthContextMiddleware(application),"},{"line_number":1135,"context_line":"                              extra_environ\u003dextra_environ)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_a717a443","line":1132,"updated":"2016-01-06 20:10:00.000000000","message":"if quacks like wsgi...","commit_id":"720f0ab70637de88180322b8148d567d56e67036"}]}
