)]}'
{"keystoneclient/tests/utils.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"60856ea0a1c5e91998791d75a69685f77f9c696e","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def assertQueryStringContains(self, **kwargs):"},{"line_number":95,"context_line":"        parts \u003d urlparse.urlparse(self.requests.last_request.url)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # NOTE(blk-u): urlparse.parse_qs will drop parameters that don\u0027t have a"},{"line_number":98,"context_line":"        # value. For example, a URL with \"?nocatalog\" has a qs of {}."},{"line_number":99,"context_line":"        # For easier testing, this method supports verifying a query string"},{"line_number":100,"context_line":"        # like ?nocatalog. Pass an argument like nocatalog\u003dNone. This is"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_51810a49","line":97,"updated":"2015-01-29 12:26:02.000000000","message":"It drops them by default, but it has a parameter \u0027keep_blank_values\u0027 to control it:\nparse_qs(\u0027nocatalog\u0027, keep_blank_values\u003dTrue) \u003d\u003e {\u0027nocatalog\u0027: [\u0027\u0027]}. I think that using it somehow would be more sane.","commit_id":"bf06fc11d5666179588479fb40112d71cd3e63f9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"ce8dbfdff19218b1683e23e2221ea9fb5cb5473a","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def assertQueryStringContains(self, **kwargs):"},{"line_number":95,"context_line":"        parts \u003d urlparse.urlparse(self.requests.last_request.url)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # NOTE(blk-u): urlparse.parse_qs will drop parameters that don\u0027t have a"},{"line_number":98,"context_line":"        # value. For example, a URL with \"?nocatalog\" has a qs of {}."},{"line_number":99,"context_line":"        # For easier testing, this method supports verifying a query string"},{"line_number":100,"context_line":"        # like ?nocatalog. Pass an argument like nocatalog\u003dNone. This is"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa81d914_dda96f91","line":97,"in_reply_to":"fa81d914_51810a49","updated":"2015-01-29 23:47:22.000000000","message":"Done","commit_id":"bf06fc11d5666179588479fb40112d71cd3e63f9"}],"keystoneclient/tests/v3/test_tokens.py":[{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"48ba8071cec21e2e07c7dbdccc85986324c6f0c8","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        access_info \u003d self.client.tokens.validate(token_id)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        parts \u003d urlparse.urlparse(self.requests.last_request.url)"},{"line_number":84,"context_line":"        self.assertEqual(\u0027\u0027, parts.query)"},{"line_number":85,"context_line":"        self.assertTrue(access_info.has_service_catalog())"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_validate_token_nocatalog(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_fd4acf81","line":84,"updated":"2014-12-18 08:26:19.000000000","message":"use self.assertQueryStringIs instead","commit_id":"165531e2179c5188fdd4bfeddc9413ae7926f0a8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"02780224cdaea855e13c742bb5b5377fe979dd30","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        access_info \u003d self.client.tokens.validate(token_id)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        parts \u003d urlparse.urlparse(self.requests.last_request.url)"},{"line_number":84,"context_line":"        self.assertEqual(\u0027\u0027, parts.query)"},{"line_number":85,"context_line":"        self.assertTrue(access_info.has_service_catalog())"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_validate_token_nocatalog(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_67283486","line":84,"in_reply_to":"3a961159_fd4acf81","updated":"2014-12-30 15:45:14.000000000","message":"Done","commit_id":"165531e2179c5188fdd4bfeddc9413ae7926f0a8"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"48ba8071cec21e2e07c7dbdccc85986324c6f0c8","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                                                  include_catalog\u003dFalse)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        parts \u003d urlparse.urlparse(self.requests.last_request.url)"},{"line_number":98,"context_line":"        self.assertEqual(\u0027nocatalog\u0027, parts.query)"},{"line_number":99,"context_line":"        self.assertFalse(access_info.has_service_catalog())"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_7d5edf46","line":98,"updated":"2014-12-18 08:26:19.000000000","message":"use self.assertQueryStringContains instead","commit_id":"165531e2179c5188fdd4bfeddc9413ae7926f0a8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"02780224cdaea855e13c742bb5b5377fe979dd30","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                                                  include_catalog\u003dFalse)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        parts \u003d urlparse.urlparse(self.requests.last_request.url)"},{"line_number":98,"context_line":"        self.assertEqual(\u0027nocatalog\u0027, parts.query)"},{"line_number":99,"context_line":"        self.assertFalse(access_info.has_service_catalog())"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_a7285c34","line":98,"in_reply_to":"3a961159_7d5edf46","updated":"2014-12-30 15:45:14.000000000","message":"Done","commit_id":"165531e2179c5188fdd4bfeddc9413ae7926f0a8"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"4e2f8c3282673974b94a998a0459421fcf763c0a","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        parts \u003d urlparse.urlparse(self.requests.last_request.url)"},{"line_number":98,"context_line":"        self.assertEqual(\u0027nocatalog\u0027, parts.query)"},{"line_number":99,"context_line":"        self.assertFalse(access_info.has_service_catalog())"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_116258ad","line":99,"updated":"2014-12-30 03:55:39.000000000","message":"At the end of this file, we should add this:\n    def load_tests(loader, tests, pattern):\n        return testresources.OptimisingTestSuite(tests)\n\nhttps://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/tests/client_fixtures.py#L43","commit_id":"165531e2179c5188fdd4bfeddc9413ae7926f0a8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"02780224cdaea855e13c742bb5b5377fe979dd30","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        parts \u003d urlparse.urlparse(self.requests.last_request.url)"},{"line_number":98,"context_line":"        self.assertEqual(\u0027nocatalog\u0027, parts.query)"},{"line_number":99,"context_line":"        self.assertFalse(access_info.has_service_catalog())"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_071cd069","line":99,"in_reply_to":"3a961159_116258ad","updated":"2014-12-30 15:45:14.000000000","message":"Done","commit_id":"165531e2179c5188fdd4bfeddc9413ae7926f0a8"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"49cd687d04d72c984bc843877e0d6c56dfeb4d60","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        token_id \u003d uuid.uuid4().hex"},{"line_number":91,"context_line":"        token_ref \u003d self.examples.TOKEN_RESPONSES["},{"line_number":92,"context_line":"            self.examples.v3_UUID_TOKEN_UNSCOPED]"},{"line_number":93,"context_line":"        self.stub_url(\u0027GET\u0027, [\u0027auth\u0027, \u0027tokens\u0027],"},{"line_number":94,"context_line":"                      headers\u003d{\u0027X-Subject-Token\u0027: token_id, }, json\u003dtoken_ref)"},{"line_number":95,"context_line":"        access_info \u003d self.client.tokens.validate(token_id,"},{"line_number":96,"context_line":"                                                  include_catalog\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa81d914_72173aa4","line":93,"updated":"2015-01-28 05:09:38.000000000","message":"shouldn\u0027t the ?nocatalog be part of the (stub) url?","commit_id":"288277caa45ff2feaa92cc59ba403be8ba89ec39"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"88cc3da50ae889543b223eea3b142219a08aff0d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        access_info \u003d self.client.tokens.validate(token_id,"},{"line_number":103,"context_line":"                                                  include_catalog\u003dFalse)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        self.assertQueryStringIs(\u0027nocatalog\u0027)"},{"line_number":106,"context_line":"        self.assertFalse(access_info.has_service_catalog())"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa81d914_5739d3d5","line":105,"updated":"2015-01-30 06:21:44.000000000","message":"nice","commit_id":"5a9498b21e0b0640aa9226981c0c8ff3105f477f"}],"keystoneclient/v3/tokens.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"49cd687d04d72c984bc843877e0d6c56dfeb4d60","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        resp, body \u003d self._client.get(url, headers\u003dheaders)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        access_info \u003d access.AccessInfo.factory(resp\u003dresp, body\u003dbody)"},{"line_number":67,"context_line":"        return access_info"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa81d914_d2d0e6f9","line":66,"updated":"2015-01-28 05:09:38.000000000","message":"could just place return here, instead of access_info","commit_id":"288277caa45ff2feaa92cc59ba403be8ba89ec39"}]}
