)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0f8983d834d6acc155eba527881961c52da00860","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add tests to OS-INHERIT extension"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding tests for inherited roles in Keystone token"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I289793cbe4002f83b031b88e969cb4a285926606"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baada198_78ebb211","line":10,"updated":"2014-08-04 21:48:26.000000000","message":"is there a bug for this?","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"}],"keystone/tests/test_v3_identity.py":[{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"5f589f3f8a22446ced432a1b7e18819244c376c9","unresolved":false,"context_lines":[{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"    def test_token_comes_with_user_inherited_domain_roles(self):"},{"line_number":1443,"context_line":"        role_list \u003d []"},{"line_number":1444,"context_line":"        for _ in range(4):"},{"line_number":1445,"context_line":"            role \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":1446,"context_line":"            self.assignment_api.create_role(role[\u0027id\u0027], role)"},{"line_number":1447,"context_line":"            role_list.append(role)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_80019e06","line":1444,"updated":"2014-07-16 22:18:45.000000000","message":"Why 4 and not 5?  Please have a meaning definition for 4, so it will be easier for reviewers to understand.","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"a9f23714db2f36228d599d6bbcb941f409eb348d","unresolved":false,"context_lines":[{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"    def test_token_comes_with_user_inherited_domain_roles(self):"},{"line_number":1443,"context_line":"        role_list \u003d []"},{"line_number":1444,"context_line":"        for _ in range(4):"},{"line_number":1445,"context_line":"            role \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":1446,"context_line":"            self.assignment_api.create_role(role[\u0027id\u0027], role)"},{"line_number":1447,"context_line":"            role_list.append(role)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_a9dccd47","line":1444,"in_reply_to":"baada198_80019e06","updated":"2014-07-17 00:33:07.000000000","message":"+1\n\nDon\u0027t use magic numbers.","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"},{"author":{"_account_id":10765,"name":"Andre Aranha","email":"afaranha@lsd.ufcg.edu.br","username":"afaranha"},"change_message_id":"f3b65abde906743103acfc46d7b7f7e89b9f3a45","unresolved":false,"context_lines":[{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"    def test_token_comes_with_user_inherited_domain_roles(self):"},{"line_number":1443,"context_line":"        role_list \u003d []"},{"line_number":1444,"context_line":"        for _ in range(4):"},{"line_number":1445,"context_line":"            role \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":1446,"context_line":"            self.assignment_api.create_role(role[\u0027id\u0027], role)"},{"line_number":1447,"context_line":"            role_list.append(role)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_e85db4ed","line":1444,"in_reply_to":"baada198_a9dccd47","updated":"2014-07-17 19:59:42.000000000","message":"Done","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0f8983d834d6acc155eba527881961c52da00860","unresolved":false,"context_lines":[{"line_number":1442,"context_line":"    def test_token_comes_with_user_inherited_domain_roles(self):"},{"line_number":1443,"context_line":"        role_list \u003d []"},{"line_number":1444,"context_line":"        for _ in range(4):"},{"line_number":1445,"context_line":"            role \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":1446,"context_line":"            self.assignment_api.create_role(role[\u0027id\u0027], role)"},{"line_number":1447,"context_line":"            role_list.append(role)"},{"line_number":1448,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_782e5243","line":1445,"updated":"2014-08-04 21:48:26.000000000","message":"you can use the new_role_ref from test_v3.py here as well and pop out the `description` and `enabled` attributes.","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0f8983d834d6acc155eba527881961c52da00860","unresolved":false,"context_lines":[{"line_number":1449,"context_line":"        domain \u003d self.new_domain_ref()"},{"line_number":1450,"context_line":"        self.assignment_api.create_domain(domain[\u0027id\u0027], domain)"},{"line_number":1451,"context_line":""},{"line_number":1452,"context_line":"        user1 \u003d self.new_user_ref("},{"line_number":1453,"context_line":"            domain_id\u003ddomain[\u0027id\u0027])"},{"line_number":1454,"context_line":"        password \u003d user1[\u0027password\u0027]"},{"line_number":1455,"context_line":"        user1 \u003d self.identity_api.create_user(user1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_38be9ace","line":1452,"updated":"2014-08-04 21:48:26.000000000","message":"suggest renaming this to user1_ref: \n\n    user1_ref \u003d self.new_user_ref(domain_id\u003ddomain[\u0027id\u0027])\n    expected_password \u003d user1_ref[\u0027password\u0027]\n    user1 \u003d self.identity_api.create_user(user1_ref)","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0f8983d834d6acc155eba527881961c52da00860","unresolved":false,"context_lines":[{"line_number":1460,"context_line":"        self.assignment_api.create_project(project1[\u0027id\u0027], project1)"},{"line_number":1461,"context_line":"        project2 \u003d self.new_project_ref("},{"line_number":1462,"context_line":"            domain_id\u003ddomain[\u0027id\u0027])"},{"line_number":1463,"context_line":"        self.assignment_api.create_project(project2[\u0027id\u0027], project2)"},{"line_number":1464,"context_line":""},{"line_number":1465,"context_line":"        # Add some roles to the project"},{"line_number":1466,"context_line":"        self.assignment_api.add_role_to_user_and_project("}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_588eee27","line":1463,"updated":"2014-08-04 21:48:26.000000000","message":"same comments apply here. I suggest renaming \u0027project1\u0027 to \u0027project1_ref\u0027 and then storing the return value of self.assignment_api.create_project in project1 or something like that. Then when you do your assertions, you doing it with the actual value returned from what you\u0027re testing.","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"54fb2046514b19dd980f7f08adad56cf6f9480b6","unresolved":false,"context_lines":[{"line_number":1467,"context_line":"            user1[\u0027id\u0027], project1[\u0027id\u0027], role_list[0][\u0027id\u0027])"},{"line_number":1468,"context_line":"        self.assignment_api.add_role_to_user_and_project("},{"line_number":1469,"context_line":"            user1[\u0027id\u0027], project1[\u0027id\u0027], role_list[1][\u0027id\u0027])"},{"line_number":1470,"context_line":"        # ..and one on a different project as a spoiler"},{"line_number":1471,"context_line":"        self.assignment_api.add_role_to_user_and_project("},{"line_number":1472,"context_line":"            user1[\u0027id\u0027], project2[\u0027id\u0027], role_list[2][\u0027id\u0027])"},{"line_number":1473,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_7c1b581c","line":1470,"updated":"2014-07-16 21:04:17.000000000","message":"well it\u0027s not really a spoiler (I think you copy and pasted this comment from the backend tests).  In this test this is a role that should only arrive via inheritance.  If you want a spoiler role, add a role4 to project 2 that isn\u0027t inherited.","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"},{"author":{"_account_id":10765,"name":"Andre Aranha","email":"afaranha@lsd.ufcg.edu.br","username":"afaranha"},"change_message_id":"0e20cec705418f1780bb242cef6b27b8a1935014","unresolved":false,"context_lines":[{"line_number":1467,"context_line":"            user1[\u0027id\u0027], project1[\u0027id\u0027], role_list[0][\u0027id\u0027])"},{"line_number":1468,"context_line":"        self.assignment_api.add_role_to_user_and_project("},{"line_number":1469,"context_line":"            user1[\u0027id\u0027], project1[\u0027id\u0027], role_list[1][\u0027id\u0027])"},{"line_number":1470,"context_line":"        # ..and one on a different project as a spoiler"},{"line_number":1471,"context_line":"        self.assignment_api.add_role_to_user_and_project("},{"line_number":1472,"context_line":"            user1[\u0027id\u0027], project2[\u0027id\u0027], role_list[2][\u0027id\u0027])"},{"line_number":1473,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_9c910cf4","line":1470,"in_reply_to":"baada198_7c1b581c","updated":"2014-07-16 21:14:51.000000000","message":"Yes, we adapted this test from the one in backends.\nI\u0027m not sure what spoiler here means (since it was approved in the other test we just leave it like this) but role2 are not inherited, it\u0027s only used here to be assigned to project2, I think it\u0027ll be the same as creating a role4 to it.","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4d3e74e9d377459b9e5c1e6e92d797d6e7a8b8bb","unresolved":false,"context_lines":[{"line_number":1467,"context_line":"            user1[\u0027id\u0027], project1[\u0027id\u0027], role_list[0][\u0027id\u0027])"},{"line_number":1468,"context_line":"        self.assignment_api.add_role_to_user_and_project("},{"line_number":1469,"context_line":"            user1[\u0027id\u0027], project1[\u0027id\u0027], role_list[1][\u0027id\u0027])"},{"line_number":1470,"context_line":"        # ..and one on a different project as a spoiler"},{"line_number":1471,"context_line":"        self.assignment_api.add_role_to_user_and_project("},{"line_number":1472,"context_line":"            user1[\u0027id\u0027], project2[\u0027id\u0027], role_list[2][\u0027id\u0027])"},{"line_number":1473,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_b2ed17ba","line":1470,"in_reply_to":"baada198_9c910cf4","updated":"2014-07-16 22:06:11.000000000","message":"Ah, sorry, yes, I get it (hmm, and I wrote the original test!!!!)...please ignore my comment.","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"4d3e74e9d377459b9e5c1e6e92d797d6e7a8b8bb","unresolved":false,"context_lines":[{"line_number":1495,"context_line":"        entities \u003d r.result.get(\u0027token\u0027).get(\u0027roles\u0027)"},{"line_number":1496,"context_line":"        self.assertEqual(3, len(entities))"},{"line_number":1497,"context_line":"        for entity in entities:"},{"line_number":1498,"context_line":"            self.assertIn(entity, role_list)"},{"line_number":1499,"context_line":""},{"line_number":1500,"context_line":"    def test_crud_user_inherited_domain_role_grants(self):"},{"line_number":1501,"context_line":"        role_list \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_f215cf9b","line":1498,"updated":"2014-07-16 22:06:11.000000000","message":"If you wanted to be complete you would test that role_list[2] is not in entities","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"},{"author":{"_account_id":10765,"name":"Andre Aranha","email":"afaranha@lsd.ufcg.edu.br","username":"afaranha"},"change_message_id":"f3b65abde906743103acfc46d7b7f7e89b9f3a45","unresolved":false,"context_lines":[{"line_number":1495,"context_line":"        entities \u003d r.result.get(\u0027token\u0027).get(\u0027roles\u0027)"},{"line_number":1496,"context_line":"        self.assertEqual(3, len(entities))"},{"line_number":1497,"context_line":"        for entity in entities:"},{"line_number":1498,"context_line":"            self.assertIn(entity, role_list)"},{"line_number":1499,"context_line":""},{"line_number":1500,"context_line":"    def test_crud_user_inherited_domain_role_grants(self):"},{"line_number":1501,"context_line":"        role_list \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_083ae897","line":1498,"in_reply_to":"baada198_f215cf9b","updated":"2014-07-17 19:59:42.000000000","message":"Gonna improve this","commit_id":"8c419aac2074678e1c953eea75cfa2056e5cb77b"}]}
