)]}'
{"tempest/api/identity/admin/test_roles.py":[{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"b5843ab00439d6a3f60d147d39ebb1c36efb72d3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.identity import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest.test import attr"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2Frgc%3D","line":19,"updated":"2013-10-11 10:29:58.000000000","message":"No need to change this line.","commit_id":"d798fd6458d83ea5c994111bfdf8b9056538ade3"},{"author":{"_account_id":8282,"name":"Dong Liu","email":"willowd878@gmail.com","username":"liudong"},"change_message_id":"fb25af18862a3f3f4e89ee2edeaba8ef07d31a3c","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.identity import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest.test import attr"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2F7bM%3D","line":19,"updated":"2013-10-25 03:31:46.000000000","message":"No need to change this line because you only use rand_name method.","commit_id":"b96bbb411bde2e2eb7d7381f5cb17ac878cabccc"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"0ca0b0e148c8feb46e26721eb6a44143f43e1280","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.identity import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest.test import attr"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fk1k%3D","line":19,"in_reply_to":"AAAATn%2F%2F7bM%3D","updated":"2013-11-01 03:02:25.000000000","message":"https://review.openstack.org/#/c/48917/9/tempest/api/identity/admin/test_tenant_negative.py","commit_id":"b96bbb411bde2e2eb7d7381f5cb17ac878cabccc"}],"tempest/api/identity/admin/test_roles_negative.py":[{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"b5843ab00439d6a3f60d147d39ebb1c36efb72d3","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    def test_delete_role_by_unauthorized_user(self):"},{"line_number":95,"context_line":"        # Non-administrator user should not be able to delete role"},{"line_number":96,"context_line":"        role_name \u003d data_utils.rand_name(name\u003d\u0027role-\u0027)"},{"line_number":97,"context_line":"        resp, body \u003d self.client.create_role(role_name)"},{"line_number":98,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":99,"context_line":"        role_id \u003d body.get(\u0027id\u0027)"},{"line_number":100,"context_line":"        self.assertRaises(exceptions.Unauthorized,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2Frd0%3D","line":97,"updated":"2013-10-11 10:29:58.000000000","message":"Please make sure this role will be clean after the test.","commit_id":"d798fd6458d83ea5c994111bfdf8b9056538ade3"},{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"b5843ab00439d6a3f60d147d39ebb1c36efb72d3","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    def test_delete_role_request_without_token(self):"},{"line_number":105,"context_line":"        # Request to delete role without a valid token should fail"},{"line_number":106,"context_line":"        role_name \u003d data_utils.rand_name(name\u003d\u0027role-\u0027)"},{"line_number":107,"context_line":"        resp, body \u003d self.client.create_role(role_name)"},{"line_number":108,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":109,"context_line":"        role_id \u003d body.get(\u0027id\u0027)"},{"line_number":110,"context_line":"        token \u003d self.client.get_auth()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FrdA%3D","line":107,"updated":"2013-10-11 10:29:58.000000000","message":"Please make sure this role will be clean after the test.","commit_id":"d798fd6458d83ea5c994111bfdf8b9056538ade3"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"a0c6767faec2122d769a275ab7a157785b235a15","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    def test_delete_role_non_existent(self):"},{"line_number":121,"context_line":"        # Attempt to delete a role non existent should fail"},{"line_number":122,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.delete_role,"},{"line_number":123,"context_line":"                          str(uuid.uuid4().hex))"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":126,"context_line":"    def test_assign_user_role_by_unauthorized_user(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FfGo%3D","line":123,"updated":"2013-10-15 15:14:54.000000000","message":"maybe:\nnonexistent_role \u003d str(uuid.uuid4().hex)\nwill add more readability.","commit_id":"7b00524a11e5df5f566618823c6aa35567ce1384"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"a0c6767faec2122d769a275ab7a157785b235a15","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        # Attempt to assign a role to a non existent user should fail"},{"line_number":148,"context_line":"        (user, tenant, role) \u003d self._get_role_params()"},{"line_number":149,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.assign_user_role,"},{"line_number":150,"context_line":"                          tenant[\u0027id\u0027], str(uuid.uuid4().hex), role[\u0027id\u0027])"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":153,"context_line":"    def test_assign_user_role_for_non_existent_role(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FfGg%3D","line":150,"updated":"2013-10-15 15:14:54.000000000","message":"ditto","commit_id":"7b00524a11e5df5f566618823c6aa35567ce1384"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"a0c6767faec2122d769a275ab7a157785b235a15","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        # Attempt to assign a non existent role to user should fail"},{"line_number":155,"context_line":"        (user, tenant, role) \u003d self._get_role_params()"},{"line_number":156,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.assign_user_role,"},{"line_number":157,"context_line":"                          tenant[\u0027id\u0027], user[\u0027id\u0027], str(uuid.uuid4().hex))"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":160,"context_line":"    def test_assign_user_role_for_non_existent_tenant(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FfGc%3D","line":157,"updated":"2013-10-15 15:14:54.000000000","message":"ditto","commit_id":"7b00524a11e5df5f566618823c6aa35567ce1384"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"a0c6767faec2122d769a275ab7a157785b235a15","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        # Attempt to assign a role on a non existent tenant should fail"},{"line_number":162,"context_line":"        (user, tenant, role) \u003d self._get_role_params()"},{"line_number":163,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.assign_user_role,"},{"line_number":164,"context_line":"                          str(uuid.uuid4().hex), user[\u0027id\u0027], role[\u0027id\u0027])"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":167,"context_line":"    def test_assign_duplicate_user_role(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FfGY%3D","line":164,"updated":"2013-10-15 15:14:54.000000000","message":"ditto","commit_id":"7b00524a11e5df5f566618823c6aa35567ce1384"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"a0c6767faec2122d769a275ab7a157785b235a15","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                                                       user[\u0027id\u0027],"},{"line_number":206,"context_line":"                                                       role[\u0027id\u0027])"},{"line_number":207,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.remove_user_role,"},{"line_number":208,"context_line":"                          tenant[\u0027id\u0027], str(uuid.uuid4().hex), role[\u0027id\u0027])"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":211,"context_line":"    def test_remove_user_role_non_existant_role(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FfGA%3D","line":208,"updated":"2013-10-15 15:14:54.000000000","message":"ditto","commit_id":"7b00524a11e5df5f566618823c6aa35567ce1384"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"a0c6767faec2122d769a275ab7a157785b235a15","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                                                       user[\u0027id\u0027],"},{"line_number":216,"context_line":"                                                       role[\u0027id\u0027])"},{"line_number":217,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.remove_user_role,"},{"line_number":218,"context_line":"                          tenant[\u0027id\u0027], user[\u0027id\u0027], str(uuid.uuid4().hex))"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":221,"context_line":"    def test_remove_user_role_non_existant_tenant(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FfF8%3D","line":218,"updated":"2013-10-15 15:14:54.000000000","message":"ditto","commit_id":"7b00524a11e5df5f566618823c6aa35567ce1384"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"a0c6767faec2122d769a275ab7a157785b235a15","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                                       user[\u0027id\u0027],"},{"line_number":226,"context_line":"                                                       role[\u0027id\u0027])"},{"line_number":227,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.remove_user_role,"},{"line_number":228,"context_line":"                          str(uuid.uuid4().hex), user[\u0027id\u0027], role[\u0027id\u0027])"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":231,"context_line":"    def test_list_user_roles_by_unauthorized_user(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FfF0%3D","line":228,"updated":"2013-10-15 15:14:54.000000000","message":"ditto","commit_id":"7b00524a11e5df5f566618823c6aa35567ce1384"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"a0c6767faec2122d769a275ab7a157785b235a15","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        # Attempt to list roles of a non existent user should fail"},{"line_number":256,"context_line":"        (user, tenant, role) \u003d self._get_role_params()"},{"line_number":257,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.list_user_roles,"},{"line_number":258,"context_line":"                          tenant[\u0027id\u0027], str(uuid.uuid4().hex))"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"class RolesTestXML(RolesNegativeTestJSON):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FfFk%3D","line":258,"updated":"2013-10-15 15:14:54.000000000","message":"ditto","commit_id":"7b00524a11e5df5f566618823c6aa35567ce1384"},{"author":{"_account_id":8625,"name":"Anju Tiwari","username":"Anju5","inactive":true},"change_message_id":"3814a0641db04e196255e2404d7f2e47809ecb73","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":120,"context_line":"    def test_delete_role_non_existent(self):"},{"line_number":121,"context_line":"        # Attempt to delete a role non existent should fail"},{"line_number":122,"context_line":"        non_existent_role \u003d str(uuid.uuid4().hex)"},{"line_number":123,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.delete_role,"},{"line_number":124,"context_line":"                          non_existent_role)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2F%2F14%3D","line":121,"updated":"2013-10-24 03:09:11.000000000","message":"Attempt to delete a non existent role  should fail  is better\n\nwhat you say?","commit_id":"b96bbb411bde2e2eb7d7381f5cb17ac878cabccc"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"0ca0b0e148c8feb46e26721eb6a44143f43e1280","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    @attr(type\u003d[\u0027negative\u0027, \u0027gate\u0027])"},{"line_number":120,"context_line":"    def test_delete_role_non_existent(self):"},{"line_number":121,"context_line":"        # Attempt to delete a role non existent should fail"},{"line_number":122,"context_line":"        non_existent_role \u003d str(uuid.uuid4().hex)"},{"line_number":123,"context_line":"        self.assertRaises(exceptions.NotFound, self.client.delete_role,"},{"line_number":124,"context_line":"                          non_existent_role)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2Fk0s%3D","line":121,"in_reply_to":"AAAATn%2F%2F%2F14%3D","updated":"2013-11-01 03:02:25.000000000","message":"Thanks.I will modify this.","commit_id":"b96bbb411bde2e2eb7d7381f5cb17ac878cabccc"}]}
