)]}'
{"tests/test_catalog.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c9e3aa17970fac386dfb930ab39259c8bf2b4e1","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    def test_endpoint_create_with_missing_adminurl(self):"},{"line_number":65,"context_line":"        req_body, response \u003d self._endpoint_create(expected_status\u003d200,"},{"line_number":66,"context_line":"                                                   missing_param\u003d\u0027adminurl\u0027)"},{"line_number":67,"context_line":"        self.assertEqual(response.status_code, 200)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_endpoint_create_with_missing_internalurl(self):"},{"line_number":70,"context_line":"        req_body, response \u003d self._endpoint_create(expected_status\u003d200,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FUzE%3D","line":67,"updated":"2013-05-14 17:04:48.000000000","message":"should this be comparing to string \u003d \u0027200\u0027 or the integer value?","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"53f169b327bbb869ccfa141dccd6b5b2500d18be","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    def test_endpoint_create_with_missing_adminurl(self):"},{"line_number":65,"context_line":"        req_body, response \u003d self._endpoint_create(expected_status\u003d200,"},{"line_number":66,"context_line":"                                                   missing_param\u003d\u0027adminurl\u0027)"},{"line_number":67,"context_line":"        self.assertEqual(response.status_code, 200)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_endpoint_create_with_missing_internalurl(self):"},{"line_number":70,"context_line":"        req_body, response \u003d self._endpoint_create(expected_status\u003d200,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F3F4%3D","line":67,"in_reply_to":"AAAAOn%2F%2FUCg%3D","updated":"2013-05-21 14:24:41.000000000","message":"Sounds good, thanks for the clarification!","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"181373881ee07cda98a7ebd6c3f29fd03d19d1f8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    def test_endpoint_create_with_missing_adminurl(self):"},{"line_number":65,"context_line":"        req_body, response \u003d self._endpoint_create(expected_status\u003d200,"},{"line_number":66,"context_line":"                                                   missing_param\u003d\u0027adminurl\u0027)"},{"line_number":67,"context_line":"        self.assertEqual(response.status_code, 200)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_endpoint_create_with_missing_internalurl(self):"},{"line_number":70,"context_line":"        req_body, response \u003d self._endpoint_create(expected_status\u003d200,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FUCg%3D","line":67,"in_reply_to":"AAAAOn%2F%2FUzE%3D","updated":"2013-05-14 23:30:38.000000000","message":"In webob status is a string eg \u0027200 OK\u0027 status_code is the integer status code. Preferable to both is I would prefer this to be in an assertStatus or some such test so that it is not so repeated.\n\nActually i don\u0027t think even that matters, i\u0027m pretty sure this will bomb before this because the expected_status will be incorrect.","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c9e3aa17970fac386dfb930ab39259c8bf2b4e1","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def test_endpoint_create_with_missing_internalurl(self):"},{"line_number":70,"context_line":"        req_body, response \u003d self._endpoint_create(expected_status\u003d200,"},{"line_number":71,"context_line":"                                                   missing_param\u003d\u0027internalurl\u0027)"},{"line_number":72,"context_line":"        self.assertEqual(response.status_code, 200)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def test_endpoint_create_with_missing_publicurl(self):"},{"line_number":75,"context_line":"        req_body, response \u003d self._endpoint_create(expected_status\u003d400,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FUzA%3D","line":72,"updated":"2013-05-14 17:04:48.000000000","message":"Same comment here","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"}],"tests/test_content_types.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"42051fa5ef7a14d078ea8ed9d80ccf0540488597","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import uuid"},{"line_number":18,"context_line":"from webtest import TestApp"},{"line_number":19,"context_line":"from webtest import TestRequest"},{"line_number":20,"context_line":"from StringIO import StringIO"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F428%3D","line":18,"updated":"2013-05-20 22:33:02.000000000","message":"should be importing modules, see https://github.com/openstack/keystone/blame/master/HACKING.rst#L65","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"42051fa5ef7a14d078ea8ed9d80ccf0540488597","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        environ[\u0027REQUEST_METHOD\u0027] \u003d str(method)"},{"line_number":101,"context_line":"        environ[\u0027REMOTE_ADDR\u0027] \u003d \u0027localhost\u0027"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        path \u003d str(path)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        if body:"},{"line_number":106,"context_line":"            environ[\u0027wsgi.input\u0027] \u003d StringIO(body)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F42s%3D","line":103,"updated":"2013-05-20 22:33:02.000000000","message":"should handle case where path is None better, or should path default to \u0027/\u0027?","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"42051fa5ef7a14d078ea8ed9d80ccf0540488597","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        request \u003d TestRequest.blank(path, environ)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        if body:"},{"line_number":111,"context_line":"            request.content_length \u003d len(body)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        for k, v in headers.iteritems():"},{"line_number":114,"context_line":"            request.headers[str(k)] \u003d str(v)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F42k%3D","line":111,"updated":"2013-05-20 22:33:02.000000000","message":"suggest consolidate \"if body\" code, so move this up to 106, and move 108 above that.","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"42051fa5ef7a14d078ea8ed9d80ccf0540488597","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            request.headers[str(k)] \u003d str(v)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        response \u003d app.do_request(request, status\u003dexpected_status,"},{"line_number":117,"context_line":"                                  expect_errors\u003dFalse)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        return response"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F41Q%3D","line":117,"updated":"2013-05-20 22:33:02.000000000","message":"isn\u0027t expect_errors\u003dFalse the default? If so, remove the extra argument.","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"42051fa5ef7a14d078ea8ed9d80ccf0540488597","unresolved":false,"context_lines":[{"line_number":874,"context_line":"        xml \u003d r.result"},{"line_number":875,"context_line":"        self.assertEqual(xml.tag, self._tag(\u0027tenants\u0027))"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        self.assertTrue(len(r.result))"},{"line_number":878,"context_line":"        for tenant in r.result.findall(self._tag(\u0027tenant\u0027)):"},{"line_number":879,"context_line":"            self.assertValidTenant(tenant)"},{"line_number":880,"context_line":"            self.assertIn(tenant.get(\u0027enabled\u0027), [\u0027true\u0027, \u0027false\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F40w%3D","line":877,"updated":"2013-05-20 22:33:02.000000000","message":"the length is true?","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"53f169b327bbb869ccfa141dccd6b5b2500d18be","unresolved":false,"context_lines":[{"line_number":874,"context_line":"        xml \u003d r.result"},{"line_number":875,"context_line":"        self.assertEqual(xml.tag, self._tag(\u0027tenants\u0027))"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        self.assertTrue(len(r.result))"},{"line_number":878,"context_line":"        for tenant in r.result.findall(self._tag(\u0027tenant\u0027)):"},{"line_number":879,"context_line":"            self.assertValidTenant(tenant)"},{"line_number":880,"context_line":"            self.assertIn(tenant.get(\u0027enabled\u0027), [\u0027true\u0027, \u0027false\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F3Gk%3D","line":877,"in_reply_to":"AAAAPH%2F%2F40w%3D","updated":"2013-05-21 14:24:41.000000000","message":"This should be treated like: \n\nhttps://review.openstack.org/#/c/29868/\n\nself.assertTrue(len(r.result) \u003e 0 )","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"22ebce581ea75d69087f53dddd3b7e76dbf5d145","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import io"},{"line_number":18,"context_line":"import uuid"},{"line_number":19,"context_line":"import webtest"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from lxml import etree"},{"line_number":22,"context_line":"import nose.exc"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F3Ag%3D","line":19,"updated":"2013-05-21 14:56:19.000000000","message":"webtest belongs with external dependencies (e.g. lxml and nose), not stdlib (see HACKING)","commit_id":"98a6b46f9a0c0c9d1a244a0178cd82f9af2ca699"}],"tests/test_v3.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"42051fa5ef7a14d078ea8ed9d80ccf0540488597","unresolved":false,"context_lines":[{"line_number":2,"context_line":"import uuid"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"from lxml import etree"},{"line_number":5,"context_line":"from webtest import TestApp"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"from keystone import auth"},{"line_number":8,"context_line":"from keystone.common import serializer"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F40I%3D","line":5,"updated":"2013-05-20 22:33:02.000000000","message":"import modules, not module attributes per HACKING.py: https://github.com/openstack/keystone/blame/master/HACKING.rst#L65","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"22ebce581ea75d69087f53dddd3b7e76dbf5d145","unresolved":false,"context_lines":[{"line_number":2,"context_line":"import uuid"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"from lxml import etree"},{"line_number":5,"context_line":"import webtest"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"from keystone import auth"},{"line_number":8,"context_line":"from keystone.common import serializer"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPH%2F%2F3Ac%3D","line":5,"updated":"2013-05-21 14:56:19.000000000","message":"+1","commit_id":"98a6b46f9a0c0c9d1a244a0178cd82f9af2ca699"}],"tests/test_v3_identity.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c9e3aa17970fac386dfb930ab39259c8bf2b4e1","unresolved":false,"context_lines":[{"line_number":616,"context_line":"        #self.delete(member_url)"},{"line_number":617,"context_line":"        #r \u003d self.get(collection_url)"},{"line_number":618,"context_line":"        #self.assertValidRoleListResponse(r, expected_length\u003d0)"},{"line_number":619,"context_line":"        #self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def test_crud_user_domain_role_grants(self):"},{"line_number":622,"context_line":"        collection_url \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FUy0%3D","line":619,"updated":"2013-05-14 17:04:48.000000000","message":"This might need to be taken care of in a separate fix, but would it be worth it to remove the commented out code?","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"53f169b327bbb869ccfa141dccd6b5b2500d18be","unresolved":false,"context_lines":[{"line_number":616,"context_line":"        #self.delete(member_url)"},{"line_number":617,"context_line":"        #r \u003d self.get(collection_url)"},{"line_number":618,"context_line":"        #self.assertValidRoleListResponse(r, expected_length\u003d0)"},{"line_number":619,"context_line":"        #self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def test_crud_user_domain_role_grants(self):"},{"line_number":622,"context_line":"        collection_url \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2F3F8%3D","line":619,"in_reply_to":"AAAAOn%2F%2FUCM%3D","updated":"2013-05-21 14:24:41.000000000","message":"Sounds good, just wanted to make sure someone knew about it. Do you have a link to the cleanup patch?","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"181373881ee07cda98a7ebd6c3f29fd03d19d1f8","unresolved":false,"context_lines":[{"line_number":616,"context_line":"        #self.delete(member_url)"},{"line_number":617,"context_line":"        #r \u003d self.get(collection_url)"},{"line_number":618,"context_line":"        #self.assertValidRoleListResponse(r, expected_length\u003d0)"},{"line_number":619,"context_line":"        #self.assertIn(collection_url, r.result[\u0027links\u0027][\u0027self\u0027])"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"    def test_crud_user_domain_role_grants(self):"},{"line_number":622,"context_line":"        collection_url \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FUCM%3D","line":619,"in_reply_to":"AAAAOn%2F%2FUy0%3D","updated":"2013-05-14 23:30:38.000000000","message":"I have another patch up for debate which is cleanup related. I agree that it should probably be removed however i would like to keep this patch on point.","commit_id":"dfc2b1b8efb4fb19758faa4d12040c3c45d1d007"}]}
