)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e41b7182591f26e2c3f7a90271d34d23d3274ec6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add tests in preparation of projects acting as a domain"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In subsequent patches projects will start acting as domains."},{"line_number":10,"context_line":"This patch adds REST level tests, protected by the wip decorator,"},{"line_number":11,"context_line":"that will validate the external view of projacts acting as domains."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a68dd71_03866ab9","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":10},"updated":"2016-01-26 16:31:17.000000000","message":"good catch to split it this way. Guess it makes me a co-author of this patch, right?","commit_id":"8873621290d0c7722e8402c4aaabbfd9dfb47de2"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"125689980e7596700d3493826cede8c348d19824","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add tests in preparation of projects acting as a domain"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In subsequent patches projects will start acting as domains."},{"line_number":10,"context_line":"This patch adds REST level tests, protected by the wip decorator,"},{"line_number":11,"context_line":"that will validate the external view of projacts acting as domains."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a68dd71_e6948445","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":10},"in_reply_to":"9a68dd71_03866ab9","updated":"2016-01-26 16:32:28.000000000","message":"Yes, I meant to re-create the authors here - quite right.","commit_id":"8873621290d0c7722e8402c4aaabbfd9dfb47de2"}],"keystone/tests/unit/core.py":[{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e41b7182591f26e2c3f7a90271d34d23d3274ec6","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        \u0027domain_id\u0027: domain_id,"},{"line_number":319,"context_line":"        \u0027is_domain\u0027: is_domain,"},{"line_number":320,"context_line":"    }"},{"line_number":321,"context_line":"    # NOTE(henry-nash): We don\u0027t include parent_id in the initial list above"},{"line_number":322,"context_line":"    # since specifying it is optional depending on where the project sits in"},{"line_number":323,"context_line":"    # the hierarchy (and a parent_id of None has meaning - i.e. it\u0027s a top"},{"line_number":324,"context_line":"    # level project)."}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_83c01ae2","line":321,"range":{"start_line":321,"start_character":6,"end_line":321,"end_character":21},"updated":"2016-01-26 16:31:17.000000000","message":"I\u0027m not sure if this methods should be aware of any manager logic, but wouldn\u0027t it be better if we did some set of the parent_id here? For example, if we pass domain_id\u003dNone and is_domain\u003dTrue, we can easily set the parent_id to None. It would remove a lot of tests changes.","commit_id":"8873621290d0c7722e8402c4aaabbfd9dfb47de2"}],"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"fc6f0dfbeadca3e07cc5791b54321e801f7d1911","unresolved":false,"context_lines":[{"line_number":2719,"context_line":""},{"line_number":2720,"context_line":"    @unit.skip_if_no_multiple_domains_support"},{"line_number":2721,"context_line":"    def test_create_project_passing_is_domain_flag_true(self):"},{"line_number":2722,"context_line":"        project \u003d unit.new_project_ref(domain_id\u003dDEFAULT_DOMAIN_ID,"},{"line_number":2723,"context_line":"                                       is_domain\u003dTrue)"},{"line_number":2724,"context_line":""},{"line_number":2725,"context_line":"        ref \u003d self.resource_api.create_project(project[\u0027id\u0027], project)"},{"line_number":2726,"context_line":"        self.assertTrue(ref[\u0027is_domain\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_8b329e5d","side":"PARENT","line":2723,"range":{"start_line":2722,"start_character":8,"end_line":2723,"end_character":54},"updated":"2016-02-17 12:34:08.000000000","message":"So it is now possible to create an is_domain project under an actual domain. Looks like the code is still incomplete, but I am sure this is going to be addressed in the subsequent patch that implement domains as projects https://review.openstack.org/#/c/231289","commit_id":"72faa028517eea94337537bcf7aa3480ffa2517a"}],"keystone/tests/unit/test_v3_resource.py":[{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e41b7182591f26e2c3f7a90271d34d23d3274ec6","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        r \u003d self.get(\u0027/domains/%(domain_id)s\u0027 % {"},{"line_number":128,"context_line":"            \u0027domain_id\u0027: r.result[\u0027project\u0027][\u0027id\u0027]})"},{"line_number":129,"context_line":"        self.assertValidDomainResponse(r)"},{"line_number":130,"context_line":"        self.assertIsNotNone(r.result[\u0027domain\u0027])"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def test_list_domains(self):"},{"line_number":133,"context_line":"        \"\"\"Call ``GET /domains``.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_663654b6","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":47},"updated":"2016-01-26 16:31:17.000000000","message":"this line looks useless","commit_id":"8873621290d0c7722e8402c4aaabbfd9dfb47de2"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"e41b7182591f26e2c3f7a90271d34d23d3274ec6","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            \u0027domain_id\u0027: self.domain_id},"},{"line_number":186,"context_line":"            body\u003d{\u0027domain\u0027: ref})"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    @test_utils.wip(\u0027waiting for projects acting as domains implementation\u0027)"},{"line_number":189,"context_line":"    def test_update_domain_updates_is_domain_project(self):"},{"line_number":190,"context_line":"        \"\"\"Call ``PATCH /domains`` and check the project that acts as a domain"},{"line_number":191,"context_line":"        is updated."}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_26dcdc45","line":188,"updated":"2016-01-26 16:31:17.000000000","message":"Do we need do add extra tests to update and delete, doing the operation in the project and checking it at the domain?","commit_id":"8873621290d0c7722e8402c4aaabbfd9dfb47de2"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"fc6f0dfbeadca3e07cc5791b54321e801f7d1911","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.assertValidProjectResponse(r)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # The created project has is_domain flag as True"},{"line_number":112,"context_line":"        self.assertTrue(r.result[\u0027project\u0027][\u0027is_domain\u0027])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # And its parent_id and domain_id attributes are equal"},{"line_number":115,"context_line":"        self.assertEqual(r.result[\u0027project\u0027][\u0027parent_id\u0027],"}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_9e281e88","line":112,"updated":"2016-02-17 12:34:08.000000000","message":"Also check \u0027name\u0027 and \u0027enabled\u0027 flags are equal for domain and project","commit_id":"d8a92f602fc66f2b9db017a48f9394b37c0213a9"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"421f470efe9df7cf2b4437bedc0ccd5ae0c923cb","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.assertValidProjectResponse(r)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # The created project has is_domain flag as True"},{"line_number":112,"context_line":"        self.assertTrue(r.result[\u0027project\u0027][\u0027is_domain\u0027])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # And its parent_id and domain_id attributes are equal"},{"line_number":115,"context_line":"        self.assertEqual(r.result[\u0027project\u0027][\u0027parent_id\u0027],"}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_cf565729","line":112,"in_reply_to":"dae33548_9e281e88","updated":"2016-02-17 19:41:54.000000000","message":"will do in a follow-up patch","commit_id":"d8a92f602fc66f2b9db017a48f9394b37c0213a9"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"fc6f0dfbeadca3e07cc5791b54321e801f7d1911","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        self.assertTrue(r.result[\u0027project\u0027][\u0027is_domain\u0027])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # And its parent_id and domain_id attributes are equal"},{"line_number":115,"context_line":"        self.assertEqual(r.result[\u0027project\u0027][\u0027parent_id\u0027],"},{"line_number":116,"context_line":"                         r.result[\u0027project\u0027][\u0027domain_id\u0027])"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @test_utils.wip(\u0027waiting for projects acting as domains implementation\u0027)"},{"line_number":119,"context_line":"    def test_create_is_domain_project_creates_domain(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_2bb39299","line":116,"range":{"start_line":115,"start_character":0,"end_line":116,"end_character":58},"updated":"2016-02-17 12:34:08.000000000","message":"So a top level project (is_domain) still has a parent_it and domain_id ? Where do they point to ? I thought parent_id should be None; isn\u0027t this the intent of https://review.openstack.org/#/c/264533","commit_id":"d8a92f602fc66f2b9db017a48f9394b37c0213a9"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"421f470efe9df7cf2b4437bedc0ccd5ae0c923cb","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        self.assertTrue(r.result[\u0027project\u0027][\u0027is_domain\u0027])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # And its parent_id and domain_id attributes are equal"},{"line_number":115,"context_line":"        self.assertEqual(r.result[\u0027project\u0027][\u0027parent_id\u0027],"},{"line_number":116,"context_line":"                         r.result[\u0027project\u0027][\u0027domain_id\u0027])"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @test_utils.wip(\u0027waiting for projects acting as domains implementation\u0027)"},{"line_number":119,"context_line":"    def test_create_is_domain_project_creates_domain(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_8fb28f92","line":116,"range":{"start_line":115,"start_character":0,"end_line":116,"end_character":58},"in_reply_to":"dae33548_0f7b1ff6","updated":"2016-02-17 19:41:54.000000000","message":"Done","commit_id":"d8a92f602fc66f2b9db017a48f9394b37c0213a9"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"c6fb45861861dfdb15728765ebb4db1f2bd679ad","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        self.assertTrue(r.result[\u0027project\u0027][\u0027is_domain\u0027])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # And its parent_id and domain_id attributes are equal"},{"line_number":115,"context_line":"        self.assertEqual(r.result[\u0027project\u0027][\u0027parent_id\u0027],"},{"line_number":116,"context_line":"                         r.result[\u0027project\u0027][\u0027domain_id\u0027])"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @test_utils.wip(\u0027waiting for projects acting as domains implementation\u0027)"},{"line_number":119,"context_line":"    def test_create_is_domain_project_creates_domain(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_0f7b1ff6","line":116,"range":{"start_line":115,"start_character":0,"end_line":116,"end_character":58},"in_reply_to":"dae33548_2bb39299","updated":"2016-02-17 19:34:28.000000000","message":"If both are null, use assertIsNone for both","commit_id":"d8a92f602fc66f2b9db017a48f9394b37c0213a9"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"fc6f0dfbeadca3e07cc5791b54321e801f7d1911","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        r \u003d self.get(\u0027/domains/%(domain_id)s\u0027 % {"},{"line_number":128,"context_line":"            \u0027domain_id\u0027: r.result[\u0027project\u0027][\u0027id\u0027]})"},{"line_number":129,"context_line":"        self.assertValidDomainResponse(r)"},{"line_number":130,"context_line":"        self.assertIsNotNone(r.result[\u0027domain\u0027])"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def test_list_domains(self):"},{"line_number":133,"context_line":"        \"\"\"Call ``GET /domains``.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_1e3d2ec4","line":130,"updated":"2016-02-17 12:34:08.000000000","message":"Also check \u0027name\u0027 and \u0027enabled\u0027 flags are equal for domain and project","commit_id":"d8a92f602fc66f2b9db017a48f9394b37c0213a9"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"421f470efe9df7cf2b4437bedc0ccd5ae0c923cb","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        r \u003d self.get(\u0027/domains/%(domain_id)s\u0027 % {"},{"line_number":128,"context_line":"            \u0027domain_id\u0027: r.result[\u0027project\u0027][\u0027id\u0027]})"},{"line_number":129,"context_line":"        self.assertValidDomainResponse(r)"},{"line_number":130,"context_line":"        self.assertIsNotNone(r.result[\u0027domain\u0027])"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def test_list_domains(self):"},{"line_number":133,"context_line":"        \"\"\"Call ``GET /domains``.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_af531338","line":130,"in_reply_to":"dae33548_1e3d2ec4","updated":"2016-02-17 19:41:54.000000000","message":"will do in a follow-up patch","commit_id":"d8a92f602fc66f2b9db017a48f9394b37c0213a9"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"fc6f0dfbeadca3e07cc5791b54321e801f7d1911","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            body\u003d{\u0027domain\u0027: ref})"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    @test_utils.wip(\u0027waiting for projects acting as domains implementation\u0027)"},{"line_number":189,"context_line":"    def test_update_domain_updates_is_domain_project(self):"},{"line_number":190,"context_line":"        \"\"\"Call ``PATCH /domains`` and check the project that acts as a domain"},{"line_number":191,"context_line":"        is updated."},{"line_number":192,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_9e9dbebe","line":189,"range":{"start_line":189,"start_character":8,"end_line":189,"end_character":52},"updated":"2016-02-17 12:34:08.000000000","message":"Since disabling is a special case of update (some different logic is done around disabling entities, like different checks, etc), I\u0027d suggest making this method test_disable_domain_disables_is_domain_project\n\nAnd create another to update the name attribute called test_update_domain_updates_is_domain_project","commit_id":"d8a92f602fc66f2b9db017a48f9394b37c0213a9"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"421f470efe9df7cf2b4437bedc0ccd5ae0c923cb","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            body\u003d{\u0027domain\u0027: ref})"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    @test_utils.wip(\u0027waiting for projects acting as domains implementation\u0027)"},{"line_number":189,"context_line":"    def test_update_domain_updates_is_domain_project(self):"},{"line_number":190,"context_line":"        \"\"\"Call ``PATCH /domains`` and check the project that acts as a domain"},{"line_number":191,"context_line":"        is updated."},{"line_number":192,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"dae33548_8f272fc9","line":189,"range":{"start_line":189,"start_character":8,"end_line":189,"end_character":52},"in_reply_to":"dae33548_9e9dbebe","updated":"2016-02-17 19:41:54.000000000","message":"ok. will do in a follow-up patch","commit_id":"d8a92f602fc66f2b9db017a48f9394b37c0213a9"}]}
