)]}'
{"keystone/assignment/controllers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"80334bef0d1d1e1aab440af9f976e6a89d357d07","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        :returns: a list of grants the user has on the system"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        \"\"\""},{"line_number":515,"context_line":"        refs \u003d self.assignment_api.list_system_grants_for_user(user_id)"},{"line_number":516,"context_line":"        return GrantAssignmentV3.wrap_collection(request.context_dict, refs)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    @controller.protected(callback\u003d_check_grant_protection)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_6ea89176","line":515,"range":{"start_line":515,"start_character":15,"end_line":515,"end_character":19},"updated":"2018-01-05 15:46:22.000000000","message":"This needs to use PROVIDERS","commit_id":"018cd37b06a905b2469908643af46f1098f13595"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8588f3d70da8d8283ac9e04231d7c30942977a7d","unresolved":false,"context_lines":[{"line_number":512,"context_line":"        :returns: a list of grants the user has on the system"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        \"\"\""},{"line_number":515,"context_line":"        refs \u003d self.assignment_api.list_system_grants_for_user(user_id)"},{"line_number":516,"context_line":"        return GrantAssignmentV3.wrap_collection(request.context_dict, refs)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    @controller.protected(callback\u003d_check_grant_protection)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_6eef31b0","line":515,"range":{"start_line":515,"start_character":15,"end_line":515,"end_character":19},"in_reply_to":"9f91af0f_6ea89176","updated":"2018-01-05 15:48:27.000000000","message":"Done","commit_id":"018cd37b06a905b2469908643af46f1098f13595"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"80334bef0d1d1e1aab440af9f976e6a89d357d07","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        :param user_id: the ID of the user to check"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        \"\"\""},{"line_number":527,"context_line":"        self.assignment_api.check_system_grant_for_user(user_id, role_id)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    @controller.protected(callback\u003d_check_grant_protection)"},{"line_number":530,"context_line":"    def create_system_grant_for_user(self, request, role_id, user_id):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_2ebcc9b9","line":527,"range":{"start_line":527,"start_character":8,"end_line":527,"end_character":12},"updated":"2018-01-05 15:46:22.000000000","message":"This needs to use PROVIDERS","commit_id":"018cd37b06a905b2469908643af46f1098f13595"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8588f3d70da8d8283ac9e04231d7c30942977a7d","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        :param user_id: the ID of the user to check"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        \"\"\""},{"line_number":527,"context_line":"        self.assignment_api.check_system_grant_for_user(user_id, role_id)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"    @controller.protected(callback\u003d_check_grant_protection)"},{"line_number":530,"context_line":"    def create_system_grant_for_user(self, request, role_id, user_id):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_ce351d48","line":527,"range":{"start_line":527,"start_character":8,"end_line":527,"end_character":12},"in_reply_to":"9f91af0f_2ebcc9b9","updated":"2018-01-05 15:48:27.000000000","message":"Done","commit_id":"018cd37b06a905b2469908643af46f1098f13595"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"80334bef0d1d1e1aab440af9f976e6a89d357d07","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        :param user_id: the ID of the user"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"        \"\"\""},{"line_number":538,"context_line":"        self.assignment_api.create_system_grant_for_user(user_id, role_id)"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    @controller.protected(callback\u003dfunctools.partial("},{"line_number":541,"context_line":"        _check_grant_protection, allow_no_user\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_ceb2fde6","line":538,"range":{"start_line":538,"start_character":8,"end_line":538,"end_character":12},"updated":"2018-01-05 15:46:22.000000000","message":"This needs to use PROVIDERS","commit_id":"018cd37b06a905b2469908643af46f1098f13595"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8588f3d70da8d8283ac9e04231d7c30942977a7d","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        :param user_id: the ID of the user"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"        \"\"\""},{"line_number":538,"context_line":"        self.assignment_api.create_system_grant_for_user(user_id, role_id)"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    @controller.protected(callback\u003dfunctools.partial("},{"line_number":541,"context_line":"        _check_grant_protection, allow_no_user\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_ee38213e","line":538,"range":{"start_line":538,"start_character":8,"end_line":538,"end_character":12},"in_reply_to":"9f91af0f_ceb2fde6","updated":"2018-01-05 15:48:27.000000000","message":"Done","commit_id":"018cd37b06a905b2469908643af46f1098f13595"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"80334bef0d1d1e1aab440af9f976e6a89d357d07","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        :param user_id: the ID of the user"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"        \"\"\""},{"line_number":550,"context_line":"        self.assignment_api.delete_system_grant_for_user(user_id, role_id)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"class RoleAssignmentV3(controller.V3Controller):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_eeb581ce","line":550,"range":{"start_line":550,"start_character":8,"end_line":550,"end_character":12},"updated":"2018-01-05 15:46:22.000000000","message":"This needs to use PROVIDERS","commit_id":"018cd37b06a905b2469908643af46f1098f13595"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8588f3d70da8d8283ac9e04231d7c30942977a7d","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        :param user_id: the ID of the user"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"        \"\"\""},{"line_number":550,"context_line":"        self.assignment_api.delete_system_grant_for_user(user_id, role_id)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"class RoleAssignmentV3(controller.V3Controller):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_8e3f1524","line":550,"range":{"start_line":550,"start_character":8,"end_line":550,"end_character":12},"in_reply_to":"9f91af0f_eeb581ce","updated":"2018-01-05 15:48:27.000000000","message":"Done","commit_id":"018cd37b06a905b2469908643af46f1098f13595"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6b0fb6c223449d97242f4d9d1d715902fa76a90e","unresolved":false,"context_lines":[{"line_number":785,"context_line":"                         self.query_filter_is_true(params[\u0027include_names\u0027]))"},{"line_number":786,"context_line":"        system \u003d ("},{"line_number":787,"context_line":"            \u0027scope.system\u0027 in params and"},{"line_number":788,"context_line":"            self.query_filter_is_true(params[\u0027scope.system\u0027])"},{"line_number":789,"context_line":"        )"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":"        if \u0027scope.OS-INHERIT:inherited_to\u0027 in params:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f91af0f_5b6c1b9b","line":788,"updated":"2018-01-09 22:32:37.000000000","message":"I\u0027m wondering if this shouldn\u0027t be a boolean anymore...\n\nWhat if it were:\n\n  scope.system\u003dall\n\nInstead of \n\n  scope.system\u003dTrue\n\nWhich might make it easier if we ever implement a system hierarchy in the future.","commit_id":"e6582332d5df2c0638a2023fd4bd931f03dabf9b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"77f63a8ec7949cfe332cea30df2d4fea0691e58f","unresolved":false,"context_lines":[{"line_number":785,"context_line":"                         self.query_filter_is_true(params[\u0027include_names\u0027]))"},{"line_number":786,"context_line":"        system \u003d ("},{"line_number":787,"context_line":"            \u0027scope.system\u0027 in params and"},{"line_number":788,"context_line":"            self.query_filter_is_true(params[\u0027scope.system\u0027])"},{"line_number":789,"context_line":"        )"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":"        if \u0027scope.OS-INHERIT:inherited_to\u0027 in params:"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f96bb07_a8bcb4bb","line":788,"in_reply_to":"9f91af0f_5b6c1b9b","updated":"2018-01-10 21:55:57.000000000","message":"Done","commit_id":"e6582332d5df2c0638a2023fd4bd931f03dabf9b"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"ac795a1812c35c9b3d7246ca77057e1b984c3c45","unresolved":false,"context_lines":[{"line_number":801,"context_line":"            # None means querying both inherited and direct assignments"},{"line_number":802,"context_line":"            inherited \u003d None"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        self._assert_domain_nand_project(params.get(\u0027scope.domain.id\u0027),"},{"line_number":805,"context_line":"                                         params.get(\u0027scope.project.id\u0027))"},{"line_number":806,"context_line":"        self._assert_system_nand_domain("},{"line_number":807,"context_line":"            params.get(\u0027scope.system\u0027), params.get(\u0027scope.domain.id\u0027)"},{"line_number":808,"context_line":"        )"},{"line_number":809,"context_line":"        self._assert_system_nand_project("},{"line_number":810,"context_line":"            params.get(\u0027scope.system\u0027), params.get(\u0027scope.project.id\u0027)"},{"line_number":811,"context_line":"        )"},{"line_number":812,"context_line":"        self._assert_user_nand_group(params.get(\u0027user.id\u0027),"},{"line_number":813,"context_line":"                                     params.get(\u0027group.id\u0027))"},{"line_number":814,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7f96bb07_d44759bc","line":811,"range":{"start_line":804,"start_character":0,"end_line":811,"end_character":9},"updated":"2018-01-11 02:08:05.000000000","message":"How about merge them into one?","commit_id":"410a8f691f09e0c6e950ca098c82f7ebbbd990ef"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8be887d86f214758b59982a9d965246dc75b6202","unresolved":false,"context_lines":[{"line_number":801,"context_line":"            # None means querying both inherited and direct assignments"},{"line_number":802,"context_line":"            inherited \u003d None"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        self._assert_domain_nand_project(params.get(\u0027scope.domain.id\u0027),"},{"line_number":805,"context_line":"                                         params.get(\u0027scope.project.id\u0027))"},{"line_number":806,"context_line":"        self._assert_system_nand_domain("},{"line_number":807,"context_line":"            params.get(\u0027scope.system\u0027), params.get(\u0027scope.domain.id\u0027)"},{"line_number":808,"context_line":"        )"},{"line_number":809,"context_line":"        self._assert_system_nand_project("},{"line_number":810,"context_line":"            params.get(\u0027scope.system\u0027), params.get(\u0027scope.project.id\u0027)"},{"line_number":811,"context_line":"        )"},{"line_number":812,"context_line":"        self._assert_user_nand_group(params.get(\u0027user.id\u0027),"},{"line_number":813,"context_line":"                                     params.get(\u0027group.id\u0027))"},{"line_number":814,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7f96bb07_dc0d1091","line":811,"range":{"start_line":804,"start_character":0,"end_line":811,"end_character":9},"in_reply_to":"7f96bb07_41a037f5","updated":"2018-01-12 14:22:01.000000000","message":"I certainly thought about keeping them as one check, but I opted for simpler truth tables with 2 input instead of 3.\n\nhttps://en.wikipedia.org/wiki/NAND_logic","commit_id":"410a8f691f09e0c6e950ca098c82f7ebbbd990ef"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"bda6abd32cdebc080a90d4e2c95e7a5bc305eb85","unresolved":false,"context_lines":[{"line_number":801,"context_line":"            # None means querying both inherited and direct assignments"},{"line_number":802,"context_line":"            inherited \u003d None"},{"line_number":803,"context_line":""},{"line_number":804,"context_line":"        self._assert_domain_nand_project(params.get(\u0027scope.domain.id\u0027),"},{"line_number":805,"context_line":"                                         params.get(\u0027scope.project.id\u0027))"},{"line_number":806,"context_line":"        self._assert_system_nand_domain("},{"line_number":807,"context_line":"            params.get(\u0027scope.system\u0027), params.get(\u0027scope.domain.id\u0027)"},{"line_number":808,"context_line":"        )"},{"line_number":809,"context_line":"        self._assert_system_nand_project("},{"line_number":810,"context_line":"            params.get(\u0027scope.system\u0027), params.get(\u0027scope.project.id\u0027)"},{"line_number":811,"context_line":"        )"},{"line_number":812,"context_line":"        self._assert_user_nand_group(params.get(\u0027user.id\u0027),"},{"line_number":813,"context_line":"                                     params.get(\u0027group.id\u0027))"},{"line_number":814,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7f96bb07_41a037f5","line":811,"range":{"start_line":804,"start_character":0,"end_line":811,"end_character":9},"in_reply_to":"7f96bb07_d44759bc","updated":"2018-01-12 13:26:19.000000000","message":"I think it\u0027s clearer the way it is","commit_id":"410a8f691f09e0c6e950ca098c82f7ebbbd990ef"}],"keystone/assignment/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"80334bef0d1d1e1aab440af9f976e6a89d357d07","unresolved":false,"context_lines":[{"line_number":1115,"context_line":"        for grant in grants:"},{"line_number":1116,"context_line":"            grant_ids.append(grant[\u0027role_id\u0027])"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        return self.role_api.list_roles_from_ids(grant_ids)"},{"line_number":1119,"context_line":""},{"line_number":1120,"context_line":"    def create_system_grant_for_user(self, user_id, role_id):"},{"line_number":1121,"context_line":"        \"\"\"Grant a user a role on the system."}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_8eccf56a","line":1118,"range":{"start_line":1118,"start_character":15,"end_line":1118,"end_character":19},"updated":"2018-01-05 15:46:22.000000000","message":"This needs to use PROVIDERS","commit_id":"018cd37b06a905b2469908643af46f1098f13595"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8588f3d70da8d8283ac9e04231d7c30942977a7d","unresolved":false,"context_lines":[{"line_number":1115,"context_line":"        for grant in grants:"},{"line_number":1116,"context_line":"            grant_ids.append(grant[\u0027role_id\u0027])"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        return self.role_api.list_roles_from_ids(grant_ids)"},{"line_number":1119,"context_line":""},{"line_number":1120,"context_line":"    def create_system_grant_for_user(self, user_id, role_id):"},{"line_number":1121,"context_line":"        \"\"\"Grant a user a role on the system."}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_ce0e7d8c","line":1118,"range":{"start_line":1118,"start_character":15,"end_line":1118,"end_character":19},"in_reply_to":"9f91af0f_8eccf56a","updated":"2018-01-05 15:48:27.000000000","message":"Done","commit_id":"018cd37b06a905b2469908643af46f1098f13595"}],"keystone/common/policy.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"680d3e75d1a7d6d672a4e29027ed48ef978fe5bd","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    return _ENFORCER.enforce("},{"line_number":72,"context_line":"        action, target, credentials, enforce_scope\u003dFalse, **extra"},{"line_number":73,"context_line":"    )"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def register_rules(enforcer):"},{"line_number":77,"context_line":"    enforcer.register_defaults(policies.list_rules())"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_e834c3e0","line":74,"updated":"2017-12-14 22:48:47.000000000","message":"We could also introduce a new configuration option that allows deployers to toggle this when they are ready... Thoughts?","commit_id":"1b9fc3e0bedea831267369be1b0445d1e356ee29"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e98d60fa9d23ff26d0cf6ab5c580a8f94d604ea9","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    return _ENFORCER.enforce("},{"line_number":72,"context_line":"        action, target, credentials, enforce_scope\u003dFalse, **extra"},{"line_number":73,"context_line":"    )"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def register_rules(enforcer):"},{"line_number":77,"context_line":"    enforcer.register_defaults(policies.list_rules())"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_1396aef1","line":74,"in_reply_to":"df87a7cf_08680785","updated":"2017-12-18 22:19:38.000000000","message":"Actually - a 403 is more appropriate.","commit_id":"1b9fc3e0bedea831267369be1b0445d1e356ee29"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"df0bce10780c085cfec8917c4556c71e67fe3bdc","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    return _ENFORCER.enforce("},{"line_number":72,"context_line":"        action, target, credentials, enforce_scope\u003dFalse, **extra"},{"line_number":73,"context_line":"    )"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def register_rules(enforcer):"},{"line_number":77,"context_line":"    enforcer.register_defaults(policies.list_rules())"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_08680785","line":74,"in_reply_to":"df87a7cf_e834c3e0","updated":"2017-12-14 23:01:37.000000000","message":"Also - this will throw a 500 Error. We could wrap this in a try/except and throw a 401 instead, since that would be more appropriate.","commit_id":"1b9fc3e0bedea831267369be1b0445d1e356ee29"}],"keystone/tests/unit/test_v3_assignment.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"1e80e44889783d362dfaa35b18494f4548144eef","unresolved":false,"context_lines":[{"line_number":3128,"context_line":"        # validate the role assignment"},{"line_number":3129,"context_line":"        self.head(member_url)"},{"line_number":3130,"context_line":""},{"line_number":3131,"context_line":"        # list global roles"},{"line_number":3132,"context_line":"        collection_url \u003d \u0027/system/users/%s/roles\u0027 % self.user[\u0027id\u0027]"},{"line_number":3133,"context_line":"        # FIXME(lbragstad): Assert the role assignment exists in the response"},{"line_number":3134,"context_line":"        self.get(collection_url)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf8cb3f7_d49e2053","line":3131,"range":{"start_line":3131,"start_character":15,"end_line":3131,"end_character":21},"updated":"2017-12-27 10:24:22.000000000","message":"system","commit_id":"fd0c97e5972eae9a0788228226731bd4990ad3b6"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2de9578333262e09196c2ff998fb69e22e5b79a1","unresolved":false,"context_lines":[{"line_number":3128,"context_line":"        # validate the role assignment"},{"line_number":3129,"context_line":"        self.head(member_url)"},{"line_number":3130,"context_line":""},{"line_number":3131,"context_line":"        # list global roles"},{"line_number":3132,"context_line":"        collection_url \u003d \u0027/system/users/%s/roles\u0027 % self.user[\u0027id\u0027]"},{"line_number":3133,"context_line":"        # FIXME(lbragstad): Assert the role assignment exists in the response"},{"line_number":3134,"context_line":"        self.get(collection_url)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_4e6eed95","line":3131,"range":{"start_line":3131,"start_character":15,"end_line":3131,"end_character":21},"in_reply_to":"bf8cb3f7_d49e2053","updated":"2018-01-05 15:35:13.000000000","message":"Done","commit_id":"fd0c97e5972eae9a0788228226731bd4990ad3b6"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"1e80e44889783d362dfaa35b18494f4548144eef","unresolved":false,"context_lines":[{"line_number":3130,"context_line":""},{"line_number":3131,"context_line":"        # list global roles"},{"line_number":3132,"context_line":"        collection_url \u003d \u0027/system/users/%s/roles\u0027 % self.user[\u0027id\u0027]"},{"line_number":3133,"context_line":"        # FIXME(lbragstad): Assert the role assignment exists in the response"},{"line_number":3134,"context_line":"        self.get(collection_url)"},{"line_number":3135,"context_line":"        self.head(collection_url, expected_status\u003dhttp_client.OK)"},{"line_number":3136,"context_line":""},{"line_number":3137,"context_line":"        response \u003d self.get("}],"source_content_type":"text/x-python","patch_set":9,"id":"bf8cb3f7_149d6858","line":3134,"range":{"start_line":3133,"start_character":8,"end_line":3134,"end_character":32},"updated":"2017-12-27 10:24:22.000000000","message":"Is this a fixme-before-this-merges or fixme-later? I think this test is more valuable if it\u0027s checking this response now.","commit_id":"fd0c97e5972eae9a0788228226731bd4990ad3b6"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2de9578333262e09196c2ff998fb69e22e5b79a1","unresolved":false,"context_lines":[{"line_number":3130,"context_line":""},{"line_number":3131,"context_line":"        # list global roles"},{"line_number":3132,"context_line":"        collection_url \u003d \u0027/system/users/%s/roles\u0027 % self.user[\u0027id\u0027]"},{"line_number":3133,"context_line":"        # FIXME(lbragstad): Assert the role assignment exists in the response"},{"line_number":3134,"context_line":"        self.get(collection_url)"},{"line_number":3135,"context_line":"        self.head(collection_url, expected_status\u003dhttp_client.OK)"},{"line_number":3136,"context_line":""},{"line_number":3137,"context_line":"        response \u003d self.get("}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_6e697189","line":3134,"range":{"start_line":3133,"start_character":8,"end_line":3134,"end_character":32},"in_reply_to":"bf8cb3f7_149d6858","updated":"2018-01-05 15:35:13.000000000","message":"Done","commit_id":"fd0c97e5972eae9a0788228226731bd4990ad3b6"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"1e80e44889783d362dfaa35b18494f4548144eef","unresolved":false,"context_lines":[{"line_number":3144,"context_line":"    def test_list_role_assignments_for_user_returns_all_assignments(self):"},{"line_number":3145,"context_line":"        system_role_id \u003d self._create_new_role()"},{"line_number":3146,"context_line":""},{"line_number":3147,"context_line":"        # assign the role to the user globally"},{"line_number":3148,"context_line":"        member_url \u003d \u0027/system/users/%s/roles/%s\u0027 % ("},{"line_number":3149,"context_line":"            self.user[\u0027id\u0027], system_role_id"},{"line_number":3150,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf8cb3f7_94a89877","line":3147,"range":{"start_line":3147,"start_character":38,"end_line":3147,"end_character":46},"updated":"2017-12-27 10:24:22.000000000","message":"on the system","commit_id":"fd0c97e5972eae9a0788228226731bd4990ad3b6"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2de9578333262e09196c2ff998fb69e22e5b79a1","unresolved":false,"context_lines":[{"line_number":3144,"context_line":"    def test_list_role_assignments_for_user_returns_all_assignments(self):"},{"line_number":3145,"context_line":"        system_role_id \u003d self._create_new_role()"},{"line_number":3146,"context_line":""},{"line_number":3147,"context_line":"        # assign the role to the user globally"},{"line_number":3148,"context_line":"        member_url \u003d \u0027/system/users/%s/roles/%s\u0027 % ("},{"line_number":3149,"context_line":"            self.user[\u0027id\u0027], system_role_id"},{"line_number":3150,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_2e0929dc","line":3147,"range":{"start_line":3147,"start_character":38,"end_line":3147,"end_character":46},"in_reply_to":"bf8cb3f7_94a89877","updated":"2018-01-05 15:35:13.000000000","message":"Done","commit_id":"fd0c97e5972eae9a0788228226731bd4990ad3b6"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"1e80e44889783d362dfaa35b18494f4548144eef","unresolved":false,"context_lines":[{"line_number":3150,"context_line":"        )"},{"line_number":3151,"context_line":"        self.put(member_url)"},{"line_number":3152,"context_line":""},{"line_number":3153,"context_line":"        # the response should contain one role assignment for the global role"},{"line_number":3154,"context_line":"        # and one for a role that was setup during setUp()."},{"line_number":3155,"context_line":"        response \u003d self.get(\u0027/role_assignments?user.id\u003d%s\u0027 % self.user[\u0027id\u0027])"},{"line_number":3156,"context_line":"        self.assertValidRoleAssignmentListResponse(response, expected_length\u003d2)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bf8cb3f7_f4b244e6","line":3153,"range":{"start_line":3153,"start_character":66,"end_line":3153,"end_character":72},"updated":"2017-12-27 10:24:22.000000000","message":"system","commit_id":"fd0c97e5972eae9a0788228226731bd4990ad3b6"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2de9578333262e09196c2ff998fb69e22e5b79a1","unresolved":false,"context_lines":[{"line_number":3150,"context_line":"        )"},{"line_number":3151,"context_line":"        self.put(member_url)"},{"line_number":3152,"context_line":""},{"line_number":3153,"context_line":"        # the response should contain one role assignment for the global role"},{"line_number":3154,"context_line":"        # and one for a role that was setup during setUp()."},{"line_number":3155,"context_line":"        response \u003d self.get(\u0027/role_assignments?user.id\u003d%s\u0027 % self.user[\u0027id\u0027])"},{"line_number":3156,"context_line":"        self.assertValidRoleAssignmentListResponse(response, expected_length\u003d2)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_ce0f5ddf","line":3153,"range":{"start_line":3153,"start_character":66,"end_line":3153,"end_character":72},"in_reply_to":"bf8cb3f7_f4b244e6","updated":"2018-01-05 15:35:13.000000000","message":"Done","commit_id":"fd0c97e5972eae9a0788228226731bd4990ad3b6"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"1e80e44889783d362dfaa35b18494f4548144eef","unresolved":false,"context_lines":[{"line_number":3156,"context_line":"        self.assertValidRoleAssignmentListResponse(response, expected_length\u003d2)"},{"line_number":3157,"context_line":""},{"line_number":3158,"context_line":"    def test_list_system_roles_for_user_returns_none_without_assignment(self):"},{"line_number":3159,"context_line":"        # list global roles for user"},{"line_number":3160,"context_line":"        collection_url \u003d \u0027/system/users/%s/roles\u0027 % self.user[\u0027id\u0027]"},{"line_number":3161,"context_line":"        response \u003d self.get(collection_url)"},{"line_number":3162,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bf8cb3f7_14b6c8da","line":3159,"range":{"start_line":3159,"start_character":15,"end_line":3159,"end_character":21},"updated":"2017-12-27 10:24:22.000000000","message":"system","commit_id":"fd0c97e5972eae9a0788228226731bd4990ad3b6"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2de9578333262e09196c2ff998fb69e22e5b79a1","unresolved":false,"context_lines":[{"line_number":3156,"context_line":"        self.assertValidRoleAssignmentListResponse(response, expected_length\u003d2)"},{"line_number":3157,"context_line":""},{"line_number":3158,"context_line":"    def test_list_system_roles_for_user_returns_none_without_assignment(self):"},{"line_number":3159,"context_line":"        # list global roles for user"},{"line_number":3160,"context_line":"        collection_url \u003d \u0027/system/users/%s/roles\u0027 % self.user[\u0027id\u0027]"},{"line_number":3161,"context_line":"        response \u003d self.get(collection_url)"},{"line_number":3162,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_ee126109","line":3159,"range":{"start_line":3159,"start_character":15,"end_line":3159,"end_character":21},"in_reply_to":"bf8cb3f7_14b6c8da","updated":"2018-01-05 15:35:13.000000000","message":"Done","commit_id":"fd0c97e5972eae9a0788228226731bd4990ad3b6"}]}
