)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"a0f4f840834fc0206b442e3e4d6654b8d9e9527f","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There may be a need to run these tests with an existing user.  This"},{"line_number":10,"context_line":"checks the existing user flags and uses that information if they"},{"line_number":11,"context_line":"are true. Defautls to false."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Depends-On: https://review.opendev.org/c/openstack/keystone/+/878046"},{"line_number":14,"context_line":"Change-Id: I5dfab4cfa2c55fd133ab7ad2d5235399865794ab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"e3164044_0d4ef834","line":11,"range":{"start_line":11,"start_character":10,"end_line":11,"end_character":28},"updated":"2023-03-21 15:24:10.000000000","message":"I\u0027m inclined to keep the default as whatever needs to be there to make the devstack test work - which would be to default to true.  Nit: typo.","commit_id":"a2a640f977b790556e6ae8028478006161177f54"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"08a946b44d6cd25c59b4c8973ec3cf7f5e58b5ec","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There may be a need to run these tests with an existing user.  This"},{"line_number":10,"context_line":"checks the existing user flags and uses that information if they"},{"line_number":11,"context_line":"are true. Defautls to false."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Depends-On: https://review.opendev.org/c/openstack/keystone/+/878046"},{"line_number":14,"context_line":"Change-Id: I5dfab4cfa2c55fd133ab7ad2d5235399865794ab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"6094a170_f67b22d1","line":11,"range":{"start_line":11,"start_character":10,"end_line":11,"end_character":28},"in_reply_to":"dcfcf5e2_667778e5","updated":"2023-04-18 12:43:19.000000000","message":"Done","commit_id":"a2a640f977b790556e6ae8028478006161177f54"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"e96da75804f8e5a47863029d90a58aa5125d9335","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There may be a need to run these tests with an existing user.  This"},{"line_number":10,"context_line":"checks the existing user flags and uses that information if they"},{"line_number":11,"context_line":"are true. Defautls to false."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Depends-On: https://review.opendev.org/c/openstack/keystone/+/878046"},{"line_number":14,"context_line":"Change-Id: I5dfab4cfa2c55fd133ab7ad2d5235399865794ab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"dcfcf5e2_667778e5","line":11,"range":{"start_line":11,"start_character":10,"end_line":11,"end_character":28},"in_reply_to":"e3164044_0d4ef834","updated":"2023-04-06 13:51:41.000000000","message":"One other weird thing: I fixed this using Gerrit interface, it was patch No5. Oh well, let me re-do it.","commit_id":"a2a640f977b790556e6ae8028478006161177f54"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"2e56486c3554a60da227acc5e04bfff71700c91d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"de746d26_99c819c8","updated":"2023-04-06 03:13:43.000000000","message":"recheck - missed the last patchset","commit_id":"9a462c67c3572d84d8e71feddb4df6e354f9b9ee"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"1f3b3a2b42c4dc2634ce9b0b430dfc5fa7620eb7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ab1d2de6_2eb76e74","updated":"2023-04-06 08:01:11.000000000","message":"Almost there .. ","commit_id":"0c8b38602c4f7bc58f9a7a6dfb15095904d798b1"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"0be8cd1c234c678856e76e52d48e8d48dfa4b0a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c4953ae4_dbc69844","updated":"2023-04-06 05:01:48.000000000","message":"The newest Gerrit makes it a little hard to make sure, but I think Ade\u0027s comments were addressed.","commit_id":"0c8b38602c4f7bc58f9a7a6dfb15095904d798b1"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"e96da75804f8e5a47863029d90a58aa5125d9335","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f660f577_3192b0a3","updated":"2023-04-06 13:51:41.000000000","message":"I\u0027m going to re-do it in a few.","commit_id":"8ed246dae1b24ddff993566babaa02acd1e98152"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"7a3b70ce79f1213268ed8d3893e2e923cb823e0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8178e4dd_78f42be5","updated":"2023-04-06 17:40:18.000000000","message":"Moving this to WIP","commit_id":"8ed246dae1b24ddff993566babaa02acd1e98152"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"cf915b0f3601ab074a4a8f3fb00f4b63aec37664","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"38764d3c_5fed4256","updated":"2023-04-06 13:56:16.000000000","message":"On second thought, I\u0027ll poke Dave on IRC in case he wants to complete this.","commit_id":"8ed246dae1b24ddff993566babaa02acd1e98152"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"45e281cfe55ed7d203a9281a26d954da28c2eabb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"18084039_fd197655","updated":"2023-04-27 04:37:14.000000000","message":"It\u0027s not a guarantee but I don\u0027t see any issues.","commit_id":"561a5206edbfd8b90c043f8612b2a7228d9d5889"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"6e741306393e8299c0d1b2092fec3d1231568c90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"b8461ed6_5511f341","updated":"2023-04-27 03:56:32.000000000","message":"Ready for reviews","commit_id":"561a5206edbfd8b90c043f8612b2a7228d9d5889"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"7fef4b068ccc5f91726aaf3f433b2f8a619e7860","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"da98a60f_cd9d058d","updated":"2023-05-01 17:13:37.000000000","message":"I\u0027m okay with this, although maybe consider getting rid of finally: too.","commit_id":"a32600f5215601f4a720f09dc57935e85786c806"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"2a064a1cf83eddcea10a3000cb8e0f09d4b3de2d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"dadd4dc5_944dd1bd","updated":"2023-05-01 21:55:46.000000000","message":"Looks good to me. I toyed with a couple of scenarios where things fail halfway in, and it seems we clean up. There\u0027s still something that makes me curious, like using Keycloak for finding token_endpoint, but that\u0027s how existing code worked so at least we\u0027re not regressing.","commit_id":"e914da663110a70a049805eb5c6393ea824d8aa9"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"aecee7ff994e40d7e392d045b52263b4d53fb3bd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"f790eaa9_82974850","updated":"2023-05-02 11:39:58.000000000","message":"lgtm","commit_id":"e914da663110a70a049805eb5c6393ea824d8aa9"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"1c21637a48133939fc84e63827f141a681eb7a50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"5397e6b7_7fbb212a","updated":"2023-05-02 13:51:34.000000000","message":"Ouch.","commit_id":"60bedf31cee55802f0fbe67858af863f9cf3e98d"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"8f1779cc46f3efc6fc47a0bc41e8047c9e0d7296","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"ebb2cb97_ea42f501","updated":"2023-05-02 14:18:26.000000000","message":"recheck - token didn\u0027t retrieve properly","commit_id":"60bedf31cee55802f0fbe67858af863f9cf3e98d"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"9290bf230efff261f1ee2b8d5b6de3ca432b5235","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"3cc2a3f8_19c79238","updated":"2023-05-02 19:28:03.000000000","message":"Hopefully this is safe for Doug and Greg to approve at last.","commit_id":"dbe56f0a07febd9e8babf54b88c63084b59f0b39"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"11bc041b24a332db440ff40574194d85fc955728","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"0d8a80c0_cd5c6679","updated":"2023-05-03 15:51:15.000000000","message":"LGTM","commit_id":"dbe56f0a07febd9e8babf54b88c63084b59f0b39"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"04c2e0fc0728e8d504f0e8e3bbef2b721be8c62f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"90fdd7ad_52dd5745","updated":"2023-05-04 13:54:58.000000000","message":"LGTM!","commit_id":"dbe56f0a07febd9e8babf54b88c63084b59f0b39"}],"keystone_tempest_plugin/config.py":[{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"d6a8cfdca73233a5ff2750024120dc28eb2ee881","unresolved":true,"context_lines":[{"line_number":59,"context_line":"    # existing user (oidc)"},{"line_number":60,"context_line":"    cfg.StrOpt(\u0027idp_test_user_name\u0027,"},{"line_number":61,"context_line":"               help\u003d\u0027Identity Provider Test User Name\u0027),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027idp_test_user_password\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027Identity Provider Test User Password\u0027),"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    # Mapping rules"}],"source_content_type":"text/x-python","patch_set":16,"id":"b8817c0b_03ee2bba","line":62,"range":{"start_line":62,"start_character":16,"end_line":62,"end_character":38},"updated":"2023-05-01 14:29:24.000000000","message":"I think it would be useful to add `secret\u003dTrue` here.  See https://docs.openstack.org/oslo.config/latest/reference/api/oslo_config.html#oslo_config.cfg.Opt","commit_id":"561a5206edbfd8b90c043f8612b2a7228d9d5889"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"77bf0d04df433d67e6b75a7b15f3b9866b7372f2","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    # existing user (oidc)"},{"line_number":60,"context_line":"    cfg.StrOpt(\u0027idp_test_user_name\u0027,"},{"line_number":61,"context_line":"               help\u003d\u0027Identity Provider Test User Name\u0027),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027idp_test_user_password\u0027,"},{"line_number":63,"context_line":"               help\u003d\u0027Identity Provider Test User Password\u0027),"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    # Mapping rules"}],"source_content_type":"text/x-python","patch_set":16,"id":"355a998a_4aa054dc","line":62,"range":{"start_line":62,"start_character":16,"end_line":62,"end_character":38},"in_reply_to":"b8817c0b_03ee2bba","updated":"2023-05-01 16:01:07.000000000","message":"Done","commit_id":"561a5206edbfd8b90c043f8612b2a7228d9d5889"}],"keystone_tempest_plugin/tests/scenario/test_oidc_federated_authentication.py":[{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"f920fef6b0a3d6522fb394606f9fe8e29c03d8dc","unresolved":true,"context_lines":[{"line_number":51,"context_line":"        # custom CA certificate settings"},{"line_number":52,"context_line":"        self.ca_certificates_file \u003d CONF.identity.ca_certificates_file"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # create user settings"},{"line_number":55,"context_line":"        self.create_test_user \u003d CONF.fed_scenario.create_test_user"},{"line_number":56,"context_line":"        self.test_user_email \u003d CONF.fed_scenario.test_user_email"},{"line_number":57,"context_line":"        self.test_user_name \u003d CONF.fed_scenario.test_username"},{"line_number":58,"context_line":"        self.test_user_password \u003d CONF.fed_scenario.test_password"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _setup_mapping(self):"},{"line_number":61,"context_line":"        self.mapping_id \u003d data_utils.rand_uuid_hex()"}],"source_content_type":"text/x-python","patch_set":2,"id":"1075f1df_f29ac17a","line":58,"range":{"start_line":54,"start_character":7,"end_line":58,"end_character":65},"updated":"2023-03-21 15:12:02.000000000","message":"So, a few things.\n\n1. the config options should be specified in https://opendev.org/openstack/keystone-tempest-plugin/src/branch/master/keystone_tempest_plugin/config.py .  This is how these become known to the plugin.  You specify defaults there.\n\n2. we should specify only those things we need.  You have test_user_email and test_username , but then only use test_user_email ..","commit_id":"a2a640f977b790556e6ae8028478006161177f54"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"a0f4f840834fc0206b442e3e4d6654b8d9e9527f","unresolved":true,"context_lines":[{"line_number":51,"context_line":"        # custom CA certificate settings"},{"line_number":52,"context_line":"        self.ca_certificates_file \u003d CONF.identity.ca_certificates_file"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # create user settings"},{"line_number":55,"context_line":"        self.create_test_user \u003d CONF.fed_scenario.create_test_user"},{"line_number":56,"context_line":"        self.test_user_email \u003d CONF.fed_scenario.test_user_email"},{"line_number":57,"context_line":"        self.test_user_name \u003d CONF.fed_scenario.test_username"},{"line_number":58,"context_line":"        self.test_user_password \u003d CONF.fed_scenario.test_password"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _setup_mapping(self):"},{"line_number":61,"context_line":"        self.mapping_id \u003d data_utils.rand_uuid_hex()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f26ca3b_9e23a8b2","line":58,"range":{"start_line":54,"start_character":7,"end_line":58,"end_character":65},"in_reply_to":"1075f1df_f29ac17a","updated":"2023-03-21 15:24:10.000000000","message":"also, you don\u0027t need a boolean to determine whether a user is created or not.\nYou can trigger for instance just based on whether CONF.fed_scenario.test_username exists.\n\nAs far as I can tell, all you need are the username and password","commit_id":"a2a640f977b790556e6ae8028478006161177f54"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"e4702c46369c3bb455e7548bd50405edc4194700","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # custom CA certificate settings"},{"line_number":52,"context_line":"        self.ca_certificates_file \u003d CONF.identity.ca_certificates_file"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # create user settings"},{"line_number":55,"context_line":"        self.create_test_user \u003d CONF.fed_scenario.create_test_user"},{"line_number":56,"context_line":"        self.test_user_email \u003d CONF.fed_scenario.test_user_email"},{"line_number":57,"context_line":"        self.test_user_name \u003d CONF.fed_scenario.test_username"},{"line_number":58,"context_line":"        self.test_user_password \u003d CONF.fed_scenario.test_password"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _setup_mapping(self):"},{"line_number":61,"context_line":"        self.mapping_id \u003d data_utils.rand_uuid_hex()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3318dbac_0f02e4dc","line":58,"range":{"start_line":54,"start_character":7,"end_line":58,"end_character":65},"in_reply_to":"7f26ca3b_9e23a8b2","updated":"2023-04-18 12:42:46.000000000","message":"Done","commit_id":"a2a640f977b790556e6ae8028478006161177f54"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"a0f4f840834fc0206b442e3e4d6654b8d9e9527f","unresolved":true,"context_lines":[{"line_number":119,"context_line":"            access_token_endpoint\u003dself.keycloak.token_endpoint,"},{"line_number":120,"context_line":"            discovery_endpoint\u003dself.keycloak.discovery_endpoint,"},{"line_number":121,"context_line":"            username\u003duser,"},{"line_number":122,"context_line":"            password\u003d\u0027secret\u0027"},{"line_number":123,"context_line":"        )"},{"line_number":124,"context_line":"        s \u003d ks_session.Session(auth, verify\u003dself.ca_certificates_file)"},{"line_number":125,"context_line":"        return s.get_auth_headers()"}],"source_content_type":"text/x-python","patch_set":2,"id":"45eef777_40f3afb0","line":122,"range":{"start_line":122,"start_character":12,"end_line":122,"end_character":29},"updated":"2023-03-21 15:24:10.000000000","message":"this needs to be changed, right?","commit_id":"a2a640f977b790556e6ae8028478006161177f54"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"e4702c46369c3bb455e7548bd50405edc4194700","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            access_token_endpoint\u003dself.keycloak.token_endpoint,"},{"line_number":120,"context_line":"            discovery_endpoint\u003dself.keycloak.discovery_endpoint,"},{"line_number":121,"context_line":"            username\u003duser,"},{"line_number":122,"context_line":"            password\u003d\u0027secret\u0027"},{"line_number":123,"context_line":"        )"},{"line_number":124,"context_line":"        s \u003d ks_session.Session(auth, verify\u003dself.ca_certificates_file)"},{"line_number":125,"context_line":"        return s.get_auth_headers()"}],"source_content_type":"text/x-python","patch_set":2,"id":"8492e6be_ca019268","line":122,"range":{"start_line":122,"start_character":12,"end_line":122,"end_character":29},"in_reply_to":"45eef777_40f3afb0","updated":"2023-04-18 12:42:46.000000000","message":"Done","commit_id":"a2a640f977b790556e6ae8028478006161177f54"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"f920fef6b0a3d6522fb394606f9fe8e29c03d8dc","unresolved":true,"context_lines":[{"line_number":131,"context_line":"    @testtools.skipUnless(CONF.fed_scenario.protocol_id \u003d\u003d \u0027openid\u0027,"},{"line_number":132,"context_line":"                          \"Protocol not openid\")"},{"line_number":133,"context_line":"    def test_request_unscoped_token(self):"},{"line_number":134,"context_line":"        if (self.create_test_user):"},{"line_number":135,"context_line":"            user \u003d self._setup_user()"},{"line_number":136,"context_line":"        else:"},{"line_number":137,"context_line":"            user \u003d self.test_user_email"}],"source_content_type":"text/x-python","patch_set":2,"id":"d1180929_daaf03dd","line":134,"range":{"start_line":134,"start_character":11,"end_line":134,"end_character":34},"updated":"2023-03-21 15:12:02.000000000","message":"no parentheses needed","commit_id":"a2a640f977b790556e6ae8028478006161177f54"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"e4702c46369c3bb455e7548bd50405edc4194700","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    @testtools.skipUnless(CONF.fed_scenario.protocol_id \u003d\u003d \u0027openid\u0027,"},{"line_number":132,"context_line":"                          \"Protocol not openid\")"},{"line_number":133,"context_line":"    def test_request_unscoped_token(self):"},{"line_number":134,"context_line":"        if (self.create_test_user):"},{"line_number":135,"context_line":"            user \u003d self._setup_user()"},{"line_number":136,"context_line":"        else:"},{"line_number":137,"context_line":"            user \u003d self.test_user_email"}],"source_content_type":"text/x-python","patch_set":2,"id":"76222b4f_74932162","line":134,"range":{"start_line":134,"start_character":11,"end_line":134,"end_character":34},"in_reply_to":"d1180929_daaf03dd","updated":"2023-04-18 12:42:46.000000000","message":"Done","commit_id":"a2a640f977b790556e6ae8028478006161177f54"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"1f3b3a2b42c4dc2634ce9b0b430dfc5fa7620eb7","unresolved":true,"context_lines":[{"line_number":128,"context_line":"        user \u003d self._setup_user()"},{"line_number":129,"context_line":"        token \u003d self._request_unscoped_token(user)"},{"line_number":130,"context_line":"        self.assertNotEmpty(token)"},{"line_number":131,"context_line":"        self.keycloak.delete_user(user)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.federation,"},{"line_number":134,"context_line":"                          \"Federated Identity feature not enabled\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"628ab38b_9bb48eb6","side":"PARENT","line":131,"range":{"start_line":131,"start_character":0,"end_line":131,"end_character":9},"updated":"2023-04-06 08:01:11.000000000","message":"What happened to this call?  If the user is not an external user (ie. we created one), then we need to delete it at the end of the test.","commit_id":"6106a0eb07cd12cb1864f1eca48f3f071d223934"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"7a3b70ce79f1213268ed8d3893e2e923cb823e0d","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        user \u003d self._setup_user()"},{"line_number":129,"context_line":"        token \u003d self._request_unscoped_token(user)"},{"line_number":130,"context_line":"        self.assertNotEmpty(token)"},{"line_number":131,"context_line":"        self.keycloak.delete_user(user)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.federation,"},{"line_number":134,"context_line":"                          \"Federated Identity feature not enabled\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"31f9524e_9549adac","side":"PARENT","line":131,"range":{"start_line":131,"start_character":0,"end_line":131,"end_character":9},"in_reply_to":"36a07199_3d04af30","updated":"2023-04-06 17:40:18.000000000","message":"Done","commit_id":"6106a0eb07cd12cb1864f1eca48f3f071d223934"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"e96da75804f8e5a47863029d90a58aa5125d9335","unresolved":true,"context_lines":[{"line_number":128,"context_line":"        user \u003d self._setup_user()"},{"line_number":129,"context_line":"        token \u003d self._request_unscoped_token(user)"},{"line_number":130,"context_line":"        self.assertNotEmpty(token)"},{"line_number":131,"context_line":"        self.keycloak.delete_user(user)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.federation,"},{"line_number":134,"context_line":"                          \"Federated Identity feature not enabled\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"36a07199_3d04af30","side":"PARENT","line":131,"range":{"start_line":131,"start_character":0,"end_line":131,"end_character":9},"in_reply_to":"628ab38b_9bb48eb6","updated":"2023-04-06 13:51:41.000000000","message":"I saw it too, but I thought Dave killed the deletion on purpose. Consider this: in the existing code there\u0027s no finally:. Therefore, _if the test fails_, the user is left in.","commit_id":"6106a0eb07cd12cb1864f1eca48f3f071d223934"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"1f3b3a2b42c4dc2634ce9b0b430dfc5fa7620eb7","unresolved":true,"context_lines":[{"line_number":148,"context_line":"        # Get a scoped token to one of the listed projects"},{"line_number":149,"context_line":"        self.tokens_client.auth("},{"line_number":150,"context_line":"            project_id\u003dprojects[0][\u0027id\u0027], token\u003dtoken_id)"},{"line_number":151,"context_line":"        self.keycloak.delete_user(user)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1bdff1_7f8f442e","side":"PARENT","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":1},"updated":"2023-04-06 08:01:11.000000000","message":"ditto","commit_id":"6106a0eb07cd12cb1864f1eca48f3f071d223934"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"08a946b44d6cd25c59b4c8973ec3cf7f5e58b5ec","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        # Get a scoped token to one of the listed projects"},{"line_number":149,"context_line":"        self.tokens_client.auth("},{"line_number":150,"context_line":"            project_id\u003dprojects[0][\u0027id\u0027], token\u003dtoken_id)"},{"line_number":151,"context_line":"        self.keycloak.delete_user(user)"}],"source_content_type":"text/x-python","patch_set":5,"id":"706bc6c5_4e00ec83","side":"PARENT","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":1},"in_reply_to":"1a1bdff1_7f8f442e","updated":"2023-04-18 12:43:19.000000000","message":"Done","commit_id":"6106a0eb07cd12cb1864f1eca48f3f071d223934"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"1f3b3a2b42c4dc2634ce9b0b430dfc5fa7620eb7","unresolved":true,"context_lines":[{"line_number":129,"context_line":"            user \u003d CONF.idp_test_user_name"},{"line_number":130,"context_line":"            password \u003d CONF.idp_test_user_password"},{"line_number":131,"context_line":"        else:"},{"line_number":132,"context_line":"            user \u003d self._setup_user() "},{"line_number":133,"context_line":"            password \u003d \u0027secret\u0027"},{"line_number":134,"context_line":"        token \u003d self._request_unscoped_token(user, password)"},{"line_number":135,"context_line":"        self.assertNotEmpty(token)"}],"source_content_type":"text/x-python","patch_set":5,"id":"4c4e13e7_e0792e30","line":132,"range":{"start_line":132,"start_character":11,"end_line":132,"end_character":38},"updated":"2023-04-06 08:01:11.000000000","message":"NIT: trailing space","commit_id":"0c8b38602c4f7bc58f9a7a6dfb15095904d798b1"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"e4702c46369c3bb455e7548bd50405edc4194700","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            user \u003d CONF.idp_test_user_name"},{"line_number":130,"context_line":"            password \u003d CONF.idp_test_user_password"},{"line_number":131,"context_line":"        else:"},{"line_number":132,"context_line":"            user \u003d self._setup_user() "},{"line_number":133,"context_line":"            password \u003d \u0027secret\u0027"},{"line_number":134,"context_line":"        token \u003d self._request_unscoped_token(user, password)"},{"line_number":135,"context_line":"        self.assertNotEmpty(token)"}],"source_content_type":"text/x-python","patch_set":5,"id":"0c5e3825_2f72145b","line":132,"range":{"start_line":132,"start_character":11,"end_line":132,"end_character":38},"in_reply_to":"4c4e13e7_e0792e30","updated":"2023-04-18 12:42:46.000000000","message":"Done","commit_id":"0c8b38602c4f7bc58f9a7a6dfb15095904d798b1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"257c63e629f791ae4cb297e4916a469913e32392","unresolved":true,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def _setup_protocol(self):"},{"line_number":80,"context_line":"        if not self.idps_client.get_protocol_and_mapping(self.protocol_id, self.mapping_id):"},{"line_number":81,"context_line":"            self.idps_client.add_protocol_and_mapping("},{"line_number":82,"context_line":"                self.idp_id, self.protocol_id, self.mapping_id)"},{"line_number":83,"context_line":"            self.addCleanup("},{"line_number":84,"context_line":"                self.idps_client.delete_protocol_and_mapping,"},{"line_number":85,"context_line":"                self.idp_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"510c118a_a04b2c39","line":82,"range":{"start_line":81,"start_character":12,"end_line":82,"end_character":63},"updated":"2023-04-19 09:17:39.000000000","message":"At first, I was confused as to why this was needed.  I\u0027m assuming this is to ensure that the protocol and mapping are not deleted by the test if they were set up by some other code beforehand.  Gotta fix the pep8 though.","commit_id":"f90b7b784446ea8557e7adcb99bb8e092e80e3d1"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"b34864a4b42111d19c6ce9f26eb761110d44a32c","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def _setup_protocol(self):"},{"line_number":80,"context_line":"        if not self.idps_client.get_protocol_and_mapping(self.protocol_id, self.mapping_id):"},{"line_number":81,"context_line":"            self.idps_client.add_protocol_and_mapping("},{"line_number":82,"context_line":"                self.idp_id, self.protocol_id, self.mapping_id)"},{"line_number":83,"context_line":"            self.addCleanup("},{"line_number":84,"context_line":"                self.idps_client.delete_protocol_and_mapping,"},{"line_number":85,"context_line":"                self.idp_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"d11a3268_f7817856","line":82,"range":{"start_line":81,"start_character":12,"end_line":82,"end_character":63},"in_reply_to":"510c118a_a04b2c39","updated":"2023-04-25 19:07:20.000000000","message":"Done","commit_id":"f90b7b784446ea8557e7adcb99bb8e092e80e3d1"},{"author":{"_account_id":9914,"name":"Ade Lee","email":"alee@redhat.com","username":"alee"},"change_message_id":"257c63e629f791ae4cb297e4916a469913e32392","unresolved":true,"context_lines":[{"line_number":134,"context_line":"            password \u003d \u0027secret\u0027"},{"line_number":135,"context_line":"        token \u003d self._request_unscoped_token(user, password)"},{"line_number":136,"context_line":"        self.assertNotEmpty(token)"},{"line_number":137,"context_line":"        self.keycloak.delete_user(user)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.federation,"},{"line_number":140,"context_line":"                          \"Federated Identity feature not enabled\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f6dd25b_5f4279f9","line":137,"range":{"start_line":137,"start_character":7,"end_line":137,"end_character":39},"updated":"2023-04-19 09:17:39.000000000","message":"you still have not resolved the issue raised about making sure the keycloak user is deleted - but only if it has been created - and even if the test fails.\n\nThe code should look something like this:\n\nhttps://paste.openstack.org/show/bv8J2WvZFWIgl0zxOOpk/","commit_id":"f90b7b784446ea8557e7adcb99bb8e092e80e3d1"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"b34864a4b42111d19c6ce9f26eb761110d44a32c","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            password \u003d \u0027secret\u0027"},{"line_number":135,"context_line":"        token \u003d self._request_unscoped_token(user, password)"},{"line_number":136,"context_line":"        self.assertNotEmpty(token)"},{"line_number":137,"context_line":"        self.keycloak.delete_user(user)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.federation,"},{"line_number":140,"context_line":"                          \"Federated Identity feature not enabled\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"44563d94_5d4ae46b","line":137,"range":{"start_line":137,"start_character":7,"end_line":137,"end_character":39},"in_reply_to":"12a353cb_679ac3b4","updated":"2023-04-25 19:07:20.000000000","message":"Done","commit_id":"f90b7b784446ea8557e7adcb99bb8e092e80e3d1"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"8b5a26ef492e49d0b291b31ef82679dbf09cac0b","unresolved":true,"context_lines":[{"line_number":134,"context_line":"            password \u003d \u0027secret\u0027"},{"line_number":135,"context_line":"        token \u003d self._request_unscoped_token(user, password)"},{"line_number":136,"context_line":"        self.assertNotEmpty(token)"},{"line_number":137,"context_line":"        self.keycloak.delete_user(user)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @testtools.skipUnless(CONF.identity_feature_enabled.federation,"},{"line_number":140,"context_line":"                          \"Federated Identity feature not enabled\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"12a353cb_679ac3b4","line":137,"range":{"start_line":137,"start_character":7,"end_line":137,"end_character":39},"in_reply_to":"5f6dd25b_5f4279f9","updated":"2023-04-19 14:42:14.000000000","message":"Indeed.","commit_id":"f90b7b784446ea8557e7adcb99bb8e092e80e3d1"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"861ffde3ccb2a3632441f63d8aeee804a9f702d9","unresolved":true,"context_lines":[{"line_number":169,"context_line":"            else:"},{"line_number":170,"context_line":"                user \u003d self._setup_user()"},{"line_number":171,"context_line":"                password \u003d \u0027secret\u0027"},{"line_number":172,"context_line":"            token \u003d self._request_unscoped_token(user, password)"},{"line_number":173,"context_line":"            token_id \u003d token[\u0027X-Auth-Token\u0027]"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"            projects \u003d self.auth_client.get_available_projects_scopes("}],"source_content_type":"text/x-python","patch_set":13,"id":"e872d451_75641d5d","line":172,"updated":"2023-04-25 23:16:04.000000000","message":"Forgot keycloak_user_added\u003dTrue here, right?","commit_id":"a73e2ce6e996bb2cd17d35383db5f68bf831c9ed"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"855cd6c52fad5d206be4b88ba6308133bb2098fd","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            else:"},{"line_number":170,"context_line":"                user \u003d self._setup_user()"},{"line_number":171,"context_line":"                password \u003d \u0027secret\u0027"},{"line_number":172,"context_line":"            token \u003d self._request_unscoped_token(user, password)"},{"line_number":173,"context_line":"            token_id \u003d token[\u0027X-Auth-Token\u0027]"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"            projects \u003d self.auth_client.get_available_projects_scopes("}],"source_content_type":"text/x-python","patch_set":13,"id":"4e28cdd1_04ca82eb","line":172,"in_reply_to":"e872d451_75641d5d","updated":"2023-04-26 01:17:25.000000000","message":"Yes, good catch.  Thank you!","commit_id":"a73e2ce6e996bb2cd17d35383db5f68bf831c9ed"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"d6a8cfdca73233a5ff2750024120dc28eb2ee881","unresolved":true,"context_lines":[{"line_number":162,"context_line":"    def test_request_scoped_token(self):"},{"line_number":163,"context_line":"        keycloak_user_added \u003d False"},{"line_number":164,"context_line":"        try:"},{"line_number":165,"context_line":"            if CONF.fed_scenario.idp_test_user_name:"},{"line_number":166,"context_line":"                user \u003d CONF.fed_scenario.idp_test_user_name"},{"line_number":167,"context_line":"                password \u003d CONF.fed_scenario.idp_test_user_password"},{"line_number":168,"context_line":"            else:"},{"line_number":169,"context_line":"                user \u003d self._setup_user()"},{"line_number":170,"context_line":"                password \u003d \u0027secret\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"fbc7ad42_8f9e2f0d","line":167,"range":{"start_line":165,"start_character":12,"end_line":167,"end_character":67},"updated":"2023-05-01 14:29:24.000000000","message":"Maybe this should be done in setUp and tearDown instead of duplicating the code?","commit_id":"561a5206edbfd8b90c043f8612b2a7228d9d5889"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"77bf0d04df433d67e6b75a7b15f3b9866b7372f2","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    def test_request_scoped_token(self):"},{"line_number":163,"context_line":"        keycloak_user_added \u003d False"},{"line_number":164,"context_line":"        try:"},{"line_number":165,"context_line":"            if CONF.fed_scenario.idp_test_user_name:"},{"line_number":166,"context_line":"                user \u003d CONF.fed_scenario.idp_test_user_name"},{"line_number":167,"context_line":"                password \u003d CONF.fed_scenario.idp_test_user_password"},{"line_number":168,"context_line":"            else:"},{"line_number":169,"context_line":"                user \u003d self._setup_user()"},{"line_number":170,"context_line":"                password \u003d \u0027secret\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"ed108e1f_584d27eb","line":167,"range":{"start_line":165,"start_character":12,"end_line":167,"end_character":67},"in_reply_to":"fbc7ad42_8f9e2f0d","updated":"2023-05-01 16:01:07.000000000","message":"Done","commit_id":"561a5206edbfd8b90c043f8612b2a7228d9d5889"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"f92067d13974c5e20f3bcde6fa17dedeb6c15da2","unresolved":true,"context_lines":[{"line_number":102,"context_line":"            self._setup_mapping()"},{"line_number":103,"context_line":"            self._setup_protocol()"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        self.keycloak_user_added \u003d False"},{"line_number":106,"context_line":"        if CONF.fed_scenario.idp_test_user_name:"},{"line_number":107,"context_line":"            self.user \u003d CONF.fed_scenario.idp_test_user_name"},{"line_number":108,"context_line":"            self.password \u003d CONF.fed_scenario.idp_test_user_password"},{"line_number":109,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"43d88bc5_2fe79511","line":106,"range":{"start_line":105,"start_character":8,"end_line":106,"end_character":48},"updated":"2023-05-01 18:30:56.000000000","message":"Is the `keycloak_user_dded` flag really needed?  It seems it\u0027s just a proxy for the value of `idp_test_user_name` which can also be checked during teardown.\n\nIf we can re-use a pre-provisioned user, could we also reuse a dynamically created user as well?  If so, maybe we want to just create a single user during setUpClass and remove it during tearDownClass? https://docs.python.org/3/library/unittest.html#setupclass-and-teardownclass","commit_id":"a32600f5215601f4a720f09dc57935e85786c806"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"77423560261c61a47afb4283f5f8061a74ef12b8","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            self._setup_mapping()"},{"line_number":103,"context_line":"            self._setup_protocol()"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        self.keycloak_user_added \u003d False"},{"line_number":106,"context_line":"        if CONF.fed_scenario.idp_test_user_name:"},{"line_number":107,"context_line":"            self.user \u003d CONF.fed_scenario.idp_test_user_name"},{"line_number":108,"context_line":"            self.password \u003d CONF.fed_scenario.idp_test_user_password"},{"line_number":109,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"50a9e2d8_cddf3dfc","line":106,"range":{"start_line":105,"start_character":8,"end_line":106,"end_character":48},"in_reply_to":"43d88bc5_2fe79511","updated":"2023-05-01 19:26:30.000000000","message":"Done","commit_id":"a32600f5215601f4a720f09dc57935e85786c806"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"aad0df78a07cef70959d82e804a9754f1393c1c4","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            self._setup_mapping()"},{"line_number":103,"context_line":"            self._setup_protocol()"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        self.keycloak_user_added \u003d False"},{"line_number":106,"context_line":"        if CONF.fed_scenario.idp_test_user_name:"},{"line_number":107,"context_line":"            self.user \u003d CONF.fed_scenario.idp_test_user_name"},{"line_number":108,"context_line":"            self.password \u003d CONF.fed_scenario.idp_test_user_password"},{"line_number":109,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"3eaf2bfa_aa0c6999","line":106,"range":{"start_line":105,"start_character":8,"end_line":106,"end_character":48},"in_reply_to":"50a9e2d8_cddf3dfc","updated":"2023-05-01 19:43:17.000000000","message":"Generally I\u0027m not onboard with such economizing, it\u0027s an easy way to create a test interference. But this class only has two tests in it, so I guess it\u0027s okay.","commit_id":"a32600f5215601f4a720f09dc57935e85786c806"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"7fef4b068ccc5f91726aaf3f433b2f8a619e7860","unresolved":true,"context_lines":[{"line_number":171,"context_line":"            self.tokens_client.auth("},{"line_number":172,"context_line":"                project_id\u003dprojects[0][\u0027id\u0027], token\u003dtoken_id)"},{"line_number":173,"context_line":"        finally:"},{"line_number":174,"context_line":"            if self.keycloak_user_added:"},{"line_number":175,"context_line":"                self.keycloak.delete_user(self.user)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5c851685_e72308b4","line":174,"updated":"2023-05-01 17:13:37.000000000","message":"I\u0027m pretty sure Doug wanted this part to be in tearDown.","commit_id":"a32600f5215601f4a720f09dc57935e85786c806"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"77423560261c61a47afb4283f5f8061a74ef12b8","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            self.tokens_client.auth("},{"line_number":172,"context_line":"                project_id\u003dprojects[0][\u0027id\u0027], token\u003dtoken_id)"},{"line_number":173,"context_line":"        finally:"},{"line_number":174,"context_line":"            if self.keycloak_user_added:"},{"line_number":175,"context_line":"                self.keycloak.delete_user(self.user)"}],"source_content_type":"text/x-python","patch_set":18,"id":"d3abf7f1_5d8427f5","line":174,"in_reply_to":"3f4ebc32_f21f7365","updated":"2023-05-01 19:26:30.000000000","message":"Done","commit_id":"a32600f5215601f4a720f09dc57935e85786c806"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"f92067d13974c5e20f3bcde6fa17dedeb6c15da2","unresolved":true,"context_lines":[{"line_number":171,"context_line":"            self.tokens_client.auth("},{"line_number":172,"context_line":"                project_id\u003dprojects[0][\u0027id\u0027], token\u003dtoken_id)"},{"line_number":173,"context_line":"        finally:"},{"line_number":174,"context_line":"            if self.keycloak_user_added:"},{"line_number":175,"context_line":"                self.keycloak.delete_user(self.user)"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f4ebc32_f21f7365","line":174,"in_reply_to":"5c851685_e72308b4","updated":"2023-05-01 18:30:56.000000000","message":"Yeah, sorry if that was not clear in my previous comment.  IMO it would be best if the tests themselves don\u0027t have to worry about cleanup and instead we just handle that once during teardown.  `tearDown()` does run even if the test raises an exception so the try/finally would not be necessary either: https://docs.python.org/3/library/unittest.html#unittest.TestCase.tearDown","commit_id":"a32600f5215601f4a720f09dc57935e85786c806"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"de6ec11b3485f2a1b84c9004a24f9ebb2e83c18f","unresolved":true,"context_lines":[{"line_number":119,"context_line":"    def tearDown(self):"},{"line_number":120,"context_line":"        super(TestOidcFederatedAuthentication, self).tearDown()"},{"line_number":121,"context_line":"        if not CONF.fed_scenario.idp_test_user_name:"},{"line_number":122,"context_line":"            self.keycloak.delete_user(self.test_user)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _setup_user(self, email\u003dNone):"},{"line_number":125,"context_line":"        email \u003d email if email else f\u0027test-{uuid.uuid4().hex}@example.com\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"094ef723_abd7c1b5","line":122,"updated":"2023-05-02 18:09:44.000000000","message":"If calling the parent\u0027s tearDown() is necessary, I usually do it at the end, as a matter of habit. There are sometimes dependencies. Looks like it\u0027s not necessary here, but perhaps something to do just for uniformity.","commit_id":"6f55767e47c4f1d2ef124bfd81ab5ab902fa84f1"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"6cfea3279ffbed554a44c9755d08996e6f68974f","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    def tearDown(self):"},{"line_number":120,"context_line":"        super(TestOidcFederatedAuthentication, self).tearDown()"},{"line_number":121,"context_line":"        if not CONF.fed_scenario.idp_test_user_name:"},{"line_number":122,"context_line":"            self.keycloak.delete_user(self.test_user)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def _setup_user(self, email\u003dNone):"},{"line_number":125,"context_line":"        email \u003d email if email else f\u0027test-{uuid.uuid4().hex}@example.com\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"2f8d66b0_31a051f9","line":122,"in_reply_to":"094ef723_abd7c1b5","updated":"2023-05-02 19:11:46.000000000","message":"Yeah, I was thinking about that and I also wanted to move all of the helper functions to the same section.  Another patch set is coming.","commit_id":"6f55767e47c4f1d2ef124bfd81ab5ab902fa84f1"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"11bc041b24a332db440ff40574194d85fc955728","unresolved":true,"context_lines":[{"line_number":114,"context_line":"        return s.get_auth_headers()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def setUp(self):"},{"line_number":117,"context_line":"        super(TestOidcFederatedAuthentication, self).setUp()"},{"line_number":118,"context_line":"        self._setup_settings()"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        # Setup mapping and protocol"}],"source_content_type":"text/x-python","patch_set":23,"id":"fbd0d880_34e8731f","line":117,"range":{"start_line":117,"start_character":14,"end_line":117,"end_character":51},"updated":"2023-05-03 15:51:15.000000000","message":"For future reference, we don\u0027t need to do this style of super calls anymore since we dropped 2.7 support.  For Python 3.x you can just do `super().setUp()`","commit_id":"dbe56f0a07febd9e8babf54b88c63084b59f0b39"},{"author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"change_message_id":"6f08aee80ab294bf5ff78bc104e6677621ee73f5","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        return s.get_auth_headers()"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def setUp(self):"},{"line_number":117,"context_line":"        super(TestOidcFederatedAuthentication, self).setUp()"},{"line_number":118,"context_line":"        self._setup_settings()"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        # Setup mapping and protocol"}],"source_content_type":"text/x-python","patch_set":23,"id":"51d7b216_8224ca74","line":117,"range":{"start_line":117,"start_character":14,"end_line":117,"end_character":51},"in_reply_to":"fbd0d880_34e8731f","updated":"2023-05-03 18:17:17.000000000","message":"Ack, this test was copied from an existing repo the Kristi was working on probably from the 2.7 days. Regardless, that is good to know, thank you.","commit_id":"dbe56f0a07febd9e8babf54b88c63084b59f0b39"}]}
