)]}'
{"tempest/api/identity/admin/v3/test_inherits.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"aa69e176f0e51ba4e3c22e30bfe0b641716f430c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            domain_id\u003dcls.domain[\u0027id\u0027])[\u0027group\u0027]"},{"line_number":44,"context_line":"        cls.addClassResourceCleanup(cls.groups_client.delete_group,"},{"line_number":45,"context_line":"                                    cls.group[\u0027id\u0027])"},{"line_number":46,"context_line":"        cls.user \u003d cls.users_client.create_user("},{"line_number":47,"context_line":"            name\u003du_name, description\u003du_desc, password\u003du_password,"},{"line_number":48,"context_line":"            email\u003du_email, project_id\u003dcls.project[\u0027id\u0027],"},{"line_number":49,"context_line":"            domain_id\u003dcls.domain[\u0027id\u0027])[\u0027user\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_56c9b975","side":"PARENT","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":48},"updated":"2019-02-11 02:50:33.000000000","message":"maybe we can add a check before this, \n\"if not CONF.identity_feature_enabled.immutable_user_source:\",\nso we can avoid creating users in each testcase that requires a new user.","commit_id":"7ece7d2253e57774f2cb458d9a2776bf343314ed"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"054e61a4e2ecb55f209f57ee3623808ecfa42fb5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def resource_setup(cls):"},{"line_number":33,"context_line":"        super(InheritsV3TestJSON, cls).resource_setup()"},{"line_number":34,"context_line":"        cls.u_name \u003d data_utils.rand_name(\u0027user-\u0027)"},{"line_number":35,"context_line":"        cls.u_desc \u003d \u0027%s description\u0027 % cls.u_name"},{"line_number":36,"context_line":"        cls.u_email \u003d \u0027%s@testmail.tm\u0027 % cls.u_name"},{"line_number":37,"context_line":"        cls.u_password \u003d data_utils.rand_name(\u0027pass-\u0027)"},{"line_number":38,"context_line":"        cls.domain \u003d cls.create_domain()"},{"line_number":39,"context_line":"        cls.project \u003d cls.projects_client.create_project("},{"line_number":40,"context_line":"            data_utils.rand_name(\u0027project-\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_eb0a1fcf","line":37,"range":{"start_line":34,"start_character":0,"end_line":37,"end_character":54},"updated":"2019-02-26 02:59:55.000000000","message":"why change these to instance variables?","commit_id":"a9f39918210c4e34a3e80b8553fe1fce4c319d73"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4ecef472b500a8eb67d362f40c4c5c6c670d7bb2","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            domain_id\u003dcls.domain[\u0027id\u0027])[\u0027group\u0027]"},{"line_number":48,"context_line":"        cls.addClassResourceCleanup(cls.groups_client.delete_group,"},{"line_number":49,"context_line":"                                    cls.group[\u0027id\u0027])"},{"line_number":50,"context_line":"        if not CONF.identity_feature_enabled.immutable_user_source:"},{"line_number":51,"context_line":"            cls.user \u003d cls.users_client.create_user("},{"line_number":52,"context_line":"                name\u003du_name,"},{"line_number":53,"context_line":"                description\u003du_desc,"},{"line_number":54,"context_line":"                password\u003du_password,"},{"line_number":55,"context_line":"                email\u003du_email,"},{"line_number":56,"context_line":"                project_id\u003dcls.project[\u0027id\u0027],"},{"line_number":57,"context_line":"                domain_id\u003dcls.domain[\u0027id\u0027]"},{"line_number":58,"context_line":"            )[\u0027user\u0027]"},{"line_number":59,"context_line":"            cls.addClassResourceCleanup(cls.users_client.delete_user,"},{"line_number":60,"context_line":"                                        cls.user[\u0027id\u0027])"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def _list_assertions(self, body, fetched_role_ids, role_id):"},{"line_number":63,"context_line":"        self.assertEqual(len(body), 1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_0ab12a90","line":60,"range":{"start_line":50,"start_character":0,"end_line":60,"end_character":55},"updated":"2019-03-06 05:02:17.000000000","message":"Practically every other test is conditionally skipped in this class, and besides that, this also needs to be protected with this condition here.\n\nConsider creating a new class with all of the tests below, with a pruned resource_setup that doesn\u0027t create a user. Then you can simply do:\n\n@testtools.skipIf(CONF.identity_feature_enabled.immutable_user_source,\n                      \u0027Skipped because environment has an \u0027\n                      \u0027immutable user source and solely \u0027\n                      \u0027provides read-only access to users.\u0027)\nclass InheritsImmutableV3Test(...):\n    ...","commit_id":"e845799048ace9d46db54cc85f79a2427c039db8"},{"author":{"_account_id":23625,"name":"Nicolas Helgeson","email":"nh202b@att.com","username":"nhelgeson"},"change_message_id":"76b08ad50a399ea461eef938ddff046eb0d2e001","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            domain_id\u003dcls.domain[\u0027id\u0027])[\u0027group\u0027]"},{"line_number":48,"context_line":"        cls.addClassResourceCleanup(cls.groups_client.delete_group,"},{"line_number":49,"context_line":"                                    cls.group[\u0027id\u0027])"},{"line_number":50,"context_line":"        if not CONF.identity_feature_enabled.immutable_user_source:"},{"line_number":51,"context_line":"            cls.user \u003d cls.users_client.create_user("},{"line_number":52,"context_line":"                name\u003du_name,"},{"line_number":53,"context_line":"                description\u003du_desc,"},{"line_number":54,"context_line":"                password\u003du_password,"},{"line_number":55,"context_line":"                email\u003du_email,"},{"line_number":56,"context_line":"                project_id\u003dcls.project[\u0027id\u0027],"},{"line_number":57,"context_line":"                domain_id\u003dcls.domain[\u0027id\u0027]"},{"line_number":58,"context_line":"            )[\u0027user\u0027]"},{"line_number":59,"context_line":"            cls.addClassResourceCleanup(cls.users_client.delete_user,"},{"line_number":60,"context_line":"                                        cls.user[\u0027id\u0027])"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def _list_assertions(self, body, fetched_role_ids, role_id):"},{"line_number":63,"context_line":"        self.assertEqual(len(body), 1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_e6635219","line":60,"range":{"start_line":50,"start_character":0,"end_line":60,"end_character":55},"in_reply_to":"5fc1f717_0ab12a90","updated":"2019-03-11 19:10:42.000000000","message":"Adding a class to the same file creates a pep8 error:\n\"tempest/api/identity/admin/v3/test_inherits.py:173:1: T115  All admin tests should exist under admin path.\nclass InheritsV3TestJSON(base.BaseIdentityV3AdminTest):\"\n\nAlternately we could create a new file or call the tests from a separate class, but I think that gets rather messy.","commit_id":"e845799048ace9d46db54cc85f79a2427c039db8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8d7a5e1ddf22bf4414c7a7e2bdb24aab359cd1b6","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            domain_id\u003dcls.domain[\u0027id\u0027])[\u0027group\u0027]"},{"line_number":48,"context_line":"        cls.addClassResourceCleanup(cls.groups_client.delete_group,"},{"line_number":49,"context_line":"                                    cls.group[\u0027id\u0027])"},{"line_number":50,"context_line":"        if not CONF.identity_feature_enabled.immutable_user_source:"},{"line_number":51,"context_line":"            cls.user \u003d cls.users_client.create_user("},{"line_number":52,"context_line":"                name\u003du_name,"},{"line_number":53,"context_line":"                description\u003du_desc,"},{"line_number":54,"context_line":"                password\u003du_password,"},{"line_number":55,"context_line":"                email\u003du_email,"},{"line_number":56,"context_line":"                project_id\u003dcls.project[\u0027id\u0027],"},{"line_number":57,"context_line":"                domain_id\u003dcls.domain[\u0027id\u0027]"},{"line_number":58,"context_line":"            )[\u0027user\u0027]"},{"line_number":59,"context_line":"            cls.addClassResourceCleanup(cls.users_client.delete_user,"},{"line_number":60,"context_line":"                                        cls.user[\u0027id\u0027])"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def _list_assertions(self, body, fetched_role_ids, role_id):"},{"line_number":63,"context_line":"        self.assertEqual(len(body), 1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"5fc1f717_7eb7983b","line":60,"range":{"start_line":50,"start_character":0,"end_line":60,"end_character":55},"in_reply_to":"5fc1f717_e6635219","updated":"2019-03-15 02:18:15.000000000","message":"we have not used class level skip i think, if that is needed it can be via skip_checks(). \n\nIn this case i think skipping the resource creation is ok. introducing resource_setup per class also one way but that seems not necessary in this case.","commit_id":"e845799048ace9d46db54cc85f79a2427c039db8"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"f848a33241208197d2f7160142231889d7822a13","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @decorators.idempotent_id(\u00274e6f0366-97c8-423c-b2be-41eae6ac91c8\u0027)"},{"line_number":67,"context_line":"    @testtools.skipIf(CONF.identity_feature_enabled.immutable_user_source,"},{"line_number":68,"context_line":"                      \u0027Skipped because environment has an \u0027"},{"line_number":69,"context_line":"                      \u0027immutable user source and solely \u0027"},{"line_number":70,"context_line":"                      \u0027provides read-only access to users.\u0027)"},{"line_number":71,"context_line":"    def test_inherit_assign_list_check_revoke_roles_on_domains_user(self):"},{"line_number":72,"context_line":"        # Create role"},{"line_number":73,"context_line":"        src_role \u003d self.setup_test_role()"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_e080f6c1","line":70,"range":{"start_line":68,"start_character":0,"end_line":70,"end_character":60},"updated":"2019-03-13 03:16:52.000000000","message":"Maybe at least we can put these in two lines, so it will look a bit clearer.","commit_id":"cc6b109f61dc9505e7c1a67d798e866f21ce98e9"}]}
