)]}'
{"keystone/tests/unit/core.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7e2293055b8787adb7bfeb45917ebd0bbadeace2","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"def new_policy_ref(**kwargs):"},{"line_number":367,"context_line":"    ref \u003d new_ref()"},{"line_number":368,"context_line":"    ref[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":369,"context_line":"    ref[\u0027blob\u0027] \u003d json.dumps({\u0027data\u0027: uuid.uuid4().hex, })"},{"line_number":370,"context_line":"    ref[\u0027type\u0027] \u003d uuid.uuid4().hex"},{"line_number":371,"context_line":"    ref.update(kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_a200ec02","line":368,"updated":"2015-11-29 14:33:14.000000000","message":"new_ref() already returns an entity with an ID; however I think the above is the one that needs to be modified to \"ref \u003d dict()\"","commit_id":"c47b50b8b6698b79ce13024c269778d8c58948eb"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"0da92bd1033ee01b2db0671751d7c43e2b59781e","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"def new_policy_ref(**kwargs):"},{"line_number":367,"context_line":"    ref \u003d new_ref()"},{"line_number":368,"context_line":"    ref[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":369,"context_line":"    ref[\u0027blob\u0027] \u003d json.dumps({\u0027data\u0027: uuid.uuid4().hex, })"},{"line_number":370,"context_line":"    ref[\u0027type\u0027] \u003d uuid.uuid4().hex"},{"line_number":371,"context_line":"    ref.update(kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_dd4a4983","line":368,"in_reply_to":"9a8ffd7b_a200ec02","updated":"2015-12-04 22:51:54.000000000","message":"yeah, don\u0027t  do this...done by new_ref","commit_id":"c47b50b8b6698b79ce13024c269778d8c58948eb"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"3eef05ca4cd3ca26e8d2b9168789c526e493ba9b","unresolved":false,"context_lines":[{"line_number":366,"context_line":"def new_policy_ref(**kwargs):"},{"line_number":367,"context_line":"    ref \u003d new_ref()"},{"line_number":368,"context_line":"    ref[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":369,"context_line":"    ref[\u0027blob\u0027] \u003d json.dumps({\u0027data\u0027: uuid.uuid4().hex, })"},{"line_number":370,"context_line":"    ref[\u0027type\u0027] \u003d uuid.uuid4().hex"},{"line_number":371,"context_line":"    ref.update(kwargs)"},{"line_number":372,"context_line":"    return ref"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_b7d10e25","line":369,"updated":"2015-11-19 19:55:59.000000000","message":"should we have a note here on why this needs to be encoded to \u0027utf-8\u0027?","commit_id":"c47b50b8b6698b79ce13024c269778d8c58948eb"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7e2293055b8787adb7bfeb45917ebd0bbadeace2","unresolved":false,"context_lines":[{"line_number":366,"context_line":"def new_policy_ref(**kwargs):"},{"line_number":367,"context_line":"    ref \u003d new_ref()"},{"line_number":368,"context_line":"    ref[\u0027id\u0027] \u003d uuid.uuid4().hex"},{"line_number":369,"context_line":"    ref[\u0027blob\u0027] \u003d json.dumps({\u0027data\u0027: uuid.uuid4().hex, })"},{"line_number":370,"context_line":"    ref[\u0027type\u0027] \u003d uuid.uuid4().hex"},{"line_number":371,"context_line":"    ref.update(kwargs)"},{"line_number":372,"context_line":"    return ref"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_6d05150f","line":369,"in_reply_to":"ba8a016a_b7d10e25","updated":"2015-11-29 14:33:14.000000000","message":"++","commit_id":"c47b50b8b6698b79ce13024c269778d8c58948eb"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"bf461097fc60e484e383d3a375f5b3bb5fabb954","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"def new_policy_ref(**kwargs):"},{"line_number":367,"context_line":"    ref \u003d new_ref()"},{"line_number":368,"context_line":"    # store JSON data as the blob to mimic real world usage"},{"line_number":369,"context_line":"    ref[\u0027blob\u0027] \u003d json.dumps({\u0027data\u0027: uuid.uuid4().hex, })"},{"line_number":370,"context_line":"    ref[\u0027type\u0027] \u003d uuid.uuid4().hex"},{"line_number":371,"context_line":"    ref.update(kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_dda2fefc","line":368,"updated":"2015-12-07 20:41:57.000000000","message":"Actually I just looked at our implementation of JsonBlob....won\u0027t this just be a dictionary in the real world and our type object with encode/decode?","commit_id":"3ee1c7b80e40a65ed3431aac4c00007f4168117c"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"c2e33d9230d3ad2ad156965d1d31c4acadb65d80","unresolved":false,"context_lines":[{"line_number":365,"context_line":""},{"line_number":366,"context_line":"def new_policy_ref(**kwargs):"},{"line_number":367,"context_line":"    ref \u003d new_ref()"},{"line_number":368,"context_line":"    # store JSON data as the blob to mimic real world usage"},{"line_number":369,"context_line":"    ref[\u0027blob\u0027] \u003d json.dumps({\u0027data\u0027: uuid.uuid4().hex, })"},{"line_number":370,"context_line":"    ref[\u0027type\u0027] \u003d uuid.uuid4().hex"},{"line_number":371,"context_line":"    ref.update(kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_5118321e","line":368,"in_reply_to":"7a740942_dda2fefc","updated":"2015-12-07 23:59:28.000000000","message":"I need to adjust my comment to \"serialized JSON data\".","commit_id":"3ee1c7b80e40a65ed3431aac4c00007f4168117c"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"e13d4d8907b9c97105178bf9ef442dffac51a73d","unresolved":false,"context_lines":[{"line_number":363,"context_line":"    return ref"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":""},{"line_number":366,"context_line":"def new_policy_ref(**kwargs):"},{"line_number":367,"context_line":"    ref \u003d new_ref()"},{"line_number":368,"context_line":"    # Store serialized JSON data as the blob to mimic real world usage."},{"line_number":369,"context_line":"    ref[\u0027blob\u0027] \u003d json.dumps({\u0027data\u0027: uuid.uuid4().hex, })"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_dafcf673","line":366,"updated":"2015-12-09 03:53:16.000000000","message":"looks like this one needs rebase too","commit_id":"df8d8fa5024c2e15c728c816487c237e4fe6065e"}],"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2ddf7c362bec6d090afbb1cfce77a6d132433763","unresolved":false,"context_lines":[{"line_number":5491,"context_line":"            \u0027id\u0027: uuid.uuid4().hex,"},{"line_number":5492,"context_line":"            \u0027policy\u0027: uuid.uuid4().hex,"},{"line_number":5493,"context_line":"            \u0027type\u0027: uuid.uuid4().hex,"},{"line_number":5494,"context_line":"            \u0027endpoint_id\u0027: uuid.uuid4().hex,"},{"line_number":5495,"context_line":"        }"},{"line_number":5496,"context_line":""},{"line_number":5497,"context_line":"    def assertEqualPolicies(self, a, b):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_8d1f5207","side":"PARENT","line":5494,"updated":"2015-11-19 01:49:49.000000000","message":"huh... uh... i think \u0027endpoint_id\u0027 and \u0027policy\u0027 are not actually being used, and are being passed in incorrectly, i\u0027d take the time now to remove them from here and line 5499-5500. god i hate our tests sometimes.\n\nyou can do this in this patch or another, if you do it in this patch update the commit msg to say so","commit_id":"baf76a387cd2439334e858def4a17f6845327710"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4e2b110e062e94872ec1461a1c5ae9f11f57562d","unresolved":false,"context_lines":[{"line_number":5486,"context_line":""},{"line_number":5487,"context_line":""},{"line_number":5488,"context_line":"class PolicyTests(object):"},{"line_number":5489,"context_line":"    def _new_policy_ref(self):"},{"line_number":5490,"context_line":"        return unit.new_policy_ref()"},{"line_number":5491,"context_line":""},{"line_number":5492,"context_line":"    def assertEqualPolicies(self, a, b):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_b1527365","line":5489,"updated":"2015-11-19 23:03:47.000000000","message":"future patch: replace _new_policy_ref with unit.new_policy_ref()","commit_id":"c47b50b8b6698b79ce13024c269778d8c58948eb"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4e2b110e062e94872ec1461a1c5ae9f11f57562d","unresolved":false,"context_lines":[{"line_number":5489,"context_line":"    def _new_policy_ref(self):"},{"line_number":5490,"context_line":"        return unit.new_policy_ref()"},{"line_number":5491,"context_line":""},{"line_number":5492,"context_line":"    def assertEqualPolicies(self, a, b):"},{"line_number":5493,"context_line":"        self.assertDictEqual(a, b)"},{"line_number":5494,"context_line":""},{"line_number":5495,"context_line":"    def test_create(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_d1cff726","line":5492,"updated":"2015-11-19 23:03:47.000000000","message":"future patch idea: replace assertEqualPolicies with assertDictEqual","commit_id":"c47b50b8b6698b79ce13024c269778d8c58948eb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0fe479bb016a492efccfb252796743ad93fd8a23","unresolved":false,"context_lines":[{"line_number":5489,"context_line":"    def _new_policy_ref(self):"},{"line_number":5490,"context_line":"        return unit.new_policy_ref()"},{"line_number":5491,"context_line":""},{"line_number":5492,"context_line":"    def assertEqualPolicies(self, a, b):"},{"line_number":5493,"context_line":"        self.assertDictEqual(a, b)"},{"line_number":5494,"context_line":""},{"line_number":5495,"context_line":"    def test_create(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_e7425868","line":5492,"in_reply_to":"9a8ffd7b_c764f4e6","updated":"2015-11-30 17:34:53.000000000","message":"Done, https://review.openstack.org/#/c/251482/","commit_id":"c47b50b8b6698b79ce13024c269778d8c58948eb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c3baa3fe724a96139bd174c7d23deef8d66884e5","unresolved":false,"context_lines":[{"line_number":5489,"context_line":"    def _new_policy_ref(self):"},{"line_number":5490,"context_line":"        return unit.new_policy_ref()"},{"line_number":5491,"context_line":""},{"line_number":5492,"context_line":"    def assertEqualPolicies(self, a, b):"},{"line_number":5493,"context_line":"        self.assertDictEqual(a, b)"},{"line_number":5494,"context_line":""},{"line_number":5495,"context_line":"    def test_create(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_c764f4e6","line":5492,"in_reply_to":"ba8a016a_d1cff726","updated":"2015-11-30 17:23:06.000000000","message":"++","commit_id":"c47b50b8b6698b79ce13024c269778d8c58948eb"}],"keystone/tests/unit/test_backend_endpoint_policy.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1e13f5591b146c56db19784d30d3d01ef7e7d1d4","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        parent_region_id \u003d None"},{"line_number":69,"context_line":"        for i in range(3):"},{"line_number":70,"context_line":"            policy \u003d unit.new_policy_ref(blob\u003d{\u0027data\u0027: uuid.uuid4().hex})"},{"line_number":71,"context_line":"            self.policy.append(self.policy_api.create_policy(policy[\u0027id\u0027],"},{"line_number":72,"context_line":"                                                             policy))"},{"line_number":73,"context_line":"            service \u003d unit.new_service_ref()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_829df10b","line":70,"updated":"2015-12-07 20:38:21.000000000","message":"Your comment in keystone.tests.unit.core implies that this is wrong because it\u0027s not JSON encoded.","commit_id":"3ee1c7b80e40a65ed3431aac4c00007f4168117c"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"c2e33d9230d3ad2ad156965d1d31c4acadb65d80","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        parent_region_id \u003d None"},{"line_number":69,"context_line":"        for i in range(3):"},{"line_number":70,"context_line":"            policy \u003d unit.new_policy_ref(blob\u003d{\u0027data\u0027: uuid.uuid4().hex})"},{"line_number":71,"context_line":"            self.policy.append(self.policy_api.create_policy(policy[\u0027id\u0027],"},{"line_number":72,"context_line":"                                                             policy))"},{"line_number":73,"context_line":"            service \u003d unit.new_service_ref()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_91fbfac0","line":70,"in_reply_to":"7a740942_829df10b","updated":"2015-12-07 23:59:28.000000000","message":"Good catch. 1) there is no need to still pass this blob. 2) based on my tests the policy enforcer expects the blob to contain a string which behind the scenes is expected to be a serialized JSON instance. Remove the JSON encoding in core.py and run the tests to see what I mean.","commit_id":"3ee1c7b80e40a65ed3431aac4c00007f4168117c"}],"keystone/tests/unit/test_v3_policy.py":[{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"836f322c2891b38612f6e472bb0401f7c49d836b","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_update_policy(self):"},{"line_number":55,"context_line":"        \"\"\"Call ``PATCH /policies/{policy_id}``.\"\"\""},{"line_number":56,"context_line":"        self.policy[\u0027blob\u0027] \u003d uuid.uuid4().hex"},{"line_number":57,"context_line":"        r \u003d self.patch("},{"line_number":58,"context_line":"            \u0027/policies/%(policy_id)s\u0027 % {"},{"line_number":59,"context_line":"                \u0027policy_id\u0027: self.policy_id},"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_62245fc4","line":56,"updated":"2015-11-19 13:37:10.000000000","message":"isn\u0027t the blob a dict? if so, could use this patch to fix it here","commit_id":"d9467f58cc1f1ad45b84c412698d69827a563053"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"3eef05ca4cd3ca26e8d2b9168789c526e493ba9b","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_update_policy(self):"},{"line_number":53,"context_line":"        \"\"\"Call ``PATCH /policies/{policy_id}``.\"\"\""},{"line_number":54,"context_line":"        self.policy[\u0027blob\u0027] \u003d json.dumps({\u0027data\u0027: uuid.uuid4().hex, })"},{"line_number":55,"context_line":"        r \u003d self.patch("},{"line_number":56,"context_line":"            \u0027/policies/%(policy_id)s\u0027 % {\u0027policy_id\u0027: self.policy_id},"},{"line_number":57,"context_line":"            body\u003d{\u0027policy\u0027: self.policy})"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_1a284132","line":54,"updated":"2015-11-19 19:55:59.000000000","message":"should we have a note here on why this needs to be encoded to \u0027utf-8\u0027?","commit_id":"c47b50b8b6698b79ce13024c269778d8c58948eb"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4e2b110e062e94872ec1461a1c5ae9f11f57562d","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_update_policy(self):"},{"line_number":53,"context_line":"        \"\"\"Call ``PATCH /policies/{policy_id}``.\"\"\""},{"line_number":54,"context_line":"        self.policy[\u0027blob\u0027] \u003d json.dumps({\u0027data\u0027: uuid.uuid4().hex, })"},{"line_number":55,"context_line":"        r \u003d self.patch("},{"line_number":56,"context_line":"            \u0027/policies/%(policy_id)s\u0027 % {\u0027policy_id\u0027: self.policy_id},"},{"line_number":57,"context_line":"            body\u003d{\u0027policy\u0027: self.policy})"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_f1e9db7f","line":54,"in_reply_to":"ba8a016a_1a284132","updated":"2015-11-19 23:03:47.000000000","message":"nothings being encoded here tom, we\u0027re just dumping out JSON data into a string, which is how the API expects the \u0027blob\u0027 to look like.\n\nwe were previously passing in uuid random strings, but this makes the test a bit more \u0027real\u0027","commit_id":"c47b50b8b6698b79ce13024c269778d8c58948eb"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b2be9b91f09ca72d187c92874acdd34694495fd1","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def test_get_policy(self):"},{"line_number":47,"context_line":"        \"\"\"Call ``GET /policies/{policy_id}``.\"\"\""},{"line_number":48,"context_line":"        r \u003d self.get("},{"line_number":49,"context_line":"            \u0027/policies/%(policy_id)s\u0027 % {\u0027policy_id\u0027: self.policy_id})"},{"line_number":50,"context_line":"        self.assertValidPolicyResponse(r, self.policy)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_update_policy(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_1ca3a1b3","line":49,"updated":"2015-12-08 00:33:01.000000000","message":"unrelated change is unrelated","commit_id":"df8d8fa5024c2e15c728c816487c237e4fe6065e"}]}
