)]}'
{"keystone/api/domains.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"8e86070587d5d77d54f47bf7c75633a4ba37406b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        return self._list_domains()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _get_domain(self, domain_id):"},{"line_number":79,"context_line":"        try:"},{"line_number":80,"context_line":"            domain \u003d PROVIDERS.resource_api.get_domain(domain_id)"},{"line_number":81,"context_line":"            target \u003d {\u0027domain\u0027: domain}"},{"line_number":82,"context_line":"        except exception.NotFound:"},{"line_number":83,"context_line":"            raise exception.ForbiddenAction"},{"line_number":84,"context_line":"        ENFORCER.enforce_call(action\u003d\u0027identity:get_domain\u0027, target_attr\u003dtarget)"},{"line_number":85,"context_line":"        return self.wrap_member(domain)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_957e33be","line":83,"range":{"start_line":79,"start_character":0,"end_line":83,"end_character":43},"updated":"2018-12-05 19:59:41.000000000","message":"Wrap this into a function and pass the function into \"build_target\" kwarg for the `enforce_call`. The function should return the dict you\u0027re creating there. see https://github.com/openstack/keystone/blob/9c91aa74daba42145c07d5dcc75592812a631701/keystone/api/system.py#L31 and where it is used: https://github.com/openstack/keystone/blob/9c91aa74daba42145c07d5dcc75592812a631701/keystone/api/system.py#L60-L61","commit_id":"24acc3ea80b39be3c51b867c8b5fa80e5c6419ff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"585723911623f025190fbc92be4b337cfca430bc","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        return self._list_domains()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _get_domain(self, domain_id):"},{"line_number":79,"context_line":"        try:"},{"line_number":80,"context_line":"            domain \u003d PROVIDERS.resource_api.get_domain(domain_id)"},{"line_number":81,"context_line":"            target \u003d {\u0027domain\u0027: domain}"},{"line_number":82,"context_line":"        except exception.NotFound:"},{"line_number":83,"context_line":"            raise exception.ForbiddenAction"},{"line_number":84,"context_line":"        ENFORCER.enforce_call(action\u003d\u0027identity:get_domain\u0027, target_attr\u003dtarget)"},{"line_number":85,"context_line":"        return self.wrap_member(domain)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_706285dc","line":83,"range":{"start_line":79,"start_character":0,"end_line":83,"end_character":43},"in_reply_to":"3f79a3b5_957e33be","updated":"2018-12-05 20:15:54.000000000","message":"Done","commit_id":"24acc3ea80b39be3c51b867c8b5fa80e5c6419ff"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"4c3847142355dcb41f7bd3170bd973ef906e59a0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            flask.request.view_args.get(\u0027domain_id\u0027)"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":"    except exception.NotFound:  # nosec"},{"line_number":41,"context_line":"        # Defer existance in the event the domain doesn\u0027t exist, we\u0027ll"},{"line_number":42,"context_line":"        # check this later anyway."},{"line_number":43,"context_line":"        pass"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_664a6f81","line":41,"range":{"start_line":41,"start_character":16,"end_line":41,"end_character":25},"updated":"2019-01-11 10:37:05.000000000","message":"nit - existence","commit_id":"071e54493fd7626fca8a9b450585af1fd91eb2bb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38efdb589a87c89664efe1a11862066bc9a02baa","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            flask.request.view_args.get(\u0027domain_id\u0027)"},{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":"    except exception.NotFound:  # nosec"},{"line_number":41,"context_line":"        # Defer existance in the event the domain doesn\u0027t exist, we\u0027ll"},{"line_number":42,"context_line":"        # check this later anyway."},{"line_number":43,"context_line":"        pass"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_1dede2ee","line":41,"range":{"start_line":41,"start_character":16,"end_line":41,"end_character":25},"in_reply_to":"bfdaf3ff_664a6f81","updated":"2019-01-11 20:22:13.000000000","message":"Done","commit_id":"071e54493fd7626fca8a9b450585af1fd91eb2bb"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"ff29bf22bb9663af163f4221551d01aa0f3f447a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    except exception.NotFound:  # nosec"},{"line_number":41,"context_line":"        # Defer existence in the event the domain doesn\u0027t exist, we\u0027ll"},{"line_number":42,"context_line":"        # check this later anyway."},{"line_number":43,"context_line":"        pass"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    return target"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_ee494660","line":43,"range":{"start_line":43,"start_character":7,"end_line":43,"end_character":12},"updated":"2019-01-12 00:03:27.000000000","message":"Why can\u0027t we just fail-fast here? We are fetching the domain again in line 97. Seem like there\u0027s room for optimization here.","commit_id":"1d32de5fe9c8465e2a70bf75dba7bdfeefa80ec9"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"2a68c6d8f82cffc88f644c6f4ab83f537d607be0","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    except exception.NotFound:  # nosec"},{"line_number":41,"context_line":"        # Defer existence in the event the domain doesn\u0027t exist, we\u0027ll"},{"line_number":42,"context_line":"        # check this later anyway."},{"line_number":43,"context_line":"        pass"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    return target"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_2463ae44","line":43,"range":{"start_line":43,"start_character":7,"end_line":43,"end_character":12},"in_reply_to":"bfdaf3ff_0f63481c","updated":"2019-01-16 06:42:59.000000000","message":"With memcache enabled this is fine. Without it, it would\u0027ve been two trips to the DB. It would be nice to think of a way to optimize it. Memcache is recommended so we should be OK.","commit_id":"1d32de5fe9c8465e2a70bf75dba7bdfeefa80ec9"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"e48d557eb544f402941d4ea036ed24df8d370c4e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    except exception.NotFound:  # nosec"},{"line_number":41,"context_line":"        # Defer existence in the event the domain doesn\u0027t exist, we\u0027ll"},{"line_number":42,"context_line":"        # check this later anyway."},{"line_number":43,"context_line":"        pass"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    return target"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_0f63481c","line":43,"range":{"start_line":43,"start_character":7,"end_line":43,"end_character":12},"in_reply_to":"bfdaf3ff_ee494660","updated":"2019-01-14 20:27:38.000000000","message":"This happens before authentication, so in order to prevent leaking the existence of a domain to an unauthorized user, we continue on here and fail later after/during auth.","commit_id":"1d32de5fe9c8465e2a70bf75dba7bdfeefa80ec9"}],"keystone/common/policies/domain.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"4c3847142355dcb41f7bd3170bd973ef906e59a0","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # tokens because it should be possible for users who have a token"},{"line_number":52,"context_line":"        # scoped to a project within a domain to list the domain itself. It"},{"line_number":53,"context_line":"        # also allows users with a role on a domain to get that specific"},{"line_number":54,"context_line":"        # domain. Finally, it accounts for system scope so that users tending"},{"line_number":55,"context_line":"        # to the deployment can list all domains."},{"line_number":56,"context_line":"        check_str\u003d("},{"line_number":57,"context_line":"            \u0027(role:reader and system_scope:all) or \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_41087527","line":54,"range":{"start_line":54,"start_character":18,"end_line":54,"end_character":55},"updated":"2019-01-11 10:37:05.000000000","message":"You already said this in the first sentence","commit_id":"071e54493fd7626fca8a9b450585af1fd91eb2bb"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"4c3847142355dcb41f7bd3170bd973ef906e59a0","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        name\u003dbase.IDENTITY % \u0027get_domain\u0027,"},{"line_number":50,"context_line":"        # NOTE(lbragstad): This policy allows system-scope and project-scoped"},{"line_number":51,"context_line":"        # tokens because it should be possible for users who have a token"},{"line_number":52,"context_line":"        # scoped to a project within a domain to list the domain itself. It"},{"line_number":53,"context_line":"        # also allows users with a role on a domain to get that specific"},{"line_number":54,"context_line":"        # domain. Finally, it accounts for system scope so that users tending"},{"line_number":55,"context_line":"        # to the deployment can list all domains."},{"line_number":56,"context_line":"        check_str\u003d("},{"line_number":57,"context_line":"            \u0027(role:reader and system_scope:all) or \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_81fe5d03","line":54,"range":{"start_line":52,"start_character":73,"end_line":54,"end_character":17},"updated":"2019-01-11 10:37:05.000000000","message":"some nits on wording - I would just include this in the first phrase, e.g. \"This policy allows system-, domain-, and project-scoped tokens...\" instead of appending this note.","commit_id":"071e54493fd7626fca8a9b450585af1fd91eb2bb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38efdb589a87c89664efe1a11862066bc9a02baa","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # tokens because it should be possible for users who have a token"},{"line_number":52,"context_line":"        # scoped to a project within a domain to list the domain itself. It"},{"line_number":53,"context_line":"        # also allows users with a role on a domain to get that specific"},{"line_number":54,"context_line":"        # domain. Finally, it accounts for system scope so that users tending"},{"line_number":55,"context_line":"        # to the deployment can list all domains."},{"line_number":56,"context_line":"        check_str\u003d("},{"line_number":57,"context_line":"            \u0027(role:reader and system_scope:all) or \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_fd1a5e15","line":54,"range":{"start_line":54,"start_character":18,"end_line":54,"end_character":55},"in_reply_to":"bfdaf3ff_41087527","updated":"2019-01-11 20:22:13.000000000","message":"Done","commit_id":"071e54493fd7626fca8a9b450585af1fd91eb2bb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38efdb589a87c89664efe1a11862066bc9a02baa","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        name\u003dbase.IDENTITY % \u0027get_domain\u0027,"},{"line_number":50,"context_line":"        # NOTE(lbragstad): This policy allows system-scope and project-scoped"},{"line_number":51,"context_line":"        # tokens because it should be possible for users who have a token"},{"line_number":52,"context_line":"        # scoped to a project within a domain to list the domain itself. It"},{"line_number":53,"context_line":"        # also allows users with a role on a domain to get that specific"},{"line_number":54,"context_line":"        # domain. Finally, it accounts for system scope so that users tending"},{"line_number":55,"context_line":"        # to the deployment can list all domains."},{"line_number":56,"context_line":"        check_str\u003d("},{"line_number":57,"context_line":"            \u0027(role:reader and system_scope:all) or \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_5d1e0a0d","line":54,"range":{"start_line":52,"start_character":73,"end_line":54,"end_character":17},"in_reply_to":"bfdaf3ff_81fe5d03","updated":"2019-01-11 20:22:13.000000000","message":"Done","commit_id":"071e54493fd7626fca8a9b450585af1fd91eb2bb"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"4c3847142355dcb41f7bd3170bd973ef906e59a0","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # tokens because it should be possible for users who have a token"},{"line_number":52,"context_line":"        # scoped to a project within a domain to list the domain itself. It"},{"line_number":53,"context_line":"        # also allows users with a role on a domain to get that specific"},{"line_number":54,"context_line":"        # domain. Finally, it accounts for system scope so that users tending"},{"line_number":55,"context_line":"        # to the deployment can list all domains."},{"line_number":56,"context_line":"        check_str\u003d("},{"line_number":57,"context_line":"            \u0027(role:reader and system_scope:all) or \u0027"},{"line_number":58,"context_line":"            \u0027token.domain.id:%(target.domain.id)s or \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_e1188976","line":55,"range":{"start_line":54,"start_character":70,"end_line":55,"end_character":27},"updated":"2019-01-11 10:37:05.000000000","message":"\"tending to the deployment\" I understand what you mean but I feel like this might be difficult for a non-native speaker to parse. I would just say deployment administrators or system administrators.","commit_id":"071e54493fd7626fca8a9b450585af1fd91eb2bb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38efdb589a87c89664efe1a11862066bc9a02baa","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # tokens because it should be possible for users who have a token"},{"line_number":52,"context_line":"        # scoped to a project within a domain to list the domain itself. It"},{"line_number":53,"context_line":"        # also allows users with a role on a domain to get that specific"},{"line_number":54,"context_line":"        # domain. Finally, it accounts for system scope so that users tending"},{"line_number":55,"context_line":"        # to the deployment can list all domains."},{"line_number":56,"context_line":"        check_str\u003d("},{"line_number":57,"context_line":"            \u0027(role:reader and system_scope:all) or \u0027"},{"line_number":58,"context_line":"            \u0027token.domain.id:%(target.domain.id)s or \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_7ddc2e46","line":55,"range":{"start_line":54,"start_character":70,"end_line":55,"end_character":27},"in_reply_to":"bfdaf3ff_cc2d7247","updated":"2019-01-11 20:22:13.000000000","message":"Done","commit_id":"071e54493fd7626fca8a9b450585af1fd91eb2bb"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c8841c609987fd61bdc956790dc93bfbe7d4652c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # tokens because it should be possible for users who have a token"},{"line_number":52,"context_line":"        # scoped to a project within a domain to list the domain itself. It"},{"line_number":53,"context_line":"        # also allows users with a role on a domain to get that specific"},{"line_number":54,"context_line":"        # domain. Finally, it accounts for system scope so that users tending"},{"line_number":55,"context_line":"        # to the deployment can list all domains."},{"line_number":56,"context_line":"        check_str\u003d("},{"line_number":57,"context_line":"            \u0027(role:reader and system_scope:all) or \u0027"},{"line_number":58,"context_line":"            \u0027token.domain.id:%(target.domain.id)s or \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_cc2d7247","line":55,"range":{"start_line":54,"start_character":70,"end_line":55,"end_character":27},"in_reply_to":"bfdaf3ff_e1188976","updated":"2019-01-11 17:46:09.000000000","message":"I understand it fine. :-)","commit_id":"071e54493fd7626fca8a9b450585af1fd91eb2bb"}],"keystone/tests/unit/protection/v3/test_domains.py":[{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"166ff5695c4782f8fd99ceb5ec8c20fef6b6be9e","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            self.token_id \u003d r.headers[\u0027X-Subject-Token\u0027]"},{"line_number":436,"context_line":"            self.headers \u003d {\u0027X-Auth-Token\u0027: self.token_id}"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    def test_user_can_get_a_domain(self):"},{"line_number":439,"context_line":"        with self.test_client() as c:"},{"line_number":440,"context_line":"            r \u003d c.get(\u0027/v3/domains/%s\u0027 % self.domain_id, headers\u003dself.headers)"},{"line_number":441,"context_line":"            self.assertEqual(self.domain_id, r.json[\u0027domain\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_17d8bded","line":438,"updated":"2018-10-02 01:52:11.000000000","message":"We can here also add a test case for user can list projects under authorized domain.","commit_id":"afffd4fcd6ca04a7acfe2989f2db6e6afb77ba4c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38a3e36f0289d49d80ecefb48be7900116a5ecca","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            self.token_id \u003d r.headers[\u0027X-Subject-Token\u0027]"},{"line_number":436,"context_line":"            self.headers \u003d {\u0027X-Auth-Token\u0027: self.token_id}"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"    def test_user_can_get_a_domain(self):"},{"line_number":439,"context_line":"        with self.test_client() as c:"},{"line_number":440,"context_line":"            r \u003d c.get(\u0027/v3/domains/%s\u0027 % self.domain_id, headers\u003dself.headers)"},{"line_number":441,"context_line":"            self.assertEqual(self.domain_id, r.json[\u0027domain\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2675d4ff","line":438,"in_reply_to":"3f79a3b5_17d8bded","updated":"2018-11-20 18:18:05.000000000","message":"Yeah - that\u0027s a good idea, but we have a separate bug to track that fix.\n\nhttps://bugs.launchpad.net/keystone/+bug/1750660","commit_id":"afffd4fcd6ca04a7acfe2989f2db6e6afb77ba4c"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"166ff5695c4782f8fd99ceb5ec8c20fef6b6be9e","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                expected_status_code\u003dhttp_client.FORBIDDEN"},{"line_number":499,"context_line":"            )"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"    def test_user_cannot_create_a_domain(self):"},{"line_number":502,"context_line":"        create \u003d {\u0027domain\u0027: {\u0027name\u0027: uuid.uuid4().hex}}"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        with self.test_client() as c:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_f7f3c16b","line":501,"updated":"2018-10-02 01:52:11.000000000","message":"what if a user tries to create a domain. Can we add the test case for that failed requests also?","commit_id":"afffd4fcd6ca04a7acfe2989f2db6e6afb77ba4c"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"29bb6dfb97c02bfba9b63a83ed02d80bc22796a4","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                expected_status_code\u003dhttp_client.FORBIDDEN"},{"line_number":499,"context_line":"            )"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"    def test_user_cannot_create_a_domain(self):"},{"line_number":502,"context_line":"        create \u003d {\u0027domain\u0027: {\u0027name\u0027: uuid.uuid4().hex}}"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        with self.test_client() as c:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_f449822f","line":501,"in_reply_to":"3f79a3b5_466fb028","updated":"2018-11-26 01:49:39.000000000","message":"Yeah. Sorry for the confusion.","commit_id":"afffd4fcd6ca04a7acfe2989f2db6e6afb77ba4c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2d26fbb65ec74561255cd830c722b74c1bb7e813","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                expected_status_code\u003dhttp_client.FORBIDDEN"},{"line_number":499,"context_line":"            )"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"    def test_user_cannot_create_a_domain(self):"},{"line_number":502,"context_line":"        create \u003d {\u0027domain\u0027: {\u0027name\u0027: uuid.uuid4().hex}}"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        with self.test_client() as c:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_8f92719f","line":501,"in_reply_to":"3f79a3b5_f449822f","updated":"2018-11-26 14:28:05.000000000","message":"No worries - I appreciate the reviews :)","commit_id":"afffd4fcd6ca04a7acfe2989f2db6e6afb77ba4c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38a3e36f0289d49d80ecefb48be7900116a5ecca","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                expected_status_code\u003dhttp_client.FORBIDDEN"},{"line_number":499,"context_line":"            )"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"    def test_user_cannot_create_a_domain(self):"},{"line_number":502,"context_line":"        create \u003d {\u0027domain\u0027: {\u0027name\u0027: uuid.uuid4().hex}}"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"        with self.test_client() as c:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_466fb028","line":501,"in_reply_to":"3f79a3b5_f7f3c16b","updated":"2018-11-20 18:18:05.000000000","message":"I\u0027m not sure I understand the question, but that\u0027s what this test is doing I believe?","commit_id":"afffd4fcd6ca04a7acfe2989f2db6e6afb77ba4c"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"166ff5695c4782f8fd99ceb5ec8c20fef6b6be9e","unresolved":false,"context_lines":[{"line_number":507,"context_line":"                expected_status_code\u003dhttp_client.FORBIDDEN"},{"line_number":508,"context_line":"            )"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"    def test_user_cannot_delete_a_domain(self):"},{"line_number":511,"context_line":"        domain \u003d PROVIDERS.resource_api.create_domain("},{"line_number":512,"context_line":"            uuid.uuid4().hex, unit.new_domain_ref()"},{"line_number":513,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_b79789eb","line":510,"updated":"2018-10-02 01:52:11.000000000","message":"dittoo","commit_id":"afffd4fcd6ca04a7acfe2989f2db6e6afb77ba4c"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"2a68c6d8f82cffc88f644c6f4ab83f537d607be0","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                expected_status_code\u003dhttp_client.FORBIDDEN"},{"line_number":144,"context_line":"            )"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def test_user_cannot_list_domains(self):"},{"line_number":147,"context_line":"        with self.test_client() as c:"},{"line_number":148,"context_line":"            c.get("},{"line_number":149,"context_line":"                \u0027/v3/domains\u0027, headers\u003dself.headers,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_44f4b25b","line":146,"updated":"2019-01-16 06:42:59.000000000","message":"The test cases below doesn\u0027t seem relevant to the current change. But more testing is good. :-)","commit_id":"1d32de5fe9c8465e2a70bf75dba7bdfeefa80ec9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f76b581447c2bc645344cf92bd05e11d590a8533","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                expected_status_code\u003dhttp_client.FORBIDDEN"},{"line_number":144,"context_line":"            )"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def test_user_cannot_list_domains(self):"},{"line_number":147,"context_line":"        with self.test_client() as c:"},{"line_number":148,"context_line":"            c.get("},{"line_number":149,"context_line":"                \u0027/v3/domains\u0027, headers\u003dself.headers,"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfdaf3ff_ab20c6b1","line":146,"in_reply_to":"bfdaf3ff_44f4b25b","updated":"2019-01-16 15:04:41.000000000","message":"I think they\u0027re more negative tests than anything else.","commit_id":"1d32de5fe9c8465e2a70bf75dba7bdfeefa80ec9"}]}
