)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"fa92030cda38a10792cfef6851ee43cebe312bca","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add project functional tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds functional tests for projects. For now, the tests are created"},{"line_number":10,"context_line":"under a single class. Once we have a gate that runs against LDAP,"},{"line_number":11,"context_line":"we will create a class that only contains readonly tests and a"},{"line_number":12,"context_line":"tox call for it (e.g tox -e functional-readonly)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I72e7a4718f30851cf2046ebfe6e5cc95a517ebf6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3aaa91ec_38dea93f","line":12,"range":{"start_line":9,"start_character":35,"end_line":12,"end_character":49},"updated":"2016-06-22 15:43:56.000000000","message":"this can be removed, we don\u0027t read projects from LDAP","commit_id":"e28b39003b5128bb0e215d5dc23147295b47b535"}],"keystoneclient/tests/functional/v3/client_fixtures.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"70e3672cebb22986ecc53412c24e685dedd4e351","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class Base(fixtures.Fixture):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, client, domain_id\u003dNone, parent\u003dNone):"},{"line_number":23,"context_line":"        super(Base, self).__init__()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        self.client \u003d client"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_7d4d4399","line":22,"range":{"start_line":22,"start_character":47,"end_line":22,"end_character":58},"updated":"2016-06-24 16:15:01.000000000","message":"add this to the project fixture, as it is somehting specific to projects. __init__ there would look like:\n\n\n    def __init__(self, client, domain_id\u003dNone, parent_id\u003dNone):\n        super(Project, self).__init__(client, domain_id)\n        self.parent \u003d parent","commit_id":"afcae7d3b455295e0e37d27883743e6d045ea959"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"58680ce3276e92937012c4c8b4ea26ebe4f802a2","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class Base(fixtures.Fixture):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, client, domain_id\u003dNone, parent\u003dNone):"},{"line_number":23,"context_line":"        super(Base, self).__init__()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        self.client \u003d client"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_943a8197","line":22,"range":{"start_line":22,"start_character":47,"end_line":22,"end_character":58},"updated":"2016-06-24 18:57:04.000000000","message":"move this to Project fixture. see my comment in patchset 5","commit_id":"4b894f41d54950b4c04dcffbf59044e711cf64fa"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"58680ce3276e92937012c4c8b4ea26ebe4f802a2","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class Base(fixtures.Fixture):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, client, domain_id\u003dNone, parent\u003dNone):"},{"line_number":23,"context_line":"        super(Base, self).__init__()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        self.client \u003d client"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_34b46d33","line":22,"range":{"start_line":22,"start_character":45,"end_line":22,"end_character":58},"updated":"2016-06-24 18:57:04.000000000","message":"this shuld good","commit_id":"4b894f41d54950b4c04dcffbf59044e711cf64fa"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"f4dcc95e784fda146dc582fe1c01cc83dbb6fc6a","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class Base(fixtures.Fixture):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, client, domain_id\u003dNone, parent\u003dNone):"},{"line_number":23,"context_line":"        super(Base, self).__init__()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        self.client \u003d client"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_f424a50d","line":22,"range":{"start_line":22,"start_character":45,"end_line":22,"end_character":58},"in_reply_to":"3aaa91ec_34b46d33","updated":"2016-06-24 19:18:29.000000000","message":"Done","commit_id":"4b894f41d54950b4c04dcffbf59044e711cf64fa"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"f4dcc95e784fda146dc582fe1c01cc83dbb6fc6a","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class Base(fixtures.Fixture):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, client, domain_id\u003dNone, parent\u003dNone):"},{"line_number":23,"context_line":"        super(Base, self).__init__()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"        self.client \u003d client"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_542019f7","line":22,"range":{"start_line":22,"start_character":47,"end_line":22,"end_character":58},"in_reply_to":"3aaa91ec_943a8197","updated":"2016-06-24 19:18:29.000000000","message":"Done","commit_id":"4b894f41d54950b4c04dcffbf59044e711cf64fa"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d34d2ea861d625218dd3f855389a6c6e3b582085","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.ref \u003d {\u0027name\u0027: RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":82,"context_line":"                    \u0027domain\u0027: self.domain_id,"},{"line_number":83,"context_line":"                    \u0027enabled\u0027: True,"},{"line_number":84,"context_line":"                    \u0027parent\u0027: self.parent}"},{"line_number":85,"context_line":"        self.entity \u003d self.client.projects.create(**self.ref)"},{"line_number":86,"context_line":"        self.addCleanup(self.client.projects.delete, self.entity)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_ad2ffd9f","line":84,"range":{"start_line":84,"start_character":20,"end_line":84,"end_character":42},"updated":"2016-06-28 12:43:02.000000000","message":"do we want this by default?\n\nmaybe do:\n\n  if parent:\n    self.ref[\u0027parent\u0027] \u003d self.parent","commit_id":"695c8c356c7a7026ea5580fd87dec128da28ede0"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"82e2263813c9f3ee6ffbda839c68e8876a575a8c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.ref \u003d {\u0027name\u0027: RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":82,"context_line":"                    \u0027domain\u0027: self.domain_id,"},{"line_number":83,"context_line":"                    \u0027enabled\u0027: True,"},{"line_number":84,"context_line":"                    \u0027parent\u0027: self.parent}"},{"line_number":85,"context_line":"        self.entity \u003d self.client.projects.create(**self.ref)"},{"line_number":86,"context_line":"        self.addCleanup(self.client.projects.delete, self.entity)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_ab307308","line":84,"range":{"start_line":84,"start_character":20,"end_line":84,"end_character":42},"in_reply_to":"3aaa91ec_ad2ffd9f","updated":"2016-06-28 17:46:49.000000000","message":"this would be nice too; just setting parent when it\u0027s not None","commit_id":"695c8c356c7a7026ea5580fd87dec128da28ede0"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"e0076e5aeed47015e8631f54e81e86db494a9fb4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def setUp(self):"},{"line_number":92,"context_line":"        super(Role, self).setUp()"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        self.ref \u003d {\u0027name\u0027: RESOURCE_NAME_PREFIX + uuid.uuid4().hex}"},{"line_number":95,"context_line":"        self.entity \u003d self.client.roles.create(**self.ref)"},{"line_number":96,"context_line":"        self.addCleanup(self.client.roles.delete, self.entity)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aa78d24_2d464dbf","line":94,"updated":"2016-07-05 13:02:42.000000000","message":"it should specify domain attribute if self.domain is not None","commit_id":"695c8c356c7a7026ea5580fd87dec128da28ede0"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"cd6596d647613d500d3ceb04b405b50dd6337bb7","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def __init__(self, client, name, domain\u003dNone):"},{"line_number":92,"context_line":"        super(Role, self).__init__(client)"},{"line_number":93,"context_line":"        self.domain \u003d domain"},{"line_number":94,"context_line":"        if name:"},{"line_number":95,"context_line":"            self.name \u003d name"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            self.name \u003d RESOURCE_NAME_PREFIX + uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aa78d24_be93ef4d","line":94,"range":{"start_line":94,"start_character":7,"end_line":94,"end_character":16},"updated":"2016-07-13 15:11:49.000000000","message":"name is a positional arg, so this will always be true, you can do something like:\n\n  def __init__(self, client, name\u003dNone, domain\u003dNone):\n    self.name \u003d name or RESOURCE_NAME_PREFIX + uuid.uuid4().hex","commit_id":"26ec48409d0a5a93cffcd659c223d68ec3ef4a53"}],"keystoneclient/tests/functional/v3/test_implied_roles.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9f8c9fef8ca3af9abbda8bd7da76020bc9e6c187","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"1aa78d24_f23810a2","updated":"2016-07-13 14:03:34.000000000","message":"this should go in a separate patch, this is unrelated to project tests","commit_id":"26ec48409d0a5a93cffcd659c223d68ec3ef4a53"}],"keystoneclient/tests/functional/v3/test_projects.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"fa92030cda38a10792cfef6851ee43cebe312bca","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            # Only check remaining mandatory attributes"},{"line_number":41,"context_line":"            self.assertIsNotNone(project.name)"},{"line_number":42,"context_line":"            self.assertIsNotNone(project.domain_id)"},{"line_number":43,"context_line":"            self.assertIsNotNone(project.enabled)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_create_project(self):"},{"line_number":46,"context_line":"        project_ref \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_78cb1154","line":43,"updated":"2016-06-22 15:43:56.000000000","message":"Assert project parent is not None, it\u0027s always present in v3","commit_id":"e28b39003b5128bb0e215d5dc23147295b47b535"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"fa92030cda38a10792cfef6851ee43cebe312bca","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            self.assertIsNotNone(project.domain_id)"},{"line_number":43,"context_line":"            self.assertIsNotNone(project.enabled)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_create_project(self):"},{"line_number":46,"context_line":"        project_ref \u003d {"},{"line_number":47,"context_line":"            \u0027name\u0027: fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":48,"context_line":"            \u0027domain\u0027: self.project_domain_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_18a3ed50","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":27},"updated":"2016-06-22 15:43:56.000000000","message":"Call this test_create_subproject (as it is creating a project by specifying a parent), and create another test called test_create_project that does not set a parent.","commit_id":"e28b39003b5128bb0e215d5dc23147295b47b535"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"fa92030cda38a10792cfef6851ee43cebe312bca","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        project_ret \u003d self.client.projects.get(project.id)"},{"line_number":62,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def test_list_projects(self):"},{"line_number":65,"context_line":"        project_one \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":66,"context_line":"        self.useFixture(project_one)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_33a6ca10","line":63,"updated":"2016-06-22 15:43:56.000000000","message":"Add test cases for getting projects with the options available for showing the hierarchy (subtree_as_list, parents_as_list, subtree_as_ids, parents_as_ids)","commit_id":"e28b39003b5128bb0e215d5dc23147295b47b535"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"71a3ab44f0b43238e3967241df16cdd339b2ce33","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":71,"context_line":"        self.useFixture(project)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        # subtree_as_list and subtree_as_ids or"},{"line_number":74,"context_line":"        # parents_as_list and parents_as_ids"},{"line_number":75,"context_line":"        # can not be included at the same time."},{"line_number":76,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":77,"context_line":"                          self.client.projects.get,"},{"line_number":78,"context_line":"                          project.id,"},{"line_number":79,"context_line":"                          subtree_as_list\u003dTrue, subtree_as_ids\u003dTrue)"},{"line_number":80,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":81,"context_line":"                          self.client.projects.get,"},{"line_number":82,"context_line":"                          project.id,"},{"line_number":83,"context_line":"                          parents_as_list\u003dTrue, parents_as_ids\u003dTrue)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        project_ret \u003d self.client.projects.get(project.id,"},{"line_number":86,"context_line":"                                               subtree_as_list\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_c4ba1b23","line":83,"range":{"start_line":73,"start_character":0,"end_line":83,"end_character":68},"updated":"2016-06-22 17:32:55.000000000","message":"Make this a separate test case","commit_id":"fc97e2e500846592e8034f6f379b382f62696422"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"8d18dd5288020c915fe550d26873add38b47b310","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":71,"context_line":"        self.useFixture(project)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        # subtree_as_list and subtree_as_ids or"},{"line_number":74,"context_line":"        # parents_as_list and parents_as_ids"},{"line_number":75,"context_line":"        # can not be included at the same time."},{"line_number":76,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":77,"context_line":"                          self.client.projects.get,"},{"line_number":78,"context_line":"                          project.id,"},{"line_number":79,"context_line":"                          subtree_as_list\u003dTrue, subtree_as_ids\u003dTrue)"},{"line_number":80,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":81,"context_line":"                          self.client.projects.get,"},{"line_number":82,"context_line":"                          project.id,"},{"line_number":83,"context_line":"                          parents_as_list\u003dTrue, parents_as_ids\u003dTrue)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        project_ret \u003d self.client.projects.get(project.id,"},{"line_number":86,"context_line":"                                               subtree_as_list\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_be6edafe","line":83,"range":{"start_line":73,"start_character":0,"end_line":83,"end_character":68},"in_reply_to":"3aaa91ec_c4ba1b23","updated":"2016-06-23 10:35:34.000000000","message":"Done","commit_id":"fc97e2e500846592e8034f6f379b382f62696422"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"71a3ab44f0b43238e3967241df16cdd339b2ce33","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                          project.id,"},{"line_number":83,"context_line":"                          parents_as_list\u003dTrue, parents_as_ids\u003dTrue)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        project_ret \u003d self.client.projects.get(project.id,"},{"line_number":86,"context_line":"                                               subtree_as_list\u003dTrue,"},{"line_number":87,"context_line":"                                               parents_as_list\u003dTrue)"},{"line_number":88,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        project_ret \u003d self.client.projects.get(project.id,"},{"line_number":91,"context_line":"                                               subtree_as_ids\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_649247a1","line":88,"range":{"start_line":85,"start_character":0,"end_line":88,"end_character":52},"updated":"2016-06-22 17:32:55.000000000","message":"same here, put in another test case, and also create parents, children so the test make sense","commit_id":"fc97e2e500846592e8034f6f379b382f62696422"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"8d18dd5288020c915fe550d26873add38b47b310","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                          project.id,"},{"line_number":83,"context_line":"                          parents_as_list\u003dTrue, parents_as_ids\u003dTrue)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        project_ret \u003d self.client.projects.get(project.id,"},{"line_number":86,"context_line":"                                               subtree_as_list\u003dTrue,"},{"line_number":87,"context_line":"                                               parents_as_list\u003dTrue)"},{"line_number":88,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        project_ret \u003d self.client.projects.get(project.id,"},{"line_number":91,"context_line":"                                               subtree_as_ids\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_be453a71","line":88,"range":{"start_line":85,"start_character":0,"end_line":88,"end_character":52},"in_reply_to":"3aaa91ec_649247a1","updated":"2016-06-23 10:35:34.000000000","message":"Done","commit_id":"fc97e2e500846592e8034f6f379b382f62696422"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"71a3ab44f0b43238e3967241df16cdd339b2ce33","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                               parents_as_list\u003dTrue)"},{"line_number":88,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        project_ret \u003d self.client.projects.get(project.id,"},{"line_number":91,"context_line":"                                               subtree_as_ids\u003dFalse,"},{"line_number":92,"context_line":"                                               parents_as_ids\u003dFalse)"},{"line_number":93,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_list_projects(self):"},{"line_number":96,"context_line":"        project_one \u003d fixtures.Project(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_a48c2f80","line":93,"range":{"start_line":90,"start_character":0,"end_line":93,"end_character":52},"updated":"2016-06-22 17:32:55.000000000","message":"ditto","commit_id":"fc97e2e500846592e8034f6f379b382f62696422"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"8d18dd5288020c915fe550d26873add38b47b310","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                               parents_as_list\u003dTrue)"},{"line_number":88,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        project_ret \u003d self.client.projects.get(project.id,"},{"line_number":91,"context_line":"                                               subtree_as_ids\u003dFalse,"},{"line_number":92,"context_line":"                                               parents_as_ids\u003dFalse)"},{"line_number":93,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_list_projects(self):"},{"line_number":96,"context_line":"        project_one \u003d fixtures.Project(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_9e483e89","line":93,"range":{"start_line":90,"start_character":0,"end_line":93,"end_character":52},"in_reply_to":"3aaa91ec_a48c2f80","updated":"2016-06-23 10:35:34.000000000","message":"I included this case in above test case, because it will allow reusing the code for creating project having parent and child projects.","commit_id":"fc97e2e500846592e8034f6f379b382f62696422"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        project_ret \u003d self.client.projects.get(project.id)"},{"line_number":74,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_get_project_raises_exception(self):"},{"line_number":77,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":78,"context_line":"        self.useFixture(project)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_7a72bbae","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":41},"updated":"2016-06-23 10:54:09.000000000","message":"I suggest test_get_project_invalid_params","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def test_get_project_raises_exception(self):"},{"line_number":77,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":78,"context_line":"        self.useFixture(project)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        # subtree_as_list and subtree_as_ids or"},{"line_number":81,"context_line":"        # parents_as_list and parents_as_ids"},{"line_number":82,"context_line":"        # can not be included at the same time."},{"line_number":83,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":84,"context_line":"                          self.client.projects.get,"},{"line_number":85,"context_line":"                          project.id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_1a6457e2","line":82,"range":{"start_line":77,"start_character":0,"end_line":82,"end_character":47},"updated":"2016-06-23 10:54:09.000000000","message":"Doesn\u0027t need this","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        # can not be included at the same time."},{"line_number":83,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":84,"context_line":"                          self.client.projects.get,"},{"line_number":85,"context_line":"                          project.id,"},{"line_number":86,"context_line":"                          subtree_as_list\u003dTrue, subtree_as_ids\u003dTrue)"},{"line_number":87,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":88,"context_line":"                          self.client.projects.get,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_5a9c1fc0","line":85,"range":{"start_line":85,"start_character":26,"end_line":85,"end_character":36},"updated":"2016-06-23 10:54:09.000000000","message":"you can just use self.project_id here","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                          subtree_as_list\u003dTrue, subtree_as_ids\u003dTrue)"},{"line_number":87,"context_line":"        self.assertRaises(ValidationError,"},{"line_number":88,"context_line":"                          self.client.projects.get,"},{"line_number":89,"context_line":"                          project.id,"},{"line_number":90,"context_line":"                          parents_as_list\u003dTrue, parents_as_ids\u003dTrue)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def test_get_subtree_parents(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_3a9f93b5","line":89,"range":{"start_line":89,"start_character":26,"end_line":89,"end_character":36},"updated":"2016-06-23 10:54:09.000000000","message":"ditto","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                          project.id,"},{"line_number":90,"context_line":"                          parents_as_list\u003dTrue, parents_as_ids\u003dTrue)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def test_get_subtree_parents(self):"},{"line_number":93,"context_line":"        parent_project_ref \u003d {"},{"line_number":94,"context_line":"            \u0027name\u0027: fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":95,"context_line":"            \u0027domain\u0027: self.project_domain_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_1a1c5711","line":92,"range":{"start_line":92,"start_character":8,"end_line":92,"end_character":32},"updated":"2016-06-23 10:54:09.000000000","message":"I suggest test_get_hierarchy_as_list so you test both parents_as_list and subtree_as_list","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                          parents_as_list\u003dTrue, parents_as_ids\u003dTrue)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def test_get_subtree_parents(self):"},{"line_number":93,"context_line":"        parent_project_ref \u003d {"},{"line_number":94,"context_line":"            \u0027name\u0027: fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":95,"context_line":"            \u0027domain\u0027: self.project_domain_id,"},{"line_number":96,"context_line":"            \u0027enabled\u0027: True,"},{"line_number":97,"context_line":"            \u0027description\u0027: uuid.uuid4().hex}"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        parent_project \u003d self.client.projects.create(**parent_project_ref)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        project_ref \u003d {"},{"line_number":102,"context_line":"            \u0027name\u0027: fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":103,"context_line":"            \u0027domain\u0027: self.project_domain_id,"},{"line_number":104,"context_line":"            \u0027enabled\u0027: True,"},{"line_number":105,"context_line":"            \u0027description\u0027: uuid.uuid4().hex,"},{"line_number":106,"context_line":"            \u0027parent\u0027: parent_project}"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        project \u003d self.client.projects.create(**project_ref)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        child_project_ref \u003d {"},{"line_number":111,"context_line":"            \u0027name\u0027: fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":112,"context_line":"            \u0027domain\u0027: self.project_domain_id,"},{"line_number":113,"context_line":"            \u0027enabled\u0027: True,"},{"line_number":114,"context_line":"            \u0027description\u0027: uuid.uuid4().hex,"},{"line_number":115,"context_line":"            \u0027parent\u0027: project}"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        child_project \u003d self.client.projects.create(**child_project_ref)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        project_list_ret \u003d self.client.projects.get(project.id,"},{"line_number":120,"context_line":"                                                    subtree_as_list\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_dae80fe5","line":117,"range":{"start_line":93,"start_character":0,"end_line":117,"end_character":72},"updated":"2016-06-23 10:54:09.000000000","message":"use fixtures for this. add an optional parameter called parent to the fixture, so you may be able to create hierarchies with them","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        child_project \u003d self.client.projects.create(**child_project_ref)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        project_list_ret \u003d self.client.projects.get(project.id,"},{"line_number":120,"context_line":"                                                    subtree_as_list\u003dTrue,"},{"line_number":121,"context_line":"                                                    parents_as_list\u003dTrue)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_5adedf11","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":24},"updated":"2016-06-23 10:54:09.000000000","message":"this isn\u0027t a project list, it\u0027s a project entity, but it contains the parents and subtree attributes (iirc the attribute names are these)","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                                                    subtree_as_list\u003dTrue,"},{"line_number":121,"context_line":"                                                    parents_as_list\u003dTrue)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        self.check_project(project_list_ret, project_ref)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        project_ids_ret \u003d self.client.projects.get(project.id,"},{"line_number":126,"context_line":"                                                   subtree_as_ids\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_3a7dd3e7","line":123,"range":{"start_line":123,"start_character":0,"end_line":123,"end_character":57},"updated":"2016-06-23 10:54:09.000000000","message":"besides checking the project is valid, you need to check in the lines below that the projects you expect are in the fields parents and subtree,like:\n\nself.assertItemsEqual([parent.entity], project.parents)\nself.assertItemsEqual([subproject.entity], project.subtree)","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        self.check_project(project_list_ret, project_ref)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        project_ids_ret \u003d self.client.projects.get(project.id,"},{"line_number":126,"context_line":"                                                   subtree_as_ids\u003dTrue,"},{"line_number":127,"context_line":"                                                   parents_as_ids\u003dTrue)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self.check_project(project_ids_ret, project_ref)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        self.addCleanup(self.client.projects.delete, parent_project)"},{"line_number":132,"context_line":"        self.addCleanup(self.client.projects.delete, project)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_9a9a0762","line":129,"range":{"start_line":125,"start_character":0,"end_line":129,"end_character":56},"updated":"2016-06-23 10:54:09.000000000","message":"remove this, only test ids in the following testcase so that test cases are simple and don\u0027t test too much things","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                                                   parents_as_ids\u003dTrue)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        self.check_project(project_ids_ret, project_ref)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        self.addCleanup(self.client.projects.delete, parent_project)"},{"line_number":132,"context_line":"        self.addCleanup(self.client.projects.delete, project)"},{"line_number":133,"context_line":"        self.addCleanup(self.client.projects.delete, child_project)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def test_get_subtree_parents_ids(self):"},{"line_number":136,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_7a863b14","line":133,"range":{"start_line":130,"start_character":0,"end_line":133,"end_character":67},"updated":"2016-06-23 10:54:09.000000000","message":"you won\u0027t need this with the use of fixtures, as suggested above","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        self.addCleanup(self.client.projects.delete, project)"},{"line_number":133,"context_line":"        self.addCleanup(self.client.projects.delete, child_project)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def test_get_subtree_parents_ids(self):"},{"line_number":136,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":137,"context_line":"        self.useFixture(project)"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_fa722b48","line":135,"range":{"start_line":135,"start_character":8,"end_line":135,"end_character":36},"updated":"2016-06-23 10:54:09.000000000","message":"I suggest test_get_hierarchy_as_ids, similarly to what I said above","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e06009bedfc27db940e1eb12124854ff15c1111","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        self.addCleanup(self.client.projects.delete, child_project)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def test_get_subtree_parents_ids(self):"},{"line_number":136,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":137,"context_line":"        self.useFixture(project)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        project_ret \u003d self.client.projects.get(project.id,"},{"line_number":140,"context_line":"                                               subtree_as_ids\u003dTrue,"},{"line_number":141,"context_line":"                                               parents_as_ids\u003dTrue)"},{"line_number":142,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def test_list_projects(self):"},{"line_number":145,"context_line":"        project_one \u003d fixtures.Project(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_1a79f7f6","line":142,"range":{"start_line":136,"start_character":0,"end_line":142,"end_character":52},"updated":"2016-06-23 10:54:09.000000000","message":"do similarly to the test above, but testing IDs instead","commit_id":"968884a7d187c14afae130ba3bae027bcc7173de"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"d7d6d2ccf21f1eead52cbf7ff507eb76803fc76b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                          self.project_id,"},{"line_number":84,"context_line":"                          parents_as_list\u003dTrue, parents_as_ids\u003dTrue)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_get_hierarchy_as_list(self):"},{"line_number":87,"context_line":"        parent_project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":88,"context_line":"        self.useFixture(parent_project)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_d26a6b80","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":40},"updated":"2016-06-24 13:45:37.000000000","message":"This test is failing.","commit_id":"afcae7d3b455295e0e37d27883743e6d045ea959"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"ca30f0e2de72c29d4ed9f2af42ab92d6982ecf55","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_get_hierarchy_as_list(self):"},{"line_number":87,"context_line":"        parent_project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":88,"context_line":"        self.useFixture(parent_project)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        project \u003d fixtures.Project(self.client, self.project_domain_id,"},{"line_number":91,"context_line":"                                   parent\u003dparent_project.id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_8e2ef7f8","line":88,"updated":"2016-06-24 17:21:33.000000000","message":"you will need to have a role fixture too... then you do:\n\n\n    role \u003d fixtures.Project(self.client)\n    self.useFixture(role)\n\n\nthen after creating each projects (like this one), you add:\n\n    self.client.roles.grant(role.id, user\u003dself.user_id, project\u003dparent_project.id)","commit_id":"afcae7d3b455295e0e37d27883743e6d045ea959"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"cb3851e1cdc42c42cebd51d6a12c64057363207c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                                         parent\u003dproject.id)"},{"line_number":96,"context_line":"        self.useFixture(child_project)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        project_ret \u003d self.client.projects.get(project.id,"},{"line_number":99,"context_line":"                                               subtree_as_list\u003dTrue,"},{"line_number":100,"context_line":"                                               parents_as_list\u003dTrue)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":103,"context_line":"        self.assertItemsEqual([parent_project.entity], project_ret.parents)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_23bf1cab","line":100,"range":{"start_line":98,"start_character":0,"end_line":100,"end_character":68},"updated":"2016-06-24 16:57:47.000000000","message":"this only return the parents and subtree projects that the current user has role assingments on!!! that\u0027s why it\u0027s returning an empty list!\n\nI suggest you add a role assignment for the created projects!","commit_id":"afcae7d3b455295e0e37d27883743e6d045ea959"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"d7d6d2ccf21f1eead52cbf7ff507eb76803fc76b","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self.assertItemsEqual([parent_project.entity], project_ret.parents)"},{"line_number":104,"context_line":"        self.assertItemsEqual([child_project.entity], project_ret.subtree)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def test_get_hierarchy_as_ids(self):"},{"line_number":107,"context_line":"        parent_project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":108,"context_line":"        self.useFixture(parent_project)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_92fbc3c0","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":33},"updated":"2016-06-24 13:45:37.000000000","message":"This test is also failing","commit_id":"afcae7d3b455295e0e37d27883743e6d045ea959"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"cb3851e1cdc42c42cebd51d6a12c64057363207c","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                                               subtree_as_ids\u003dTrue,"},{"line_number":120,"context_line":"                                               parents_as_ids\u003dTrue)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.assertItemsEqual([parent_project.entity], project_ret.parents)"},{"line_number":123,"context_line":"        self.assertItemsEqual([child_project.entity], project_ret.subtree)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_list_projects(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_6395a431","line":122,"range":{"start_line":122,"start_character":46,"end_line":122,"end_character":52},"updated":"2016-06-24 16:57:47.000000000","message":"this should be id","commit_id":"afcae7d3b455295e0e37d27883743e6d045ea959"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"cb3851e1cdc42c42cebd51d6a12c64057363207c","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                                               parents_as_ids\u003dTrue)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.assertItemsEqual([parent_project.entity], project_ret.parents)"},{"line_number":123,"context_line":"        self.assertItemsEqual([child_project.entity], project_ret.subtree)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_list_projects(self):"},{"line_number":126,"context_line":"        project_one \u003d fixtures.Project(self.client, self.project_domain_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_c398d86c","line":123,"range":{"start_line":123,"start_character":45,"end_line":123,"end_character":51},"updated":"2016-06-24 16:57:47.000000000","message":"this should be id","commit_id":"afcae7d3b455295e0e37d27883743e6d045ea959"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"58680ce3276e92937012c4c8b4ea26ebe4f802a2","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        role \u003d fixtures.Role(self.client)"},{"line_number":99,"context_line":"        self.useFixture(role)"},{"line_number":100,"context_line":"        self.client.roles.grant(role.id, user\u003dself.user_id,"},{"line_number":101,"context_line":"                                project\u003dparent_project.id)"},{"line_number":102,"context_line":"        self.client.roles.grant(role.id, user\u003dself.user_id, project\u003dproject.id)"},{"line_number":103,"context_line":"        self.client.roles.grant(role.id, user\u003dself.user_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_3450edd3","line":100,"updated":"2016-06-24 18:57:04.000000000","message":"Add a comment here saying why you adding these role assingments","commit_id":"4b894f41d54950b4c04dcffbf59044e711cf64fa"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"f4dcc95e784fda146dc582fe1c01cc83dbb6fc6a","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        role \u003d fixtures.Role(self.client)"},{"line_number":99,"context_line":"        self.useFixture(role)"},{"line_number":100,"context_line":"        self.client.roles.grant(role.id, user\u003dself.user_id,"},{"line_number":101,"context_line":"                                project\u003dparent_project.id)"},{"line_number":102,"context_line":"        self.client.roles.grant(role.id, user\u003dself.user_id, project\u003dproject.id)"},{"line_number":103,"context_line":"        self.client.roles.grant(role.id, user\u003dself.user_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_b437bd4b","line":100,"in_reply_to":"3aaa91ec_3450edd3","updated":"2016-06-24 19:18:29.000000000","message":"Done","commit_id":"4b894f41d54950b4c04dcffbf59044e711cf64fa"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"58680ce3276e92937012c4c8b4ea26ebe4f802a2","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                                               parents_as_list\u003dTrue)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":111,"context_line":"        self.assertItemsEqual([{\u0027project\u0027: (parent_project.entity).to_dict()}],"},{"line_number":112,"context_line":"                              project_ret.parents)"},{"line_number":113,"context_line":"        self.assertItemsEqual([{\u0027project\u0027: (child_project.entity).to_dict()}],"},{"line_number":114,"context_line":"                              project_ret.subtree)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_9461e1ab","line":111,"range":{"start_line":111,"start_character":43,"end_line":111,"end_character":66},"updated":"2016-06-24 18:57:04.000000000","message":"doesn\u0027t need the parenthesis","commit_id":"4b894f41d54950b4c04dcffbf59044e711cf64fa"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"f4dcc95e784fda146dc582fe1c01cc83dbb6fc6a","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                                               parents_as_list\u003dTrue)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":111,"context_line":"        self.assertItemsEqual([{\u0027project\u0027: (parent_project.entity).to_dict()}],"},{"line_number":112,"context_line":"                              project_ret.parents)"},{"line_number":113,"context_line":"        self.assertItemsEqual([{\u0027project\u0027: (child_project.entity).to_dict()}],"},{"line_number":114,"context_line":"                              project_ret.subtree)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_54dbf91a","line":111,"range":{"start_line":111,"start_character":43,"end_line":111,"end_character":66},"in_reply_to":"3aaa91ec_9461e1ab","updated":"2016-06-24 19:18:29.000000000","message":"Done","commit_id":"4b894f41d54950b4c04dcffbf59044e711cf64fa"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"58680ce3276e92937012c4c8b4ea26ebe4f802a2","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":111,"context_line":"        self.assertItemsEqual([{\u0027project\u0027: (parent_project.entity).to_dict()}],"},{"line_number":112,"context_line":"                              project_ret.parents)"},{"line_number":113,"context_line":"        self.assertItemsEqual([{\u0027project\u0027: (child_project.entity).to_dict()}],"},{"line_number":114,"context_line":"                              project_ret.subtree)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_get_hierarchy_as_ids(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_d457e9c7","line":113,"range":{"start_line":113,"start_character":43,"end_line":113,"end_character":65},"updated":"2016-06-24 18:57:04.000000000","message":"same here","commit_id":"4b894f41d54950b4c04dcffbf59044e711cf64fa"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"f4dcc95e784fda146dc582fe1c01cc83dbb6fc6a","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":111,"context_line":"        self.assertItemsEqual([{\u0027project\u0027: (parent_project.entity).to_dict()}],"},{"line_number":112,"context_line":"                              project_ret.parents)"},{"line_number":113,"context_line":"        self.assertItemsEqual([{\u0027project\u0027: (child_project.entity).to_dict()}],"},{"line_number":114,"context_line":"                              project_ret.subtree)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_get_hierarchy_as_ids(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_34d62df1","line":113,"range":{"start_line":113,"start_character":43,"end_line":113,"end_character":65},"in_reply_to":"3aaa91ec_d457e9c7","updated":"2016-06-24 19:18:29.000000000","message":"Done","commit_id":"4b894f41d54950b4c04dcffbf59044e711cf64fa"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"b8efa04a5f9dc29bb77c7b7d3a91e12673061c35","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.useFixture(child_project)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        # Only parents and subtree projects that the current user has"},{"line_number":99,"context_line":"        # role assingments on are returned."},{"line_number":100,"context_line":"        role \u003d fixtures.Role(self.client)"},{"line_number":101,"context_line":"        self.useFixture(role)"},{"line_number":102,"context_line":"        self.client.roles.grant(role.id, user\u003dself.user_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_8f326ea5","line":99,"range":{"start_line":99,"start_character":42,"end_line":99,"end_character":43},"updated":"2016-06-24 19:20:59.000000000","message":"in which case ? \n\n\u0027when asking for subtree_as_list and parents_as_list\u0027","commit_id":"3be127e5279d976215cdc43798edc5df6af8bfe3"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"aba344f1fff3639cb6b2c37f78282eadd893c5a4","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                          self.project_id,"},{"line_number":84,"context_line":"                          parents_as_list\u003dTrue, parents_as_ids\u003dTrue)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_get_hierarchy_as_list(self):"},{"line_number":87,"context_line":"        parent_project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":88,"context_line":"        self.useFixture(parent_project)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_cfcc6f6c","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":34},"updated":"2016-06-30 18:16:07.000000000","message":"this test is leaving some garbage behind, so it is making the test_implied_roles test to fail.","commit_id":"695c8c356c7a7026ea5580fd87dec128da28ede0"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c1d90bfe8abcd0c4eb9b98a927fef7284d2cf408","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        if project_ref:"},{"line_number":29,"context_line":"            self.assertEqual(project_ref[\u0027name\u0027], project.name)"},{"line_number":30,"context_line":"            self.assertEqual(project_ref[\u0027domain\u0027], project.domain_id)"},{"line_number":31,"context_line":"            self.assertEqual(project_ref[\u0027enabled\u0027], project.enabled)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"            # There is no guarantee the attributes below are present in project"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_ac290bf5","line":30,"range":{"start_line":30,"start_character":29,"end_line":30,"end_character":50},"updated":"2016-07-22 08:13:00.000000000","message":"Hmm, actually, I think this is optional in server side, pls see:\nhttp://developer.openstack.org/api-ref/identity/v3/index.html?expanded\u003dcreate-project-detail#projects\n\nI am not sure why keystoneclient need them always.","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"bc852cc948d8bc8c54c3d1079ba8fde0df489c45","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        if project_ref:"},{"line_number":29,"context_line":"            self.assertEqual(project_ref[\u0027name\u0027], project.name)"},{"line_number":30,"context_line":"            self.assertEqual(project_ref[\u0027domain\u0027], project.domain_id)"},{"line_number":31,"context_line":"            self.assertEqual(project_ref[\u0027enabled\u0027], project.enabled)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"            # There is no guarantee the attributes below are present in project"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_bbffbf64","line":30,"range":{"start_line":30,"start_character":29,"end_line":30,"end_character":50},"in_reply_to":"dada55a8_ac290bf5","updated":"2016-07-27 08:44:00.000000000","message":"Dave here also [1] domain is mentioned as an optional attribute. But I am unable to create a project without specifying a domain. See [2] please, the create call, requires a domain to be passed. \n\n[1] https://github.com/openstack/keystone-specs/blob/master/api/v3/identity-api-v3.rst#list-roles\n\n[2] https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/v3/projects.py","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c1d90bfe8abcd0c4eb9b98a927fef7284d2cf408","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        if project_ref:"},{"line_number":29,"context_line":"            self.assertEqual(project_ref[\u0027name\u0027], project.name)"},{"line_number":30,"context_line":"            self.assertEqual(project_ref[\u0027domain\u0027], project.domain_id)"},{"line_number":31,"context_line":"            self.assertEqual(project_ref[\u0027enabled\u0027], project.enabled)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"            # There is no guarantee the attributes below are present in project"},{"line_number":34,"context_line":"            if hasattr(project_ref, \u0027description\u0027):"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_4c8fafcc","line":31,"range":{"start_line":31,"start_character":29,"end_line":31,"end_character":51},"updated":"2016-07-22 08:13:00.000000000","message":"I am okay with all of these, but they are not required in server side.","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"bc852cc948d8bc8c54c3d1079ba8fde0df489c45","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        if project_ref:"},{"line_number":29,"context_line":"            self.assertEqual(project_ref[\u0027name\u0027], project.name)"},{"line_number":30,"context_line":"            self.assertEqual(project_ref[\u0027domain\u0027], project.domain_id)"},{"line_number":31,"context_line":"            self.assertEqual(project_ref[\u0027enabled\u0027], project.enabled)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"            # There is no guarantee the attributes below are present in project"},{"line_number":34,"context_line":"            if hasattr(project_ref, \u0027description\u0027):"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_3b43cfb0","line":31,"range":{"start_line":31,"start_character":29,"end_line":31,"end_character":51},"in_reply_to":"dada55a8_4c8fafcc","updated":"2016-07-27 08:44:00.000000000","message":"Since, it is also mentioned optional in above links, I have shifted the check for enabled.","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c1d90bfe8abcd0c4eb9b98a927fef7284d2cf408","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.assertEqual(project_ref[\u0027domain\u0027], project.domain_id)"},{"line_number":31,"context_line":"            self.assertEqual(project_ref[\u0027enabled\u0027], project.enabled)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"            # There is no guarantee the attributes below are present in project"},{"line_number":34,"context_line":"            if hasattr(project_ref, \u0027description\u0027):"},{"line_number":35,"context_line":"                self.assertEqual(project_ref[\u0027description\u0027],"},{"line_number":36,"context_line":"                                 project.description)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_cc471f76","line":33,"range":{"start_line":33,"start_character":36,"end_line":33,"end_character":79},"updated":"2016-07-22 08:13:00.000000000","message":"It just how you define the project ref.","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"bc852cc948d8bc8c54c3d1079ba8fde0df489c45","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.assertEqual(project_ref[\u0027domain\u0027], project.domain_id)"},{"line_number":31,"context_line":"            self.assertEqual(project_ref[\u0027enabled\u0027], project.enabled)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"            # There is no guarantee the attributes below are present in project"},{"line_number":34,"context_line":"            if hasattr(project_ref, \u0027description\u0027):"},{"line_number":35,"context_line":"                self.assertEqual(project_ref[\u0027description\u0027],"},{"line_number":36,"context_line":"                                 project.description)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_1b57eb58","line":33,"range":{"start_line":33,"start_character":36,"end_line":33,"end_character":79},"in_reply_to":"dada55a8_cc471f76","updated":"2016-07-27 08:44:00.000000000","message":"I didn\u0027t get you, can you please elaborate? I have used a similar comment in all other client functional tests.","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c1d90bfe8abcd0c4eb9b98a927fef7284d2cf408","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            \u0027name\u0027: fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":61,"context_line":"            \u0027domain\u0027: self.project_domain_id,"},{"line_number":62,"context_line":"            \u0027enabled\u0027: True,"},{"line_number":63,"context_line":"            \u0027description\u0027: uuid.uuid4().hex}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        project \u003d self.client.projects.create(**project_ref)"},{"line_number":66,"context_line":"        self.addCleanup(self.client.projects.delete, project)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_8c2fe73d","line":63,"updated":"2016-07-22 08:13:00.000000000","message":"Maybe you can add `is_domain` in the ref, and some test about it. So that this functional test will cover all we want.\n\nsee: http://developer.openstack.org/api-ref/identity/v3/index.html?expanded\u003dcreate-project-detail#projects","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"bc852cc948d8bc8c54c3d1079ba8fde0df489c45","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            \u0027name\u0027: fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex,"},{"line_number":61,"context_line":"            \u0027domain\u0027: self.project_domain_id,"},{"line_number":62,"context_line":"            \u0027enabled\u0027: True,"},{"line_number":63,"context_line":"            \u0027description\u0027: uuid.uuid4().hex}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        project \u003d self.client.projects.create(**project_ref)"},{"line_number":66,"context_line":"        self.addCleanup(self.client.projects.delete, project)"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_a084a75d","line":63,"in_reply_to":"dada55a8_8c2fe73d","updated":"2016-07-27 08:44:00.000000000","message":"I am unable to use is_domain \u003d True, as I get a BadRequest: only root projects are allowed to act as domains. This can happen, if I can make a project without specifying domain attribute, as shown in the example in the above link you sent. But unable to do that.","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c1d90bfe8abcd0c4eb9b98a927fef7284d2cf408","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                          self.project_id,"},{"line_number":84,"context_line":"                          parents_as_list\u003dTrue, parents_as_ids\u003dTrue)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_get_hierarchy_as_list(self):"},{"line_number":87,"context_line":"        parent_project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":88,"context_line":"        self.useFixture(parent_project)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_fd1e0f5e","line":86,"updated":"2016-07-22 08:13:00.000000000","message":"nice!","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"bc852cc948d8bc8c54c3d1079ba8fde0df489c45","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                          self.project_id,"},{"line_number":84,"context_line":"                          parents_as_list\u003dTrue, parents_as_ids\u003dTrue)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_get_hierarchy_as_list(self):"},{"line_number":87,"context_line":"        parent_project \u003d fixtures.Project(self.client, self.project_domain_id)"},{"line_number":88,"context_line":"        self.useFixture(parent_project)"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_9b975beb","line":86,"in_reply_to":"dada55a8_fd1e0f5e","updated":"2016-07-27 08:44:00.000000000","message":"Thanks :)","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"c1d90bfe8abcd0c4eb9b98a927fef7284d2cf408","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        self.useFixture(project)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        new_name \u003d fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex"},{"line_number":159,"context_line":"        new_domain \u003d self.project_domain_id"},{"line_number":160,"context_line":"        new_description \u003d uuid.uuid4().hex"},{"line_number":161,"context_line":"        project_ret \u003d self.client.projects.update(project.id,"},{"line_number":162,"context_line":"                                                  name\u003dnew_name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_f2ae3e80","line":159,"range":{"start_line":159,"start_character":8,"end_line":159,"end_character":43},"updated":"2016-07-22 08:13:00.000000000","message":"are you sure the original domain is not self.project_domain_id?","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"bc852cc948d8bc8c54c3d1079ba8fde0df489c45","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        self.useFixture(project)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        new_name \u003d fixtures.RESOURCE_NAME_PREFIX + uuid.uuid4().hex"},{"line_number":159,"context_line":"        new_domain \u003d self.project_domain_id"},{"line_number":160,"context_line":"        new_description \u003d uuid.uuid4().hex"},{"line_number":161,"context_line":"        project_ret \u003d self.client.projects.update(project.id,"},{"line_number":162,"context_line":"                                                  name\u003dnew_name,"}],"source_content_type":"text/x-python","patch_set":14,"id":"dada55a8_1b8c0bd9","line":159,"range":{"start_line":159,"start_character":8,"end_line":159,"end_character":43},"in_reply_to":"dada55a8_f2ae3e80","updated":"2016-07-27 08:44:00.000000000","message":"Sorry my bad! Please see [1]. I wrote another test for this case.\n\nAlso, a spelling bug in [1] here, should be subsequent instead of subequent .\n\n[1] http://developer.openstack.org/api-ref/identity/v3/index.html?expanded\u003dcreate-project-detail,update-project-detail#update-project","commit_id":"55c89fd01a62ed37ce5d7aa7d59538382b202772"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"8dee6d315fcb18516da7588296c3eaf204ba0b5e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.assertEqual(project_ref[\u0027domain\u0027], project.domain_id)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"            # There is no guarantee the attributes below are present in project"},{"line_number":33,"context_line":"            if hasattr(project_ref, \u0027enabled\u0027):"},{"line_number":34,"context_line":"                self.assertEqual(project_ref[\u0027enabled\u0027], project.enabled)"},{"line_number":35,"context_line":"            if hasattr(project_ref, \u0027description\u0027):"},{"line_number":36,"context_line":"                self.assertEqual(project_ref[\u0027description\u0027],"},{"line_number":37,"context_line":"                                 project.description)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bacf61ea_1dbc8e04","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":73},"updated":"2016-07-28 12:21:21.000000000","message":"isn\u0027t enabled always returned ?","commit_id":"81d4ee71400e64abbfa83ffc42febed4ce23e723"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"7a2414d7d986827aac447840ea903c1358f24ea2","unresolved":false,"context_lines":[{"line_number":30,"context_line":"            self.assertEqual(project_ref[\u0027domain\u0027], project.domain_id)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"            # There is no guarantee the attributes below are present in project"},{"line_number":33,"context_line":"            if hasattr(project_ref, \u0027enabled\u0027):"},{"line_number":34,"context_line":"                self.assertEqual(project_ref[\u0027enabled\u0027], project.enabled)"},{"line_number":35,"context_line":"            if hasattr(project_ref, \u0027description\u0027):"},{"line_number":36,"context_line":"                self.assertEqual(project_ref[\u0027description\u0027],"},{"line_number":37,"context_line":"                                 project.description)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bacf61ea_a05c3926","line":34,"range":{"start_line":33,"start_character":0,"end_line":34,"end_character":73},"in_reply_to":"bacf61ea_1dbc8e04","updated":"2016-07-28 12:41:43.000000000","message":"yes, sorry I mixed up different things.","commit_id":"81d4ee71400e64abbfa83ffc42febed4ce23e723"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"8dee6d315fcb18516da7588296c3eaf204ba0b5e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                                         parent\u003dproject.id)"},{"line_number":97,"context_line":"        self.useFixture(child_project)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # Only parents and subtree projects that the current user has role"},{"line_number":100,"context_line":"        # assingments on are returned when asked for subtree_as_list and"},{"line_number":101,"context_line":"        # parents_as_list."},{"line_number":102,"context_line":"        role \u003d fixtures.Role(self.client)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bacf61ea_ddf676d6","line":99,"range":{"start_line":99,"start_character":27,"end_line":99,"end_character":43},"updated":"2016-07-28 12:21:21.000000000","message":"(nit) subprojects","commit_id":"81d4ee71400e64abbfa83ffc42febed4ce23e723"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"7a2414d7d986827aac447840ea903c1358f24ea2","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                                         parent\u003dproject.id)"},{"line_number":97,"context_line":"        self.useFixture(child_project)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # Only parents and subtree projects that the current user has role"},{"line_number":100,"context_line":"        # assingments on are returned when asked for subtree_as_list and"},{"line_number":101,"context_line":"        # parents_as_list."},{"line_number":102,"context_line":"        role \u003d fixtures.Role(self.client)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bacf61ea_c07ccd74","line":99,"range":{"start_line":99,"start_character":27,"end_line":99,"end_character":43},"in_reply_to":"bacf61ea_ddf676d6","updated":"2016-07-28 12:41:43.000000000","message":"Done","commit_id":"81d4ee71400e64abbfa83ffc42febed4ce23e723"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"8dee6d315fcb18516da7588296c3eaf204ba0b5e","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                            \u0027description\u0027: new_description})"},{"line_number":168,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def test_update_project_invalid_params(self):"},{"line_number":171,"context_line":"        project \u003d fixtures.Project(self.client)"},{"line_number":172,"context_line":"        self.useFixture(project)"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bacf61ea_7d8f8a23","line":170,"range":{"start_line":170,"start_character":28,"end_line":170,"end_character":42},"updated":"2016-07-28 12:21:21.000000000","message":"being more specific wouldn\u0027t hurt, like:\n\n    test_update_project_domain_not_allowed","commit_id":"81d4ee71400e64abbfa83ffc42febed4ce23e723"},{"author":{"_account_id":18176,"name":"Nisha Yadav","email":"ynisha11@gmail.com","username":"ynisha11"},"change_message_id":"7a2414d7d986827aac447840ea903c1358f24ea2","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                            \u0027description\u0027: new_description})"},{"line_number":168,"context_line":"        self.check_project(project_ret, project.ref)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def test_update_project_invalid_params(self):"},{"line_number":171,"context_line":"        project \u003d fixtures.Project(self.client)"},{"line_number":172,"context_line":"        self.useFixture(project)"},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"bacf61ea_e07471d0","line":170,"range":{"start_line":170,"start_character":28,"end_line":170,"end_character":42},"in_reply_to":"bacf61ea_7d8f8a23","updated":"2016-07-28 12:41:43.000000000","message":"Done","commit_id":"81d4ee71400e64abbfa83ffc42febed4ce23e723"}]}
