)]}'
{"keystoneclient/tests/functional/v3/client_fixtures.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"fa1978cf15a9c8fa48cc9c0bb0eaf0f57fba32e8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import fixtures"},{"line_number":14,"context_line":"import uuid"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"RESOURCE_NAME_PREFIX \u003d \u0027keystoneclient-functional-\u0027"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_1f69d7f9","side":"PARENT","line":16,"updated":"2016-06-29 12:32:12.000000000","message":"removing this line is not related to this change, we also use two line breaks between the imports and the class/constants. Undo this.","commit_id":"39f093a16db6896cebd57ae4b114df3a04c64451"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"4f0855ba344a78c4b32bac85539544d46112e88d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import fixtures"},{"line_number":14,"context_line":"import uuid"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"RESOURCE_NAME_PREFIX \u003d \u0027keystoneclient-functional-\u0027"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_b9706a41","side":"PARENT","line":16,"in_reply_to":"3aaa91ec_1f69d7f9","updated":"2016-06-30 11:15:29.000000000","message":"Thanks, done!","commit_id":"39f093a16db6896cebd57ae4b114df3a04c64451"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"8ba2a338b1bcfffc6062f43f100b16881a7b647e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        self.addCleanup(self.client.domains.update, self.entity, enabled\u003dFalse)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class Project(Base):"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__(self, client, domain_id\u003dNone, parent\u003dNone):"},{"line_number":74,"context_line":"        super(Project, self).__init__(client, domain_id)"},{"line_number":75,"context_line":"        self.parent \u003d parent"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def setUp(self):"},{"line_number":78,"context_line":"        super(Project, self).setUp()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        self.ref \u003d {\u0027name\u0027: RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":81,"context_line":"                    \u0027domain\u0027: self.domain_id,"},{"line_number":82,"context_line":"                    \u0027enabled\u0027: True,"},{"line_number":83,"context_line":"                    \u0027parent\u0027: self.parent}"},{"line_number":84,"context_line":"        self.entity \u003d self.client.projects.create(**self.ref)"},{"line_number":85,"context_line":"        self.addCleanup(self.client.projects.delete, self.entity)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class Role(Base):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_42bb86e5","line":85,"range":{"start_line":71,"start_character":0,"end_line":85,"end_character":65},"updated":"2016-06-29 12:41:24.000000000","message":"this patch chain should be rebase on [1] (the patch docs being rebase there and this patch being based on the docs).\n\nThis way you don\u0027t need to redefine Project fixture here.\n\n[1] https://review.openstack.org/#/c/332871/","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"b26074fc47d388a4aa10b97ef058b20cba06eca5","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        self.addCleanup(self.client.domains.update, self.entity, enabled\u003dFalse)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class Project(Base):"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__(self, client, domain_id\u003dNone, parent\u003dNone):"},{"line_number":74,"context_line":"        super(Project, self).__init__(client, domain_id)"},{"line_number":75,"context_line":"        self.parent \u003d parent"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def setUp(self):"},{"line_number":78,"context_line":"        super(Project, self).setUp()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        self.ref \u003d {\u0027name\u0027: RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":81,"context_line":"                    \u0027domain\u0027: self.domain_id,"},{"line_number":82,"context_line":"                    \u0027enabled\u0027: True,"},{"line_number":83,"context_line":"                    \u0027parent\u0027: self.parent}"},{"line_number":84,"context_line":"        self.entity \u003d self.client.projects.create(**self.ref)"},{"line_number":85,"context_line":"        self.addCleanup(self.client.projects.delete, self.entity)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class Role(Base):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_0d64d81f","line":85,"range":{"start_line":71,"start_character":0,"end_line":85,"end_character":65},"in_reply_to":"3aaa91ec_42bb86e5","updated":"2016-06-30 12:15:38.000000000","message":"Thanks I wasn\u0027t sure of this before as it is not yet merged.","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"}],"keystoneclient/tests/functional/v3/test_roles.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"8ba2a338b1bcfffc6062f43f100b16881a7b647e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            # Only check remaining mandatory attribute"},{"line_number":37,"context_line":"            self.assertIsNotNone(role.name)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def test_create_role(self):"},{"line_number":40,"context_line":"        role_ref \u003d {\u0027name\u0027: fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":41,"context_line":"                    \u0027domain\u0027: self.project_domain_id}"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_a2934a5a","line":39,"range":{"start_line":39,"start_character":8,"end_line":39,"end_character":24},"updated":"2016-06-29 12:41:24.000000000","message":"make this 2 tests: test_create_role (without specifying a domain) and test_create_domain_role (specifying a domain)","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"b26074fc47d388a4aa10b97ef058b20cba06eca5","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            # Only check remaining mandatory attribute"},{"line_number":37,"context_line":"            self.assertIsNotNone(role.name)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def test_create_role(self):"},{"line_number":40,"context_line":"        role_ref \u003d {\u0027name\u0027: fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":41,"context_line":"                    \u0027domain\u0027: self.project_domain_id}"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_4f0c18ec","line":39,"range":{"start_line":39,"start_character":8,"end_line":39,"end_character":24},"in_reply_to":"3aaa91ec_a2934a5a","updated":"2016-06-30 12:15:38.000000000","message":"Done","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"8ba2a338b1bcfffc6062f43f100b16881a7b647e","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        role.ref.update({\u0027name\u0027: new_name})"},{"line_number":63,"context_line":"        self.check_role(role_ret, role.ref)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def test_list_roles_invalid_params(self):"},{"line_number":66,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":67,"context_line":"        self.useFixture(user)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_42dee611","line":64,"updated":"2016-06-29 12:41:24.000000000","message":"create other test called test_update_role_domain where you try to update the domain attribute of a role (first create without any domain, then try to update to one). I would expect this to fail","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"b26074fc47d388a4aa10b97ef058b20cba06eca5","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        role.ref.update({\u0027name\u0027: new_name})"},{"line_number":63,"context_line":"        self.check_role(role_ret, role.ref)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def test_list_roles_invalid_params(self):"},{"line_number":66,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":67,"context_line":"        self.useFixture(user)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_ad702441","line":64,"in_reply_to":"3aaa91ec_42dee611","updated":"2016-06-30 12:15:38.000000000","message":"I created the test as you said, but it doesn\u0027t fail.","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"8ba2a338b1bcfffc6062f43f100b16881a7b647e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":74,"context_line":"        self.useFixture(group)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":77,"context_line":"                          self.client.roles.list,"},{"line_number":78,"context_line":"                          group\u003dgroup.id)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_list_roles(self):"},{"line_number":81,"context_line":"        role_one \u003d fixtures.Role(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_42054678","line":78,"range":{"start_line":76,"start_character":0,"end_line":78,"end_character":41},"updated":"2016-06-29 12:41:24.000000000","message":"why is this an invalid param ? please add a comment saying as it isn\u0027t obvious","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"b26074fc47d388a4aa10b97ef058b20cba06eca5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":74,"context_line":"        self.useFixture(group)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":77,"context_line":"                          self.client.roles.list,"},{"line_number":78,"context_line":"                          group\u003dgroup.id)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_list_roles(self):"},{"line_number":81,"context_line":"        role_one \u003d fixtures.Role(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_0f7a10f1","line":78,"range":{"start_line":76,"start_character":0,"end_line":78,"end_character":41},"in_reply_to":"3aaa91ec_42054678","updated":"2016-06-30 12:15:38.000000000","message":"Done","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"8ba2a338b1bcfffc6062f43f100b16881a7b647e","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        role \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":101,"context_line":"        self.useFixture(role)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":104,"context_line":"                          self.client.roles.grant,"},{"line_number":105,"context_line":"                          role.id,"},{"line_number":106,"context_line":"                          user\u003duser.id)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":109,"context_line":"        self.useFixture(group)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_22311a5b","line":106,"range":{"start_line":103,"start_character":0,"end_line":106,"end_character":39},"updated":"2016-06-29 12:41:24.000000000","message":"add a small comment saying why it\u0027s invalid","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"b26074fc47d388a4aa10b97ef058b20cba06eca5","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        role \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":101,"context_line":"        self.useFixture(role)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":104,"context_line":"                          self.client.roles.grant,"},{"line_number":105,"context_line":"                          role.id,"},{"line_number":106,"context_line":"                          user\u003duser.id)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":109,"context_line":"        self.useFixture(group)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_4fb3789a","line":106,"range":{"start_line":103,"start_character":0,"end_line":106,"end_character":39},"in_reply_to":"3aaa91ec_22311a5b","updated":"2016-06-30 12:15:38.000000000","message":"Done","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"8ba2a338b1bcfffc6062f43f100b16881a7b647e","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":109,"context_line":"        self.useFixture(group)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":112,"context_line":"                          self.client.roles.grant,"},{"line_number":113,"context_line":"                          role.id,"},{"line_number":114,"context_line":"                          group\u003dgroup.id)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_grant_role_to_user(self):"},{"line_number":117,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_82328e5c","line":114,"range":{"start_line":111,"start_character":0,"end_line":114,"end_character":41},"updated":"2016-06-29 12:41:24.000000000","message":"same here","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"b26074fc47d388a4aa10b97ef058b20cba06eca5","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":109,"context_line":"        self.useFixture(group)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":112,"context_line":"                          self.client.roles.grant,"},{"line_number":113,"context_line":"                          role.id,"},{"line_number":114,"context_line":"                          group\u003dgroup.id)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_grant_role_to_user(self):"},{"line_number":117,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_2fb8ac74","line":114,"range":{"start_line":111,"start_character":0,"end_line":114,"end_character":41},"in_reply_to":"3aaa91ec_82328e5c","updated":"2016-06-30 12:15:38.000000000","message":"Done","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"b4ada30f3079f177dff75c2bfba77e85402e6205","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                          role.id,"},{"line_number":114,"context_line":"                          group\u003dgroup.id)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_grant_role_to_user(self):"},{"line_number":117,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":118,"context_line":"        self.useFixture(user)"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_1ff3c5a0","line":116,"updated":"2016-06-28 16:27:58.000000000","message":"add the destination on the test name: \"grant_role_to_user_on_domain\"","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"11c6df0487bba7e5cdac32007e8b87f0b7da0f57","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                          role.id,"},{"line_number":114,"context_line":"                          group\u003dgroup.id)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_grant_role_to_user(self):"},{"line_number":117,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":118,"context_line":"        self.useFixture(user)"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_5f7c2db5","line":116,"in_reply_to":"3aaa91ec_1ff3c5a0","updated":"2016-06-30 10:49:54.000000000","message":"Done","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"fa1978cf15a9c8fa48cc9c0bb0eaf0f57fba32e8","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                          role.id,"},{"line_number":114,"context_line":"                          group\u003dgroup.id)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_grant_role_to_user(self):"},{"line_number":117,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":118,"context_line":"        self.useFixture(user)"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_424ee66f","line":116,"in_reply_to":"3aaa91ec_1ff3c5a0","updated":"2016-06-29 12:32:12.000000000","message":"also needs to add a \"grant_role_to_user_on_project\" test to cover all possibilities","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"4f0855ba344a78c4b32bac85539544d46112e88d","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                          role.id,"},{"line_number":114,"context_line":"                          group\u003dgroup.id)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_grant_role_to_user(self):"},{"line_number":117,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":118,"context_line":"        self.useFixture(user)"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_b9dfcad4","line":116,"in_reply_to":"3aaa91ec_424ee66f","updated":"2016-06-30 11:15:29.000000000","message":"Done","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"b4ada30f3079f177dff75c2bfba77e85402e6205","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        self.assertIn(role, roles)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def test_grant_role_to_group(self):"},{"line_number":135,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":136,"context_line":"        self.useFixture(group)"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_9f14d59f","line":134,"updated":"2016-06-28 16:27:58.000000000","message":"add the destination on the test name: \"grant_role_to_group_on_project\"","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"11c6df0487bba7e5cdac32007e8b87f0b7da0f57","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        self.assertIn(role, roles)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def test_grant_role_to_group(self):"},{"line_number":135,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":136,"context_line":"        self.useFixture(group)"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_19ea5e0f","line":134,"in_reply_to":"3aaa91ec_9f14d59f","updated":"2016-06-30 10:49:54.000000000","message":"Done","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"fa1978cf15a9c8fa48cc9c0bb0eaf0f57fba32e8","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        self.assertIn(role, roles)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def test_grant_role_to_group(self):"},{"line_number":135,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":136,"context_line":"        self.useFixture(group)"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_a23fcab2","line":134,"in_reply_to":"3aaa91ec_9f14d59f","updated":"2016-06-29 12:32:12.000000000","message":"also needs to add a \"grant_role_to_group_on_domain\" test to cover all possibilities","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"4f0855ba344a78c4b32bac85539544d46112e88d","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        self.assertIn(role, roles)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def test_grant_role_to_group(self):"},{"line_number":135,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":136,"context_line":"        self.useFixture(group)"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_795c424b","line":134,"in_reply_to":"3aaa91ec_a23fcab2","updated":"2016-06-30 11:15:29.000000000","message":"Done","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"b4ada30f3079f177dff75c2bfba77e85402e6205","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        self.assertIn(role, roles)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_revoke_role_from_user(self):"},{"line_number":153,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":154,"context_line":"        self.useFixture(user)"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_df0e5d8b","line":152,"updated":"2016-06-28 16:27:58.000000000","message":"the same as before for the other tests","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"4f0855ba344a78c4b32bac85539544d46112e88d","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        self.assertIn(role, roles)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_revoke_role_from_user(self):"},{"line_number":153,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":154,"context_line":"        self.useFixture(user)"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_5c3854ee","line":152,"in_reply_to":"3aaa91ec_429c26c0","updated":"2016-06-30 11:15:29.000000000","message":"Done","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"11c6df0487bba7e5cdac32007e8b87f0b7da0f57","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        self.assertIn(role, roles)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_revoke_role_from_user(self):"},{"line_number":153,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":154,"context_line":"        self.useFixture(user)"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_b9b86a12","line":152,"in_reply_to":"3aaa91ec_df0e5d8b","updated":"2016-06-30 10:49:54.000000000","message":"Done","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"fa1978cf15a9c8fa48cc9c0bb0eaf0f57fba32e8","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        self.assertIn(role, roles)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_revoke_role_from_user(self):"},{"line_number":153,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":154,"context_line":"        self.useFixture(user)"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_429c26c0","line":152,"in_reply_to":"3aaa91ec_df0e5d8b","updated":"2016-06-29 12:32:12.000000000","message":"the same as above, need to have user + project, user + domain, group + project and group + domain possibilities","commit_id":"a3a65012525c87b0c1dfa4fd6bf22bb57abc0f74"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"38091deda05b28285c8a791759ca4c2971cbaf3e","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        self.useFixture(user)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Only filter in role grants for a user on a resource."},{"line_number":90,"context_line":"        # Domain or project must be specified."},{"line_number":91,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":92,"context_line":"                          self.client.roles.list,"},{"line_number":93,"context_line":"                          user\u003duser.id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_a7a37e4e","line":90,"range":{"start_line":90,"start_character":28,"end_line":90,"end_character":32},"updated":"2016-07-05 13:06:37.000000000","message":"(nit) should","commit_id":"eabf4bf08de75d91cdd091ed191ab5fbe8e0cf00"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"b18400a4c30fd940bc8f7ccd0deae5627d5d19b1","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        self.useFixture(user)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Only filter in role grants for a user on a resource."},{"line_number":90,"context_line":"        # Domain or project must be specified."},{"line_number":91,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":92,"context_line":"                          self.client.roles.list,"},{"line_number":93,"context_line":"                          user\u003duser.id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_164b9e2c","line":90,"range":{"start_line":90,"start_character":28,"end_line":90,"end_character":32},"in_reply_to":"1aa78d24_a7a37e4e","updated":"2016-07-15 12:32:20.000000000","message":"Done","commit_id":"eabf4bf08de75d91cdd091ed191ab5fbe8e0cf00"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"38091deda05b28285c8a791759ca4c2971cbaf3e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                          user\u003duser.id)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # Only filter in role grants for a group on a resource."},{"line_number":96,"context_line":"        # Domain or project must be specified."},{"line_number":97,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":98,"context_line":"        self.useFixture(group)"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_47ac5a34","line":96,"range":{"start_line":96,"start_character":28,"end_line":96,"end_character":32},"updated":"2016-07-05 13:06:37.000000000","message":"(nit) should","commit_id":"eabf4bf08de75d91cdd091ed191ab5fbe8e0cf00"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"b18400a4c30fd940bc8f7ccd0deae5627d5d19b1","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                          user\u003duser.id)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # Only filter in role grants for a group on a resource."},{"line_number":96,"context_line":"        # Domain or project must be specified."},{"line_number":97,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"},{"line_number":98,"context_line":"        self.useFixture(group)"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_763942a3","line":96,"range":{"start_line":96,"start_character":28,"end_line":96,"end_character":32},"in_reply_to":"1aa78d24_47ac5a34","updated":"2016-07-15 12:32:20.000000000","message":"Done","commit_id":"eabf4bf08de75d91cdd091ed191ab5fbe8e0cf00"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"38091deda05b28285c8a791759ca4c2971cbaf3e","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                          group\u003dgroup.id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_list_roles(self):"},{"line_number":105,"context_line":"        role_one \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":106,"context_line":"        self.useFixture(role_one)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        role_two \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":109,"context_line":"        self.useFixture(role_two)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        roles \u003d self.client.roles.list()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_8d05c17b","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":69},"updated":"2016-07-05 13:06:37.000000000","message":"so both are domain roles ? maybe one domain role and another global role would make it a better test ?","commit_id":"eabf4bf08de75d91cdd091ed191ab5fbe8e0cf00"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"b18400a4c30fd940bc8f7ccd0deae5627d5d19b1","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                          group\u003dgroup.id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def test_list_roles(self):"},{"line_number":105,"context_line":"        role_one \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":106,"context_line":"        self.useFixture(role_one)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        role_two \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":109,"context_line":"        self.useFixture(role_two)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        roles \u003d self.client.roles.list()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_16727e7c","line":108,"range":{"start_line":105,"start_character":0,"end_line":108,"end_character":69},"in_reply_to":"1aa78d24_8d05c17b","updated":"2016-07-15 12:32:20.000000000","message":"Definitely, that will be better. Done :)","commit_id":"eabf4bf08de75d91cdd091ed191ab5fbe8e0cf00"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"eb1a6bb62fbd59e6bd62916f491074047ffb62a0","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        role_two \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":109,"context_line":"        self.useFixture(role_two)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        roles \u003d self.client.roles.list()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # All roles are valid"},{"line_number":114,"context_line":"        for role in roles:"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_787cc472","line":111,"range":{"start_line":111,"start_character":16,"end_line":111,"end_character":40},"updated":"2016-07-18 17:26:38.000000000","message":"according to [1], this call will return *only* global roles, so the check below will fail.\n\n[1] https://github.com/openstack/keystone-specs/blob/master/api/v3/identity-api-v3.rst#list-roles","commit_id":"453d40b59b4b59b26f0e7ad4d54ec57c859f43fb"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"a38a8ea335a26ccdc231a5d555f427067c926439","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        role_two \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":109,"context_line":"        self.useFixture(role_two)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        roles \u003d self.client.roles.list()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # All roles are valid"},{"line_number":114,"context_line":"        for role in roles:"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_f53ca830","line":111,"range":{"start_line":111,"start_character":16,"end_line":111,"end_character":40},"in_reply_to":"dada55a8_787cc472","updated":"2016-07-27 06:00:20.000000000","message":"Thanks, for the link. Done","commit_id":"453d40b59b4b59b26f0e7ad4d54ec57c859f43fb"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a1f3112aa47bdd6291ca3614d02d6cd6b1bc0cad","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.check_role(role, role_ref)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_get_role(self):"},{"line_number":55,"context_line":"        role \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":56,"context_line":"        self.useFixture(role)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        role_ret \u003d self.client.roles.get(role.id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_a759b600","line":55,"updated":"2016-07-29 11:27:05.000000000","message":"tests failing because you are passing \"self.project_domain_id\" as the name, not the domain. Please use like the following:\n\n  role \u003d fixtures.Role(self.client, domain\u003dself.project_domain_id\n\nThis is repeated several times below, have marked some of them","commit_id":"2b6c5e660876839256405cacfe97d5abfad293dc"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"5eed230dae3f5b1c5d9e5feafcc1e1b22c545f1f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.check_role(role, role_ref)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_get_role(self):"},{"line_number":55,"context_line":"        role \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":56,"context_line":"        self.useFixture(role)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        role_ret \u003d self.client.roles.get(role.id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_787ab178","line":55,"in_reply_to":"bacf61ea_a759b600","updated":"2016-07-29 15:23:57.000000000","message":"Sorry, I missed it here when you told me about the same issue in projects\u0027 tests. Thanks, done.","commit_id":"2b6c5e660876839256405cacfe97d5abfad293dc"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a1f3112aa47bdd6291ca3614d02d6cd6b1bc0cad","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.check_role(role_ret, role.ref)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_update_role_name(self):"},{"line_number":62,"context_line":"        role \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":63,"context_line":"        self.useFixture(role)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        new_name \u003d fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_875c72ee","line":62,"updated":"2016-07-29 11:27:05.000000000","message":"ditto","commit_id":"2b6c5e660876839256405cacfe97d5abfad293dc"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"5eed230dae3f5b1c5d9e5feafcc1e1b22c545f1f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.check_role(role_ret, role.ref)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def test_update_role_name(self):"},{"line_number":62,"context_line":"        role \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":63,"context_line":"        self.useFixture(role)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        new_name \u003d fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_38eb1915","line":62,"in_reply_to":"bacf61ea_875c72ee","updated":"2016-07-29 15:23:57.000000000","message":"Done","commit_id":"2b6c5e660876839256405cacfe97d5abfad293dc"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a1f3112aa47bdd6291ca3614d02d6cd6b1bc0cad","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":127,"context_line":"        self.useFixture(user)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        role \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":130,"context_line":"        self.useFixture(role)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # Only grant role to a group on a resource."}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_8713d20c","line":129,"updated":"2016-07-29 11:27:05.000000000","message":"ditto","commit_id":"2b6c5e660876839256405cacfe97d5abfad293dc"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"5eed230dae3f5b1c5d9e5feafcc1e1b22c545f1f","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":127,"context_line":"        self.useFixture(user)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        role \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":130,"context_line":"        self.useFixture(role)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        # Only grant role to a group on a resource."}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_78f11101","line":129,"in_reply_to":"bacf61ea_8713d20c","updated":"2016-07-29 15:23:57.000000000","message":"Done","commit_id":"2b6c5e660876839256405cacfe97d5abfad293dc"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a1f3112aa47bdd6291ca3614d02d6cd6b1bc0cad","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        domain \u003d fixtures.Domain(self.client)"},{"line_number":154,"context_line":"        self.useFixture(domain)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        role \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":157,"context_line":"        self.useFixture(role)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        self.client.roles.grant(role, user\u003duser.id, domain\u003ddomain.id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_e7fa8ebc","line":156,"updated":"2016-07-29 11:27:05.000000000","message":"ditto","commit_id":"2b6c5e660876839256405cacfe97d5abfad293dc"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"5eed230dae3f5b1c5d9e5feafcc1e1b22c545f1f","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        domain \u003d fixtures.Domain(self.client)"},{"line_number":154,"context_line":"        self.useFixture(domain)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        role \u003d fixtures.Role(self.client, self.project_domain_id)"},{"line_number":157,"context_line":"        self.useFixture(role)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        self.client.roles.grant(role, user\u003duser.id, domain\u003ddomain.id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_f8e50138","line":156,"in_reply_to":"bacf61ea_e7fa8ebc","updated":"2016-07-29 15:23:57.000000000","message":"Done","commit_id":"2b6c5e660876839256405cacfe97d5abfad293dc"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7439dc97e7410e7377fe1900e2f695e7da8196d0","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.client.roles.grant(role, user\u003duser.id, domain\u003ddomain.id)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, domain\u003ddomain.id)"},{"line_number":162,"context_line":"        for role in roles:"},{"line_number":163,"context_line":"            self.check_role(role)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        self.assertIn(role, roles)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def test_grant_role_to_user_on_project(self):"},{"line_number":168,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_8107651c","line":165,"range":{"start_line":162,"start_character":8,"end_line":165,"end_character":34},"updated":"2016-08-03 16:10:36.000000000","message":"replace this by \n\nself.assertItemsEqual(roles, [role.entity])\n\nas the above call will only return a single role","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"2317a4808eb15124e462adfc6abd1ffe8033c2f4","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.client.roles.grant(role, user\u003duser.id, domain\u003ddomain.id)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, domain\u003ddomain.id)"},{"line_number":162,"context_line":"        for role in roles:"},{"line_number":163,"context_line":"            self.check_role(role)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        self.assertIn(role, roles)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def test_grant_role_to_user_on_project(self):"},{"line_number":168,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_2b9e5354","line":165,"range":{"start_line":162,"start_character":8,"end_line":165,"end_character":34},"in_reply_to":"bacf61ea_8107651c","updated":"2016-08-03 18:01:24.000000000","message":"Alright. So, we aren\u0027t checking the role here?","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7439dc97e7410e7377fe1900e2f695e7da8196d0","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        self.client.roles.grant(role, user\u003duser.id, project\u003dproject.id)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, project\u003dproject.id)"},{"line_number":180,"context_line":"        for role in roles:"},{"line_number":181,"context_line":"            self.check_role(role)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        self.assertIn(role, roles)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def test_grant_role_to_group_on_domain(self):"},{"line_number":186,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_5c09d22b","line":183,"range":{"start_line":180,"start_character":8,"end_line":183,"end_character":34},"updated":"2016-08-03 16:10:36.000000000","message":"same comment as above","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"2317a4808eb15124e462adfc6abd1ffe8033c2f4","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        self.client.roles.grant(role, user\u003duser.id, project\u003dproject.id)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, project\u003dproject.id)"},{"line_number":180,"context_line":"        for role in roles:"},{"line_number":181,"context_line":"            self.check_role(role)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        self.assertIn(role, roles)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def test_grant_role_to_group_on_domain(self):"},{"line_number":186,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_cb1177b1","line":183,"range":{"start_line":180,"start_character":8,"end_line":183,"end_character":34},"in_reply_to":"bacf61ea_5c09d22b","updated":"2016-08-03 18:01:24.000000000","message":"Done","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7439dc97e7410e7377fe1900e2f695e7da8196d0","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        self.client.roles.grant(role, group\u003dgroup.id, domain\u003ddomain.id)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        roles \u003d self.client.roles.list(group\u003dgroup.id, domain\u003ddomain.id)"},{"line_number":198,"context_line":"        for role in roles:"},{"line_number":199,"context_line":"            self.check_role(role)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        self.assertIn(role, roles)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_grant_role_to_group_on_project(self):"},{"line_number":204,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_7c0e5633","line":201,"range":{"start_line":198,"start_character":8,"end_line":201,"end_character":34},"updated":"2016-08-03 16:10:36.000000000","message":"same","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"2317a4808eb15124e462adfc6abd1ffe8033c2f4","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        self.client.roles.grant(role, group\u003dgroup.id, domain\u003ddomain.id)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        roles \u003d self.client.roles.list(group\u003dgroup.id, domain\u003ddomain.id)"},{"line_number":198,"context_line":"        for role in roles:"},{"line_number":199,"context_line":"            self.check_role(role)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        self.assertIn(role, roles)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_grant_role_to_group_on_project(self):"},{"line_number":204,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_0b0c2f93","line":201,"range":{"start_line":198,"start_character":8,"end_line":201,"end_character":34},"in_reply_to":"bacf61ea_7c0e5633","updated":"2016-08-03 18:01:24.000000000","message":"Done","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7439dc97e7410e7377fe1900e2f695e7da8196d0","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        self.client.roles.grant(role, group\u003dgroup.id, project\u003dproject.id)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        roles \u003d self.client.roles.list(group\u003dgroup.id, project\u003dproject.id)"},{"line_number":216,"context_line":"        for role in roles:"},{"line_number":217,"context_line":"            self.check_role(role)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        self.assertIn(role, roles)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def test_revoke_role_from_user_on_domain(self):"},{"line_number":222,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_bc18ce76","line":219,"range":{"start_line":216,"start_character":8,"end_line":219,"end_character":34},"updated":"2016-08-03 16:10:36.000000000","message":"ditto","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"2317a4808eb15124e462adfc6abd1ffe8033c2f4","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        self.client.roles.grant(role, group\u003dgroup.id, project\u003dproject.id)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        roles \u003d self.client.roles.list(group\u003dgroup.id, project\u003dproject.id)"},{"line_number":216,"context_line":"        for role in roles:"},{"line_number":217,"context_line":"            self.check_role(role)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        self.assertIn(role, roles)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def test_revoke_role_from_user_on_domain(self):"},{"line_number":222,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_f657fec7","line":219,"range":{"start_line":216,"start_character":8,"end_line":219,"end_character":34},"in_reply_to":"bacf61ea_bc18ce76","updated":"2016-08-03 18:01:24.000000000","message":"Done","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7439dc97e7410e7377fe1900e2f695e7da8196d0","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        self.client.roles.revoke(role, user\u003duser.id, domain\u003ddomain.id)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, domain\u003ddomain.id)"},{"line_number":235,"context_line":"        for role in roles:"},{"line_number":236,"context_line":"            self.check_role(role)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        self.assertNotIn(role, roles)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def test_revoke_role_from_user_on_project(self):"},{"line_number":241,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_fc4fe667","line":238,"range":{"start_line":235,"start_character":8,"end_line":238,"end_character":37},"updated":"2016-08-03 16:10:36.000000000","message":"just check roles is empty","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"2317a4808eb15124e462adfc6abd1ffe8033c2f4","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        self.client.roles.revoke(role, user\u003duser.id, domain\u003ddomain.id)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, domain\u003ddomain.id)"},{"line_number":235,"context_line":"        for role in roles:"},{"line_number":236,"context_line":"            self.check_role(role)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        self.assertNotIn(role, roles)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def test_revoke_role_from_user_on_project(self):"},{"line_number":241,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_ab1a437a","line":238,"range":{"start_line":235,"start_character":8,"end_line":238,"end_character":37},"in_reply_to":"bacf61ea_fc4fe667","updated":"2016-08-03 18:01:24.000000000","message":"Nice, that would be definitely much better. Thanks :)","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7439dc97e7410e7377fe1900e2f695e7da8196d0","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        self.client.roles.revoke(role, user\u003duser.id, project\u003dproject.id)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, project\u003dproject.id)"},{"line_number":254,"context_line":"        for role in roles:"},{"line_number":255,"context_line":"            self.check_role(role)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        self.assertNotIn(role, roles)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def test_revoke_role_from_group_on_domain(self):"},{"line_number":260,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_3c5a1e2b","line":257,"range":{"start_line":254,"start_character":8,"end_line":257,"end_character":37},"updated":"2016-08-03 16:10:36.000000000","message":"same","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"2317a4808eb15124e462adfc6abd1ffe8033c2f4","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        self.client.roles.revoke(role, user\u003duser.id, project\u003dproject.id)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, project\u003dproject.id)"},{"line_number":254,"context_line":"        for role in roles:"},{"line_number":255,"context_line":"            self.check_role(role)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        self.assertNotIn(role, roles)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def test_revoke_role_from_group_on_domain(self):"},{"line_number":260,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_3641963a","line":257,"range":{"start_line":254,"start_character":8,"end_line":257,"end_character":37},"in_reply_to":"bacf61ea_3c5a1e2b","updated":"2016-08-03 18:01:24.000000000","message":"Done","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7439dc97e7410e7377fe1900e2f695e7da8196d0","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        self.client.roles.revoke(role, group\u003dgroup.id, domain\u003ddomain.id)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        roles \u003d self.client.roles.list(group\u003dgroup.id, domain\u003ddomain.id)"},{"line_number":273,"context_line":"        for role in roles:"},{"line_number":274,"context_line":"            self.check_role(role)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self.assertNotIn(role, roles)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def test_revoke_role_from_group_on_project(self):"},{"line_number":279,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_9c418a3c","line":276,"range":{"start_line":273,"start_character":8,"end_line":276,"end_character":37},"updated":"2016-08-03 16:10:36.000000000","message":"ditto","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"2317a4808eb15124e462adfc6abd1ffe8033c2f4","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        self.client.roles.revoke(role, group\u003dgroup.id, domain\u003ddomain.id)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        roles \u003d self.client.roles.list(group\u003dgroup.id, domain\u003ddomain.id)"},{"line_number":273,"context_line":"        for role in roles:"},{"line_number":274,"context_line":"            self.check_role(role)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self.assertNotIn(role, roles)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def test_revoke_role_from_group_on_project(self):"},{"line_number":279,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_163572da","line":276,"range":{"start_line":273,"start_character":8,"end_line":276,"end_character":37},"in_reply_to":"bacf61ea_9c418a3c","updated":"2016-08-03 18:01:24.000000000","message":"Done","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"7439dc97e7410e7377fe1900e2f695e7da8196d0","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        self.client.roles.revoke(role, group\u003dgroup.id, project\u003dproject.id)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        roles \u003d self.client.roles.list(group\u003dgroup.id, project\u003dproject.id)"},{"line_number":292,"context_line":"        for role in roles:"},{"line_number":293,"context_line":"            self.check_role(role)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        self.assertNotIn(role, roles)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def test_delete_role(self):"},{"line_number":298,"context_line":"        role \u003d self.client.roles.create(name\u003duuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_bc460e4d","line":295,"range":{"start_line":292,"start_character":8,"end_line":295,"end_character":37},"updated":"2016-08-03 16:10:36.000000000","message":"ditto","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"2317a4808eb15124e462adfc6abd1ffe8033c2f4","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        self.client.roles.revoke(role, group\u003dgroup.id, project\u003dproject.id)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        roles \u003d self.client.roles.list(group\u003dgroup.id, project\u003dproject.id)"},{"line_number":292,"context_line":"        for role in roles:"},{"line_number":293,"context_line":"            self.check_role(role)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        self.assertNotIn(role, roles)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def test_delete_role(self):"},{"line_number":298,"context_line":"        role \u003d self.client.roles.create(name\u003duuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_96016207","line":295,"range":{"start_line":292,"start_character":8,"end_line":295,"end_character":37},"in_reply_to":"bacf61ea_bc460e4d","updated":"2016-08-03 18:01:24.000000000","message":"Done","commit_id":"2ef16eace5ebe549e019589b6ec2e4787f1ee540"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5c9adb9a7b7e6881467a21b3dd6ecb7a50eba5c4","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, domain\u003ddomain.id)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        # Check if roles is empty"},{"line_number":225,"context_line":"        self.assertFalse(roles)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def test_revoke_role_from_user_on_project(self):"},{"line_number":228,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_9765dc1e","line":225,"range":{"start_line":224,"start_character":7,"end_line":225,"end_character":31},"updated":"2016-08-03 19:05:13.000000000","message":"this is an odd way to check it. it even needs you to leave a comment. I think self.assertEqual(roles, []) is much clearer. same for others below","commit_id":"35cb9e7d4e3cc6a930fdf22930af7ce05ad3dd7f"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"1d4d6c9f16efde0e895248a287581dafa06a6c8b","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, domain\u003ddomain.id)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        # Check if roles is empty"},{"line_number":225,"context_line":"        self.assertFalse(roles)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def test_revoke_role_from_user_on_project(self):"},{"line_number":228,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_49abcc1e","line":225,"range":{"start_line":224,"start_character":7,"end_line":225,"end_character":31},"in_reply_to":"bacf61ea_9765dc1e","updated":"2016-08-03 19:30:20.000000000","message":"Sure, will use this. Done","commit_id":"35cb9e7d4e3cc6a930fdf22930af7ce05ad3dd7f"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"4d7836b453d945f376db12bd505c191a0a866143","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, domain\u003ddomain.id)"},{"line_number":223,"context_line":"        self.assertEqual(roles, [])"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def test_revoke_role_from_user_on_project(self):"},{"line_number":226,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":227,"context_line":"        self.useFixture(user)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":230,"context_line":"        self.useFixture(project)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        role \u003d fixtures.Role(self.client, domain\u003dself.project_domain_id)"},{"line_number":233,"context_line":"        self.useFixture(role)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        self.client.roles.grant(role, user\u003duser.id, project\u003dproject.id)"},{"line_number":236,"context_line":"        self.client.roles.revoke(role, user\u003duser.id, project\u003dproject.id)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, project\u003dproject.id)"},{"line_number":239,"context_line":"        self.assertEqual(roles, [])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def test_revoke_role_from_group_on_domain(self):"},{"line_number":242,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_5f137a5c","line":239,"range":{"start_line":225,"start_character":0,"end_line":239,"end_character":35},"updated":"2016-08-03 20:02:00.000000000","message":"this could be merged with the test test_grant_role_from_user_on_project by only adding the checks from there here (2 lines of checks to be put between lines 235-236).\n\nsame applies to all the other tests. this would save a lot of code. it could be called test_user_project_grant.\n\nwhat do you think?","commit_id":"2481c1d36871a3cba283574bf0f51ef06fdd01f6"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"e66337a3caab97f484d00b374547957cb3f10071","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, domain\u003ddomain.id)"},{"line_number":223,"context_line":"        self.assertEqual(roles, [])"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def test_revoke_role_from_user_on_project(self):"},{"line_number":226,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":227,"context_line":"        self.useFixture(user)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":230,"context_line":"        self.useFixture(project)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        role \u003d fixtures.Role(self.client, domain\u003dself.project_domain_id)"},{"line_number":233,"context_line":"        self.useFixture(role)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        self.client.roles.grant(role, user\u003duser.id, project\u003dproject.id)"},{"line_number":236,"context_line":"        self.client.roles.revoke(role, user\u003duser.id, project\u003dproject.id)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        roles \u003d self.client.roles.list(user\u003duser.id, project\u003dproject.id)"},{"line_number":239,"context_line":"        self.assertEqual(roles, [])"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def test_revoke_role_from_group_on_domain(self):"},{"line_number":242,"context_line":"        group \u003d fixtures.Group(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bacf61ea_09738216","line":239,"range":{"start_line":225,"start_character":0,"end_line":239,"end_character":35},"in_reply_to":"bacf61ea_5f137a5c","updated":"2016-08-04 05:50:03.000000000","message":"Yeah, that would be better. I think test_user_project_grant_and_revoke is more clear.","commit_id":"2481c1d36871a3cba283574bf0f51ef06fdd01f6"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0c7a9e71813b3f0eaf06ee03ed40b191dcdb5afc","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.assertIn(global_role.entity, global_roles)"},{"line_number":123,"context_line":"        self.assertIn(domain_role.entity, domain_roles)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_grant_role_invalid_params(self):"},{"line_number":126,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":127,"context_line":"        self.useFixture(user)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bacf61ea_db5d9e16","line":124,"updated":"2016-08-04 10:52:07.000000000","message":"(nit) I\u0027d move test_delete_role here, so all the tests for role are together","commit_id":"a49dded7f1a9948df73945787caa5b0b72b2d553"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"b9a85b08fc9533e621e652b46fcf8510eaabbf29","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.assertIn(global_role.entity, global_roles)"},{"line_number":123,"context_line":"        self.assertIn(domain_role.entity, domain_roles)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_grant_role_invalid_params(self):"},{"line_number":126,"context_line":"        user \u003d fixtures.User(self.client, self.project_domain_id)"},{"line_number":127,"context_line":"        self.useFixture(user)"}],"source_content_type":"text/x-python","patch_set":13,"id":"bacf61ea_fcd01855","line":124,"in_reply_to":"bacf61ea_db5d9e16","updated":"2016-08-05 12:55:46.000000000","message":"Done","commit_id":"a49dded7f1a9948df73945787caa5b0b72b2d553"}]}
