)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"34af7ab19d8052f277ae928e98602fb3ec657ad7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Project Scoped Token."},{"line_number":11,"context_line":"The issue is project admin in default policy file"},{"line_number":12,"context_line":"(policy.v3cloudsample.json) does not have access to get details"},{"line_number":13,"context_line":"of his project. Due to this, keystone assumes that the project"},{"line_number":14,"context_line":"does not exist, and tries to get the project listing which again"},{"line_number":15,"context_line":"fails."},{"line_number":16,"context_line":"This change updates the default policy file to let project"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a740942_50f5d080","line":13,"updated":"2015-12-06 04:52:52.000000000","message":"According to the bug report, it just because project admin cannot access his project, \u0027keystone assumes that the project does not exist\u0027 is not accurate.","commit_id":"bb19143ed7823d92a033eedb4e87219bc236e7b3"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"125fe70cea9242a38e550bb677d072aef7ee1999","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Project Scoped Token."},{"line_number":11,"context_line":"The issue is project admin in default policy file"},{"line_number":12,"context_line":"(policy.v3cloudsample.json) does not have access to get details"},{"line_number":13,"context_line":"of his project. Due to this, keystone assumes that the project"},{"line_number":14,"context_line":"does not exist, and tries to get the project listing which again"},{"line_number":15,"context_line":"fails."},{"line_number":16,"context_line":"This change updates the default policy file to let project"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a740942_b612b707","line":13,"in_reply_to":"7a740942_50f5d080","updated":"2015-12-07 19:04:21.000000000","message":"it was stated so as openstack client fails saying \"Could not find resource project_a\", reworded the entire commit message.","commit_id":"bb19143ed7823d92a033eedb4e87219bc236e7b3"}],"etc/policy.v3cloudsample.json":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"2395e4346929d95a6ebb2f888f1f690a08f8b71a","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    \"admin_and_matching_target_project_domain_id\": \"rule:admin_required and domain_id:%(target.project.domain_id)s\","},{"line_number":39,"context_line":"    \"admin_and_matching_project_domain_id\": \"rule:admin_required and domain_id:%(project.domain_id)s\","},{"line_number":40,"context_line":"    \"admin_and_matching_target_project_id\": \"rule:admin_required and project_id:%(target.project.id)s\","},{"line_number":41,"context_line":"    \"identity:get_project\": \"rule:cloud_admin or rule:admin_and_matching_target_project_domain_id or rule:admin_and_matching_target_project_id\","},{"line_number":42,"context_line":"    \"identity:list_projects\": \"rule:cloud_admin or rule:admin_and_matching_domain_id\","},{"line_number":43,"context_line":"    \"identity:list_user_projects\": \"rule:owner or rule:admin_and_matching_domain_id\","}],"source_content_type":"application/json","patch_set":2,"id":"ba8a016a_59a2c94c","line":40,"updated":"2015-11-23 22:44:19.000000000","message":"I didn\u0027t get why the previous rule \u0027admin_and_matching_target_project_domain_id\u0027 was not enough.\n\nSince, if I have admin role in a project X and this project is the same that my token was scoped, I think that policy will enforce the \u0027get_project\u0027 action (since the domain_id in the context is the same as the project_domain_id and I\u0027m admin) Am I missing something?","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"553d5da5fa870c4410c4c7de57ebe6920532451e","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    \"admin_and_matching_target_project_domain_id\": \"rule:admin_required and domain_id:%(target.project.domain_id)s\","},{"line_number":39,"context_line":"    \"admin_and_matching_project_domain_id\": \"rule:admin_required and domain_id:%(project.domain_id)s\","},{"line_number":40,"context_line":"    \"admin_and_matching_target_project_id\": \"rule:admin_required and project_id:%(target.project.id)s\","},{"line_number":41,"context_line":"    \"identity:get_project\": \"rule:cloud_admin or rule:admin_and_matching_target_project_domain_id or rule:admin_and_matching_target_project_id\","},{"line_number":42,"context_line":"    \"identity:list_projects\": \"rule:cloud_admin or rule:admin_and_matching_domain_id\","},{"line_number":43,"context_line":"    \"identity:list_user_projects\": \"rule:owner or rule:admin_and_matching_domain_id\","}],"source_content_type":"application/json","patch_set":2,"id":"9a8ffd7b_638df330","line":40,"in_reply_to":"9a8ffd7b_f5d77021","updated":"2015-11-24 17:57:52.000000000","message":"hum.. Got it, thanks henry!","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c754c8ff4d5dca5ba9d6b35124f1c2172e106f40","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    \"admin_and_matching_target_project_domain_id\": \"rule:admin_required and domain_id:%(target.project.domain_id)s\","},{"line_number":39,"context_line":"    \"admin_and_matching_project_domain_id\": \"rule:admin_required and domain_id:%(project.domain_id)s\","},{"line_number":40,"context_line":"    \"admin_and_matching_target_project_id\": \"rule:admin_required and project_id:%(target.project.id)s\","},{"line_number":41,"context_line":"    \"identity:get_project\": \"rule:cloud_admin or rule:admin_and_matching_target_project_domain_id or rule:admin_and_matching_target_project_id\","},{"line_number":42,"context_line":"    \"identity:list_projects\": \"rule:cloud_admin or rule:admin_and_matching_domain_id\","},{"line_number":43,"context_line":"    \"identity:list_user_projects\": \"rule:owner or rule:admin_and_matching_domain_id\","}],"source_content_type":"application/json","patch_set":2,"id":"9a8ffd7b_f5d77021","line":40,"in_reply_to":"ba8a016a_59a2c94c","updated":"2015-11-24 11:41:17.000000000","message":"I think the issue is that to get domain_id to match you must have a domain scoped token....but you should be able to do a get_project with a project scoped token.","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"}],"keystone/tests/unit/test_v3_protection.py":[{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"981bc9879ebdc331d507ada77904634d2f8f740d","unresolved":false,"context_lines":[{"line_number":645,"context_line":"        self.assignment_api.create_grant(self.role[\u0027id\u0027],"},{"line_number":646,"context_line":"                                         user_id\u003dself.just_a_user[\u0027id\u0027],"},{"line_number":647,"context_line":"                                         project_id\u003dself.projectA[\u0027id\u0027])"},{"line_number":648,"context_line":"        self.projectB \u003d self.new_project_ref(domain_id\u003dself.domainA[\u0027id\u0027])"},{"line_number":649,"context_line":"        self.resource_api.create_project(self.projectB[\u0027id\u0027], self.projectB)"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    def _stati(self, expected_status):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_ae7bd27a","line":648,"updated":"2015-11-24 13:42:36.000000000","message":"you don\u0027t need to add this project to all the tests if you\u0027re going to use only in your test. Complementing what Henry said, I don\u0027t think you should be creating this extra project and so you don\u0027t need to modify the other project name to ProjectA","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"597f924e11179069b0e18e7ef7f576c20da5870e","unresolved":false,"context_lines":[{"line_number":645,"context_line":"        self.assignment_api.create_grant(self.role[\u0027id\u0027],"},{"line_number":646,"context_line":"                                         user_id\u003dself.just_a_user[\u0027id\u0027],"},{"line_number":647,"context_line":"                                         project_id\u003dself.projectA[\u0027id\u0027])"},{"line_number":648,"context_line":"        self.projectB \u003d self.new_project_ref(domain_id\u003dself.domainA[\u0027id\u0027])"},{"line_number":649,"context_line":"        self.resource_api.create_project(self.projectB[\u0027id\u0027], self.projectB)"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    def _stati(self, expected_status):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_d9928c57","line":648,"in_reply_to":"9a8ffd7b_ae7bd27a","updated":"2015-11-24 18:33:23.000000000","message":"Creating a new project and renaming project to projectA is needed for one test below and will be useful for any future test cases.","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"20052d48c669a50c2402d557123101ab22660de4","unresolved":false,"context_lines":[{"line_number":645,"context_line":"        self.assignment_api.create_grant(self.role[\u0027id\u0027],"},{"line_number":646,"context_line":"                                         user_id\u003dself.just_a_user[\u0027id\u0027],"},{"line_number":647,"context_line":"                                         project_id\u003dself.projectA[\u0027id\u0027])"},{"line_number":648,"context_line":"        self.projectB \u003d self.new_project_ref(domain_id\u003dself.domainA[\u0027id\u0027])"},{"line_number":649,"context_line":"        self.resource_api.create_project(self.projectB[\u0027id\u0027], self.projectB)"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    def _stati(self, expected_status):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_b00fa42d","line":648,"in_reply_to":"9a8ffd7b_d9928c57","updated":"2015-11-30 18:31:13.000000000","message":"Undo renaming of \u0027project\u0027 to \u0027projectA\u0027","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"4ec268a58989dc88ea4b9b4f80144b39bd422b99","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"                    headers\u003d{\u0027X-Subject-Token\u0027: user_token})"},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"    def test_project_admin_get_project(self):"},{"line_number":1271,"context_line":"        self.auth \u003d self.build_authentication_request("},{"line_number":1272,"context_line":"            user_id\u003dself.just_a_user[\u0027id\u0027],"},{"line_number":1273,"context_line":"            password\u003dself.just_a_user[\u0027password\u0027],"},{"line_number":1274,"context_line":"            project_id\u003dself.projectA[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_be96093c","line":1271,"updated":"2015-11-26 18:48:52.000000000","message":"(nit) No need to use self.auth, just use self.auth as it is from the test setup, or use another var. So in this case it could simply be auth\n\nThis comment also applies to the introduced test methods below.","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"20052d48c669a50c2402d557123101ab22660de4","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"                    headers\u003d{\u0027X-Subject-Token\u0027: user_token})"},{"line_number":1269,"context_line":""},{"line_number":1270,"context_line":"    def test_project_admin_get_project(self):"},{"line_number":1271,"context_line":"        self.auth \u003d self.build_authentication_request("},{"line_number":1272,"context_line":"            user_id\u003dself.just_a_user[\u0027id\u0027],"},{"line_number":1273,"context_line":"            password\u003dself.just_a_user[\u0027password\u0027],"},{"line_number":1274,"context_line":"            project_id\u003dself.projectA[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_d01ee85e","line":1271,"in_reply_to":"9a8ffd7b_be96093c","updated":"2015-11-30 18:31:13.000000000","message":"Done","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c754c8ff4d5dca5ba9d6b35124f1c2172e106f40","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"        self.assertEqual(jsonutils.loads(resp.body)[\u0027project\u0027][\u0027id\u0027],"},{"line_number":1288,"context_line":"                         self.projectA[\u0027id\u0027])"},{"line_number":1289,"context_line":""},{"line_number":1290,"context_line":"    def test_project_admin_list_assignments_of_project(self):"},{"line_number":1291,"context_line":"        self.auth \u003d self.build_authentication_request("},{"line_number":1292,"context_line":"            user_id\u003dself.project_admin_user[\u0027id\u0027],"},{"line_number":1293,"context_line":"            password\u003dself.project_admin_user[\u0027password\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_35d8981d","line":1290,"updated":"2015-11-24 11:41:17.000000000","message":"While these next methods are great tests, are they directly relevant to this change?  If they are not, maybe make them a follow on patch?","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"597f924e11179069b0e18e7ef7f576c20da5870e","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"        self.assertEqual(jsonutils.loads(resp.body)[\u0027project\u0027][\u0027id\u0027],"},{"line_number":1288,"context_line":"                         self.projectA[\u0027id\u0027])"},{"line_number":1289,"context_line":""},{"line_number":1290,"context_line":"    def test_project_admin_list_assignments_of_project(self):"},{"line_number":1291,"context_line":"        self.auth \u003d self.build_authentication_request("},{"line_number":1292,"context_line":"            user_id\u003dself.project_admin_user[\u0027id\u0027],"},{"line_number":1293,"context_line":"            password\u003dself.project_admin_user[\u0027password\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_991724ed","line":1290,"in_reply_to":"9a8ffd7b_35d8981d","updated":"2015-11-24 18:33:23.000000000","message":"These tests are related to this change, demonstrating that project admin can list role assignments of his project which is failing without changing policy file.","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"4ec268a58989dc88ea4b9b4f80144b39bd422b99","unresolved":false,"context_lines":[{"line_number":1298,"context_line":"        r \u003d self.get(collection_url, auth\u003dself.auth)"},{"line_number":1299,"context_line":"        self.assertValidRoleAssignmentListResponse("},{"line_number":1300,"context_line":"            r, expected_length\u003d2, resource_url\u003dcollection_url)"},{"line_number":1301,"context_line":""},{"line_number":1302,"context_line":"        project_admin_entity \u003d self.build_role_assignment_entity("},{"line_number":1303,"context_line":"            project_id\u003dself.projectA[\u0027id\u0027],"},{"line_number":1304,"context_line":"            user_id\u003dself.project_admin_user[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_5e1b5dca","line":1301,"updated":"2015-11-26 18:48:52.000000000","message":"So this is well tested at this point. However the two calls below demonstrate that it is also possible to combine filters.\n\nI think a comment here would make it easier to understand.","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"20052d48c669a50c2402d557123101ab22660de4","unresolved":false,"context_lines":[{"line_number":1298,"context_line":"        r \u003d self.get(collection_url, auth\u003dself.auth)"},{"line_number":1299,"context_line":"        self.assertValidRoleAssignmentListResponse("},{"line_number":1300,"context_line":"            r, expected_length\u003d2, resource_url\u003dcollection_url)"},{"line_number":1301,"context_line":""},{"line_number":1302,"context_line":"        project_admin_entity \u003d self.build_role_assignment_entity("},{"line_number":1303,"context_line":"            project_id\u003dself.projectA[\u0027id\u0027],"},{"line_number":1304,"context_line":"            user_id\u003dself.project_admin_user[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_3051740f","line":1301,"in_reply_to":"9a8ffd7b_5e1b5dca","updated":"2015-11-30 18:31:13.000000000","message":"Done","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"4ec268a58989dc88ea4b9b4f80144b39bd422b99","unresolved":false,"context_lines":[{"line_number":1313,"context_line":"        self.assertRoleAssignmentInListResponse(r, project_admin_entity)"},{"line_number":1314,"context_line":"        self.assertRoleAssignmentInListResponse(r, project_user_entity)"},{"line_number":1315,"context_line":""},{"line_number":1316,"context_line":"    def test_project_admin_list_assignments_of_another_project_failed(self):"},{"line_number":1317,"context_line":"        self.auth \u003d self.build_authentication_request("},{"line_number":1318,"context_line":"            user_id\u003dself.project_admin_user[\u0027id\u0027],"},{"line_number":1319,"context_line":"            password\u003dself.project_admin_user[\u0027password\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_7e22e153","line":1316,"updated":"2015-11-26 18:48:52.000000000","message":"Create another project (projectB in your current change) only within this test, as it is the only one using it.","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"20052d48c669a50c2402d557123101ab22660de4","unresolved":false,"context_lines":[{"line_number":1313,"context_line":"        self.assertRoleAssignmentInListResponse(r, project_admin_entity)"},{"line_number":1314,"context_line":"        self.assertRoleAssignmentInListResponse(r, project_user_entity)"},{"line_number":1315,"context_line":""},{"line_number":1316,"context_line":"    def test_project_admin_list_assignments_of_another_project_failed(self):"},{"line_number":1317,"context_line":"        self.auth \u003d self.build_authentication_request("},{"line_number":1318,"context_line":"            user_id\u003dself.project_admin_user[\u0027id\u0027],"},{"line_number":1319,"context_line":"            password\u003dself.project_admin_user[\u0027password\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_f05a0c2a","line":1316,"in_reply_to":"9a8ffd7b_7e22e153","updated":"2015-11-30 18:31:13.000000000","message":"Done","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"4ec268a58989dc88ea4b9b4f80144b39bd422b99","unresolved":false,"context_lines":[{"line_number":1322,"context_line":"        collection_url \u003d self.build_role_assignment_query_url("},{"line_number":1323,"context_line":"            project_id\u003dself.projectB[\u0027id\u0027])"},{"line_number":1324,"context_line":"        self.get(collection_url, auth\u003dself.auth,"},{"line_number":1325,"context_line":"                 expected_status\u003dhttp_client.FORBIDDEN)"},{"line_number":1326,"context_line":""},{"line_number":1327,"context_line":"    def test_project_user_list_assignments_of_project_failed(self):"},{"line_number":1328,"context_line":"        self.auth \u003d self.build_authentication_request("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_9ef7858a","line":1325,"updated":"2015-11-26 18:48:52.000000000","message":"This is a great test that demonstrates resource isolation!","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"20052d48c669a50c2402d557123101ab22660de4","unresolved":false,"context_lines":[{"line_number":1322,"context_line":"        collection_url \u003d self.build_role_assignment_query_url("},{"line_number":1323,"context_line":"            project_id\u003dself.projectB[\u0027id\u0027])"},{"line_number":1324,"context_line":"        self.get(collection_url, auth\u003dself.auth,"},{"line_number":1325,"context_line":"                 expected_status\u003dhttp_client.FORBIDDEN)"},{"line_number":1326,"context_line":""},{"line_number":1327,"context_line":"    def test_project_user_list_assignments_of_project_failed(self):"},{"line_number":1328,"context_line":"        self.auth \u003d self.build_authentication_request("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_7047fc4b","line":1325,"in_reply_to":"9a8ffd7b_9ef7858a","updated":"2015-11-30 18:31:13.000000000","message":"Thanks Sam !!!","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"4ec268a58989dc88ea4b9b4f80144b39bd422b99","unresolved":false,"context_lines":[{"line_number":1324,"context_line":"        self.get(collection_url, auth\u003dself.auth,"},{"line_number":1325,"context_line":"                 expected_status\u003dhttp_client.FORBIDDEN)"},{"line_number":1326,"context_line":""},{"line_number":1327,"context_line":"    def test_project_user_list_assignments_of_project_failed(self):"},{"line_number":1328,"context_line":"        self.auth \u003d self.build_authentication_request("},{"line_number":1329,"context_line":"            user_id\u003dself.just_a_user[\u0027id\u0027],"},{"line_number":1330,"context_line":"            password\u003dself.just_a_user[\u0027password\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_fe1331b6","line":1327,"updated":"2015-11-26 18:48:52.000000000","message":"Perhaps replacing user by nonadmin (or non_admin) would make this clearer.","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"20052d48c669a50c2402d557123101ab22660de4","unresolved":false,"context_lines":[{"line_number":1324,"context_line":"        self.get(collection_url, auth\u003dself.auth,"},{"line_number":1325,"context_line":"                 expected_status\u003dhttp_client.FORBIDDEN)"},{"line_number":1326,"context_line":""},{"line_number":1327,"context_line":"    def test_project_user_list_assignments_of_project_failed(self):"},{"line_number":1328,"context_line":"        self.auth \u003d self.build_authentication_request("},{"line_number":1329,"context_line":"            user_id\u003dself.just_a_user[\u0027id\u0027],"},{"line_number":1330,"context_line":"            password\u003dself.just_a_user[\u0027password\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_d0a348ff","line":1327,"in_reply_to":"9a8ffd7b_fe1331b6","updated":"2015-11-30 18:31:13.000000000","message":"Done","commit_id":"0083641608a7f3b3e768b6f784fb9979a56f0f7d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5a2812114b2151d26bedeeb2fd10fe6b5e3bf116","unresolved":false,"context_lines":[{"line_number":1324,"context_line":"        collection_url \u003d self.build_role_assignment_query_url("},{"line_number":1325,"context_line":"            project_id\u003dprojectB[\u0027id\u0027])"},{"line_number":1326,"context_line":"        self.get(collection_url, auth\u003dadmin_auth,"},{"line_number":1327,"context_line":"                 expected_status\u003dhttp_client.FORBIDDEN)"},{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"    def test_project_non_admin_list_assignments_of_project_failed(self):"},{"line_number":1330,"context_line":"        user_auth \u003d self.build_authentication_request("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_7a86d214","line":1327,"updated":"2015-12-01 12:01:37.000000000","message":"(nit) I\u0027d use exception.ForbiddenAction.code as you did in L1275, for consistency. Or change what\u0027s there to http_client.FORBIDDEN","commit_id":"470d8adccbec1762054352c2965b919b7a11b76e"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"3b963fc11c530ca455c66ca2d02aa9a61ad066e5","unresolved":false,"context_lines":[{"line_number":1324,"context_line":"        collection_url \u003d self.build_role_assignment_query_url("},{"line_number":1325,"context_line":"            project_id\u003dprojectB[\u0027id\u0027])"},{"line_number":1326,"context_line":"        self.get(collection_url, auth\u003dadmin_auth,"},{"line_number":1327,"context_line":"                 expected_status\u003dhttp_client.FORBIDDEN)"},{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"    def test_project_non_admin_list_assignments_of_project_failed(self):"},{"line_number":1330,"context_line":"        user_auth \u003d self.build_authentication_request("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_0c98941a","line":1327,"in_reply_to":"9a8ffd7b_7a86d214","updated":"2015-12-01 20:34:08.000000000","message":"Done","commit_id":"470d8adccbec1762054352c2965b919b7a11b76e"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5a2812114b2151d26bedeeb2fd10fe6b5e3bf116","unresolved":false,"context_lines":[{"line_number":1335,"context_line":"        collection_url \u003d self.build_role_assignment_query_url("},{"line_number":1336,"context_line":"            project_id\u003dself.project[\u0027id\u0027])"},{"line_number":1337,"context_line":"        self.get(collection_url, auth\u003duser_auth,"},{"line_number":1338,"context_line":"                 expected_status\u003dhttp_client.FORBIDDEN)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_fa72c248","line":1338,"updated":"2015-12-01 12:01:37.000000000","message":"ditto","commit_id":"470d8adccbec1762054352c2965b919b7a11b76e"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"3b963fc11c530ca455c66ca2d02aa9a61ad066e5","unresolved":false,"context_lines":[{"line_number":1335,"context_line":"        collection_url \u003d self.build_role_assignment_query_url("},{"line_number":1336,"context_line":"            project_id\u003dself.project[\u0027id\u0027])"},{"line_number":1337,"context_line":"        self.get(collection_url, auth\u003duser_auth,"},{"line_number":1338,"context_line":"                 expected_status\u003dhttp_client.FORBIDDEN)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_ac9e2805","line":1338,"in_reply_to":"9a8ffd7b_fa72c248","updated":"2015-12-01 20:34:08.000000000","message":"Done","commit_id":"470d8adccbec1762054352c2965b919b7a11b76e"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"34af7ab19d8052f277ae928e98602fb3ec657ad7","unresolved":false,"context_lines":[{"line_number":1283,"context_line":""},{"line_number":1284,"context_line":"        resp \u003d self.get(\u0027/projects/%s\u0027 % self.project[\u0027id\u0027], auth\u003dadmin_auth)"},{"line_number":1285,"context_line":"        self.assertEqual(jsonutils.loads(resp.body)[\u0027project\u0027][\u0027id\u0027],"},{"line_number":1286,"context_line":"                         self.project[\u0027id\u0027])"},{"line_number":1287,"context_line":""},{"line_number":1288,"context_line":"    def test_project_admin_list_assignments_of_project(self):"},{"line_number":1289,"context_line":"        admin_auth \u003d self.build_authentication_request("}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_30e924e7","line":1286,"updated":"2015-12-06 04:52:52.000000000","message":"nits:\n switch the order, the signature of assertEqual is:\n     def assertEqual(self, expected, observed, message\u003d\u0027\u0027):\n         ...","commit_id":"bb19143ed7823d92a033eedb4e87219bc236e7b3"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"125fe70cea9242a38e550bb677d072aef7ee1999","unresolved":false,"context_lines":[{"line_number":1283,"context_line":""},{"line_number":1284,"context_line":"        resp \u003d self.get(\u0027/projects/%s\u0027 % self.project[\u0027id\u0027], auth\u003dadmin_auth)"},{"line_number":1285,"context_line":"        self.assertEqual(jsonutils.loads(resp.body)[\u0027project\u0027][\u0027id\u0027],"},{"line_number":1286,"context_line":"                         self.project[\u0027id\u0027])"},{"line_number":1287,"context_line":""},{"line_number":1288,"context_line":"    def test_project_admin_list_assignments_of_project(self):"},{"line_number":1289,"context_line":"        admin_auth \u003d self.build_authentication_request("}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_76968f94","line":1286,"in_reply_to":"7a740942_30e924e7","updated":"2015-12-07 19:04:21.000000000","message":"Done","commit_id":"bb19143ed7823d92a033eedb4e87219bc236e7b3"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"34af7ab19d8052f277ae928e98602fb3ec657ad7","unresolved":false,"context_lines":[{"line_number":1289,"context_line":"        admin_auth \u003d self.build_authentication_request("},{"line_number":1290,"context_line":"            user_id\u003dself.project_admin_user[\u0027id\u0027],"},{"line_number":1291,"context_line":"            password\u003dself.project_admin_user[\u0027password\u0027],"},{"line_number":1292,"context_line":"            project_id\u003dself.project[\u0027id\u0027])"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"        collection_url \u003d self.build_role_assignment_query_url("},{"line_number":1295,"context_line":"            project_id\u003dself.project[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_302844e2","line":1292,"updated":"2015-12-06 04:52:52.000000000","message":"I agree that at least this testcase should fail when revert the change in the policy.v3cloudsample.json, the testcase should prove the given changes is correct.\n\nThe new rule you add is \"rule:admin_required and project_id:%(target.project.id)\", so for what reason we must run the testcase as a project admin on a project with its name?\n\nIf this is impossible, can you pls do some refactoring about that and depend this one on that?","commit_id":"bb19143ed7823d92a033eedb4e87219bc236e7b3"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"125fe70cea9242a38e550bb677d072aef7ee1999","unresolved":false,"context_lines":[{"line_number":1289,"context_line":"        admin_auth \u003d self.build_authentication_request("},{"line_number":1290,"context_line":"            user_id\u003dself.project_admin_user[\u0027id\u0027],"},{"line_number":1291,"context_line":"            password\u003dself.project_admin_user[\u0027password\u0027],"},{"line_number":1292,"context_line":"            project_id\u003dself.project[\u0027id\u0027])"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"        collection_url \u003d self.build_role_assignment_query_url("},{"line_number":1295,"context_line":"            project_id\u003dself.project[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_d63983a5","line":1292,"in_reply_to":"7a740942_302844e2","updated":"2015-12-07 19:04:21.000000000","message":"Dave, I am moving these tests cases to a separate patch.","commit_id":"bb19143ed7823d92a033eedb4e87219bc236e7b3"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"34af7ab19d8052f277ae928e98602fb3ec657ad7","unresolved":false,"context_lines":[{"line_number":1298,"context_line":"            r, expected_length\u003d2, resource_url\u003dcollection_url)"},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":"        # Building role assignment entity with project_id, user_id,"},{"line_number":1301,"context_line":"        # and role_id to compare it with role assingment listing"},{"line_number":1302,"context_line":"        project_admin_entity \u003d self.build_role_assignment_entity("},{"line_number":1303,"context_line":"            project_id\u003dself.project[\u0027id\u0027],"},{"line_number":1304,"context_line":"            user_id\u003dself.project_admin_user[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_50c71045","line":1301,"updated":"2015-12-06 04:52:52.000000000","message":"nits: s/assingment/assignment","commit_id":"bb19143ed7823d92a033eedb4e87219bc236e7b3"},{"author":{"_account_id":10281,"name":"Priti Desai","email":"pdesai@us.ibm.com","username":"priti_desai"},"change_message_id":"125fe70cea9242a38e550bb677d072aef7ee1999","unresolved":false,"context_lines":[{"line_number":1298,"context_line":"            r, expected_length\u003d2, resource_url\u003dcollection_url)"},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":"        # Building role assignment entity with project_id, user_id,"},{"line_number":1301,"context_line":"        # and role_id to compare it with role assingment listing"},{"line_number":1302,"context_line":"        project_admin_entity \u003d self.build_role_assignment_entity("},{"line_number":1303,"context_line":"            project_id\u003dself.project[\u0027id\u0027],"},{"line_number":1304,"context_line":"            user_id\u003dself.project_admin_user[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a740942_b644f71a","line":1301,"in_reply_to":"7a740942_50c71045","updated":"2015-12-07 19:04:21.000000000","message":"Ditto, moving these tests cases to a separate patch.","commit_id":"bb19143ed7823d92a033eedb4e87219bc236e7b3"}]}
