)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e3418215b1503dff13daa08b24efd3caa3de240f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Raildo Mascena \u003crmascena@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-05-29 16:02:40 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] - Exposing bug/1754677"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Test case exposing the issue described in that bug"},{"line_number":10,"context_line":"also, adding the expected result commented, to be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f7c97a3_8ecc9489","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":28},"updated":"2018-05-31 19:50:21.000000000","message":"We could add a descriptive title here, like:\n\n  Expose ambiguity bug in role assignment API","commit_id":"dc95fc881bffd272e6acd7850823346053f68716"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"23d2264ee90cc059cdcc13502f36eb33e88ac2b9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Raildo Mascena \u003crmascena@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-06-08 10:53:22 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Exposing bug/1754677"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Test case exposing the issue described in that bug"},{"line_number":10,"context_line":"also, adding the expected result commented, to be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5f7c97a3_0a25540a","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":20},"updated":"2018-06-19 14:33:07.000000000","message":"We could update this to be a little more descriptive. Something like:\n\n  Expose ambiguity bug when querying role assignments\n\nThen we can elaborate on that a bit more in the message below if we need to.","commit_id":"af8da1157a3255c16e6219409dd67ecb678fc22c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"23d2264ee90cc059cdcc13502f36eb33e88ac2b9","unresolved":false,"context_lines":[{"line_number":11,"context_line":"removed the commented tags, after the bug be fixed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I0e7b181977a1850a9a93472892407817561bfa0a"},{"line_number":14,"context_line":"Partial-Bug: #bug/1754677"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5f7c97a3_aa79c0fb","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":25},"updated":"2018-06-19 14:33:07.000000000","message":"Gerrrit\u0027s parser won\u0027t pick this up due to the current format. Doing the following should work though:\n\n  Partial-Bug: 1754677","commit_id":"af8da1157a3255c16e6219409dd67ecb678fc22c"}],"keystone/tests/unit/test_v3_assignment.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"47533be47da59cf7e6cef5d09df6a462e4ba30f3","unresolved":false,"context_lines":[{"line_number":1978,"context_line":""},{"line_number":1979,"context_line":"        self._test_list_role_assignments_include_names(role)"},{"line_number":1980,"context_line":""},{"line_number":1981,"context_line":"    def test_remove_assignment_for_project_acting_as_domain(self):"},{"line_number":1982,"context_line":"        \"\"\"Test goal: ensure when we have two role assignments for the project"},{"line_number":1983,"context_line":"        acting as domain, one dealing with it as a domain and other as a"},{"line_number":1984,"context_line":"        project, we still able to remove those assignments later."}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_2e6b0085","line":1981,"range":{"start_line":1981,"start_character":8,"end_line":1981,"end_character":59},"updated":"2018-05-31 19:48:43.000000000","message":"We can wrap this in a wip decorator, kinda like this.\n\nhttps://github.com/openstack/keystone/blob/37ce5417418f8acbd27f3dacb70c605b0fe48301/keystone/tests/unit/test_limits.py#L271","commit_id":"dc95fc881bffd272e6acd7850823346053f68716"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"47533be47da59cf7e6cef5d09df6a462e4ba30f3","unresolved":false,"context_lines":[{"line_number":2017,"context_line":"            result, expected_length\u003d2, resource_url\u003dcollection_url)"},{"line_number":2018,"context_line":"        self.assertRoleAssignmentInListResponse(result, assignment_domain)"},{"line_number":2019,"context_line":""},{"line_number":2020,"context_line":"        # Define URLs"},{"line_number":2021,"context_line":"        domain_url \u003d \u0027/domains/%s/users/%s/roles/%s\u0027 % ("},{"line_number":2022,"context_line":"            domain[\u0027id\u0027], user[\u0027id\u0027], role[\u0027id\u0027])"},{"line_number":2023,"context_line":"        self.delete(domain_url, expected_status\u003dhttp_client.BAD_REQUEST)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_ce284c34","line":2020,"range":{"start_line":2020,"start_character":8,"end_line":2020,"end_character":21},"updated":"2018-05-31 19:48:43.000000000","message":"nit: this probably isn\u0027t necessary since it\u0027s not really elaborating on details that can\u0027t be derived from reading the code.","commit_id":"dc95fc881bffd272e6acd7850823346053f68716"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"47533be47da59cf7e6cef5d09df6a462e4ba30f3","unresolved":false,"context_lines":[{"line_number":2022,"context_line":"            domain[\u0027id\u0027], user[\u0027id\u0027], role[\u0027id\u0027])"},{"line_number":2023,"context_line":"        self.delete(domain_url, expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":2024,"context_line":""},{"line_number":2025,"context_line":"        # Expected result"},{"line_number":2026,"context_line":"        \u0027\u0027\u0027"},{"line_number":2027,"context_line":"        collection_url \u003d \u0027/role_assignments?user.id\u003d%(user_id)s\u0027 % ("},{"line_number":2028,"context_line":"                         {\u0027user_id\u0027: user[\u0027id\u0027]})"},{"line_number":2029,"context_line":"        result \u003d self.get(collection_url)"},{"line_number":2030,"context_line":"        # We have two role assignments based in both roles for the domain and"},{"line_number":2031,"context_line":"        # project scope"},{"line_number":2032,"context_line":"        self.assertValidRoleAssignmentListResponse("},{"line_number":2033,"context_line":"            result, expected_length\u003d1, resource_url\u003dcollection_url)"},{"line_number":2034,"context_line":"        self.assertRoleAssignmentInListResponse(result, assignment_domain)"},{"line_number":2035,"context_line":"        \u0027\u0027\u0027"},{"line_number":2036,"context_line":""},{"line_number":2037,"context_line":"    def test_list_inherited_role_assignments_include_names(self):"},{"line_number":2038,"context_line":"        \"\"\"Call ``GET /role_assignments?include_names``."}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_ceddac41","line":2035,"range":{"start_line":2025,"start_character":8,"end_line":2035,"end_character":11},"updated":"2018-05-31 19:48:43.000000000","message":"With the wip decorator, you can write the test as you would expect it to behave, then when it start passing the test will fail to let you know to remove the decorate and enforce the correct behavior.\n\nKinda like what we did here - https://review.openstack.org/#/q/topic:bug/1733754+(status:open+OR+status:merged)","commit_id":"dc95fc881bffd272e6acd7850823346053f68716"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"23d2264ee90cc059cdcc13502f36eb33e88ac2b9","unresolved":false,"context_lines":[{"line_number":1979,"context_line":""},{"line_number":1980,"context_line":"        self._test_list_role_assignments_include_names(role)"},{"line_number":1981,"context_line":""},{"line_number":1982,"context_line":"    @test_utils.wip(\"Skipped until Bug 1754677 is resolved\")"},{"line_number":1983,"context_line":"    def test_remove_assignment_for_project_acting_as_domain(self):"},{"line_number":1984,"context_line":"        \"\"\"Test goal: remove assignment for project acting as domain."},{"line_number":1985,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_6ab2c8e7","line":1982,"range":{"start_line":1982,"start_character":4,"end_line":1982,"end_character":60},"updated":"2018-06-19 14:33:07.000000000","message":"This decorator supports passing in an exception that allows you to specify the expected exception, which  allows us to be more sure of when things start failing due to the fix landing [0]. It also has a placeholder for the bug number. So we could do something like this [1].\n\n[0] https://git.openstack.org/cgit/openstack/keystone/tree/keystone/tests/unit/utils.py#n52\n[1] http://paste.openstack.org/show/723832/","commit_id":"af8da1157a3255c16e6219409dd67ecb678fc22c"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2d2c7be3e640dabde8310b24d05e658257a8e77b","unresolved":false,"context_lines":[{"line_number":1993,"context_line":"        - Grant a role for this user in the same entity as a project;"},{"line_number":1994,"context_line":"        - Ensure that both assignments were created and it was valid;"},{"line_number":1995,"context_line":"        - Remove the domain assignment for the user and show that the project"},{"line_number":1996,"context_line":"        assignment for him still valid"},{"line_number":1997,"context_line":""},{"line_number":1998,"context_line":"        \"\"\""},{"line_number":1999,"context_line":"        role \u003d unit.new_role_ref()"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_d23837d4","line":1996,"updated":"2018-06-11 02:58:32.000000000","message":"it\u0027ll be cool that if you can test the case that removing either, another is still valid.","commit_id":"af8da1157a3255c16e6219409dd67ecb678fc22c"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"08af61d9df8d4230743ff48e6c648dcf460feca1","unresolved":false,"context_lines":[{"line_number":1993,"context_line":"        - Grant a role for this user in the same entity as a project;"},{"line_number":1994,"context_line":"        - Ensure that both assignments were created and it was valid;"},{"line_number":1995,"context_line":"        - Remove the domain assignment for the user and show that the project"},{"line_number":1996,"context_line":"        assignment for him still valid"},{"line_number":1997,"context_line":""},{"line_number":1998,"context_line":"        \"\"\""},{"line_number":1999,"context_line":"        role \u003d unit.new_role_ref()"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_8699066e","line":1996,"in_reply_to":"5f7c97a3_92c2b6e8","updated":"2018-06-12 01:49:55.000000000","message":"++, it\u0027ll make the test stronger. Just a suggestion anyway.","commit_id":"af8da1157a3255c16e6219409dd67ecb678fc22c"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"299255ff4d9da506252e10c61f0206cd1cc18f68","unresolved":false,"context_lines":[{"line_number":1993,"context_line":"        - Grant a role for this user in the same entity as a project;"},{"line_number":1994,"context_line":"        - Ensure that both assignments were created and it was valid;"},{"line_number":1995,"context_line":"        - Remove the domain assignment for the user and show that the project"},{"line_number":1996,"context_line":"        assignment for him still valid"},{"line_number":1997,"context_line":""},{"line_number":1998,"context_line":"        \"\"\""},{"line_number":1999,"context_line":"        role \u003d unit.new_role_ref()"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_92c2b6e8","line":1996,"in_reply_to":"5f7c97a3_d23837d4","updated":"2018-06-11 12:43:13.000000000","message":"IIUC, you\u0027re suggesting to have another case to remove the project assignment and show that the domain side still valid?","commit_id":"af8da1157a3255c16e6219409dd67ecb678fc22c"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"2d2c7be3e640dabde8310b24d05e658257a8e77b","unresolved":false,"context_lines":[{"line_number":2029,"context_line":"                         {\u0027user_id\u0027: user[\u0027id\u0027]})"},{"line_number":2030,"context_line":"        result \u003d self.get(collection_url)"},{"line_number":2031,"context_line":"        # Now we only have one assignment for the project scope since the"},{"line_number":2032,"context_line":"        # domain scope was removed.jjj"},{"line_number":2033,"context_line":"        self.assertValidRoleAssignmentListResponse("},{"line_number":2034,"context_line":"            result, expected_length\u003d1, resource_url\u003dcollection_url)"},{"line_number":2035,"context_line":"        self.assertRoleAssignmentInListResponse(result, assignment_project)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_32ff2b02","line":2032,"range":{"start_line":2032,"start_character":35,"end_line":2032,"end_character":38},"updated":"2018-06-11 02:58:32.000000000","message":"maybe a typo?","commit_id":"af8da1157a3255c16e6219409dd67ecb678fc22c"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"299255ff4d9da506252e10c61f0206cd1cc18f68","unresolved":false,"context_lines":[{"line_number":2029,"context_line":"                         {\u0027user_id\u0027: user[\u0027id\u0027]})"},{"line_number":2030,"context_line":"        result \u003d self.get(collection_url)"},{"line_number":2031,"context_line":"        # Now we only have one assignment for the project scope since the"},{"line_number":2032,"context_line":"        # domain scope was removed.jjj"},{"line_number":2033,"context_line":"        self.assertValidRoleAssignmentListResponse("},{"line_number":2034,"context_line":"            result, expected_length\u003d1, resource_url\u003dcollection_url)"},{"line_number":2035,"context_line":"        self.assertRoleAssignmentInListResponse(result, assignment_project)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_d2f58e52","line":2032,"range":{"start_line":2032,"start_character":35,"end_line":2032,"end_character":38},"in_reply_to":"5f7c97a3_32ff2b02","updated":"2018-06-11 12:43:13.000000000","message":"some issue to be using vim hehehe, I\u0027ll remove it.","commit_id":"af8da1157a3255c16e6219409dd67ecb678fc22c"}]}
