)]}'
{"tempest/api/identity/admin/v3/test_groups.py":[{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"c19fe34f4e8e8ed06233cd6d928b8459642907cd","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        # check group membership expiration and remove from comparison"},{"line_number":118,"context_line":"        for g in user_groups:"},{"line_number":119,"context_line":"            if \u0027expires\u0027 in g:"},{"line_number":120,"context_line":"                self.assertEqual(None, g[\u0027expires\u0027])"},{"line_number":121,"context_line":"                del(g[\u0027expires\u0027])"},{"line_number":122,"context_line":"        self.assertEqual(sorted(groups, key\u003dlambda k: k[\u0027name\u0027]),"},{"line_number":123,"context_line":"                         sorted(user_groups, key\u003dlambda k: k[\u0027name\u0027]))"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_6313ac5d","line":120,"range":{"start_line":120,"start_character":16,"end_line":120,"end_character":52},"updated":"2020-03-27 14:59:38.000000000","message":"pep8 is throwing an error here:\n2020-03-24 12:35:48.620828 | ubuntu-bionic | ./tempest/api/identity/admin/v3/test_groups.py:120:22: H203  Use assertIs(Not)None to check for None\n2020-03-24 12:35:48.620912 | ubuntu-bionic |                 self.assertEqual(None, g[\u0027expires\u0027])\n\nso please replace assertEqual by assertIs ...\nself.assertIs(None, g[\u0027expires\u0027])","commit_id":"5458cb3619a8a0dc23cdb01225472a9f55ee5935"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"276d1d7214c8caf13cd97db1063acb992a8afa19","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            self.groups_client.add_group_user(group[\u0027id\u0027], user[\u0027id\u0027])"},{"line_number":115,"context_line":"        # list groups which user belongs to"},{"line_number":116,"context_line":"        user_groups \u003d self.users_client.list_user_groups(user[\u0027id\u0027])[\u0027groups\u0027]"},{"line_number":117,"context_line":"        # check group membership expiration and remove from comparison"},{"line_number":118,"context_line":"        for g in user_groups:"},{"line_number":119,"context_line":"            if \u0027expires\u0027 in g:"},{"line_number":120,"context_line":"                self.assertEqual(None, g[\u0027expires\u0027])"},{"line_number":121,"context_line":"                del(g[\u0027expires\u0027])"},{"line_number":122,"context_line":"        self.assertEqual(sorted(groups, key\u003dlambda k: k[\u0027name\u0027]),"},{"line_number":123,"context_line":"                         sorted(user_groups, key\u003dlambda k: k[\u0027name\u0027]))"},{"line_number":124,"context_line":"        self.assertEqual(2, len(user_groups))"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_4e223702","line":121,"range":{"start_line":117,"start_character":0,"end_line":121,"end_character":33},"updated":"2020-03-25 17:19:05.000000000","message":"May I ask why is the change needed? Is there any issue with the test as is? \nuser_groups should contain only the two groups created in the for loop above, shouldn\u0027t it?","commit_id":"5458cb3619a8a0dc23cdb01225472a9f55ee5935"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"c19fe34f4e8e8ed06233cd6d928b8459642907cd","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            self.groups_client.add_group_user(group[\u0027id\u0027], user[\u0027id\u0027])"},{"line_number":115,"context_line":"        # list groups which user belongs to"},{"line_number":116,"context_line":"        user_groups \u003d self.users_client.list_user_groups(user[\u0027id\u0027])[\u0027groups\u0027]"},{"line_number":117,"context_line":"        # check group membership expiration and remove from comparison"},{"line_number":118,"context_line":"        for g in user_groups:"},{"line_number":119,"context_line":"            if \u0027expires\u0027 in g:"},{"line_number":120,"context_line":"                self.assertEqual(None, g[\u0027expires\u0027])"},{"line_number":121,"context_line":"                del(g[\u0027expires\u0027])"},{"line_number":122,"context_line":"        self.assertEqual(sorted(groups, key\u003dlambda k: k[\u0027name\u0027]),"},{"line_number":123,"context_line":"                         sorted(user_groups, key\u003dlambda k: k[\u0027name\u0027]))"},{"line_number":124,"context_line":"        self.assertEqual(2, len(user_groups))"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_c35a794d","line":121,"range":{"start_line":117,"start_character":0,"end_line":121,"end_character":33},"in_reply_to":"df33271e_3b73b24f","updated":"2020-03-27 14:59:38.000000000","message":"I see, thanks for the explanations, makes sense now.","commit_id":"5458cb3619a8a0dc23cdb01225472a9f55ee5935"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"ea1234dbb0aa6bc43686c32b81519c67e834aa82","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            self.groups_client.add_group_user(group[\u0027id\u0027], user[\u0027id\u0027])"},{"line_number":115,"context_line":"        # list groups which user belongs to"},{"line_number":116,"context_line":"        user_groups \u003d self.users_client.list_user_groups(user[\u0027id\u0027])[\u0027groups\u0027]"},{"line_number":117,"context_line":"        # check group membership expiration and remove from comparison"},{"line_number":118,"context_line":"        for g in user_groups:"},{"line_number":119,"context_line":"            if \u0027expires\u0027 in g:"},{"line_number":120,"context_line":"                self.assertEqual(None, g[\u0027expires\u0027])"},{"line_number":121,"context_line":"                del(g[\u0027expires\u0027])"},{"line_number":122,"context_line":"        self.assertEqual(sorted(groups, key\u003dlambda k: k[\u0027name\u0027]),"},{"line_number":123,"context_line":"                         sorted(user_groups, key\u003dlambda k: k[\u0027name\u0027]))"},{"line_number":124,"context_line":"        self.assertEqual(2, len(user_groups))"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_3b73b24f","line":121,"range":{"start_line":117,"start_character":0,"end_line":121,"end_character":33},"in_reply_to":"df33271e_4e223702","updated":"2020-03-25 20:16:47.000000000","message":"A new feature that is being worked introduces expiration for user group memberships and adds an `expires` attribute for each group when listing groups for a user. This is present in the dicts in user_groups, but not in the dicts in groups. This change makes those proposed reviews pass this test.","commit_id":"5458cb3619a8a0dc23cdb01225472a9f55ee5935"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d1e2e7dedf32f3cae4b7da50052ca09f35c82028","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            self.groups_client.add_group_user(group[\u0027id\u0027], user[\u0027id\u0027])"},{"line_number":115,"context_line":"        # list groups which user belongs to"},{"line_number":116,"context_line":"        user_groups \u003d self.users_client.list_user_groups(user[\u0027id\u0027])[\u0027groups\u0027]"},{"line_number":117,"context_line":"        # check group membership expiration and remove from comparison"},{"line_number":118,"context_line":"        for g in user_groups:"},{"line_number":119,"context_line":"            if \u0027membership_expires_at\u0027 in g:"},{"line_number":120,"context_line":"                self.assertIsNone(g[\u0027membership_expires_at\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_99671db8","line":117,"range":{"start_line":117,"start_character":0,"end_line":117,"end_character":70},"updated":"2020-04-09 15:51:21.000000000","message":"can you update the notes with what you mentioned in review coment that this field is new in user groups and not present in groups so remove it.","commit_id":"84cfe14c40781de9f013e2304fc919585cf68bb9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d1e2e7dedf32f3cae4b7da50052ca09f35c82028","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        user_groups \u003d self.users_client.list_user_groups(user[\u0027id\u0027])[\u0027groups\u0027]"},{"line_number":117,"context_line":"        # check group membership expiration and remove from comparison"},{"line_number":118,"context_line":"        for g in user_groups:"},{"line_number":119,"context_line":"            if \u0027membership_expires_at\u0027 in g:"},{"line_number":120,"context_line":"                self.assertIsNone(g[\u0027membership_expires_at\u0027])"},{"line_number":121,"context_line":"                del(g[\u0027membership_expires_at\u0027])"},{"line_number":122,"context_line":"        self.assertEqual(sorted(groups, key\u003dlambda k: k[\u0027name\u0027]),"},{"line_number":123,"context_line":"                         sorted(user_groups, key\u003dlambda k: k[\u0027name\u0027]))"},{"line_number":124,"context_line":"        self.assertEqual(2, len(user_groups))"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_19802d46","line":121,"range":{"start_line":119,"start_character":0,"end_line":121,"end_character":47},"updated":"2020-04-09 15:51:21.000000000","message":"we can use Matcher things here with membership_expires_at field as not to compare but for now this lgtm.","commit_id":"84cfe14c40781de9f013e2304fc919585cf68bb9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6bd0341c4148b19834ffdb6106e01a6ebfa8e04e","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        # Therefore we remove it from the comparison."},{"line_number":120,"context_line":"        for g in user_groups:"},{"line_number":121,"context_line":"            if \u0027membership_expires_at\u0027 in g:"},{"line_number":122,"context_line":"                self.assertIsNone(g[\u0027membership_expires_at\u0027])"},{"line_number":123,"context_line":"                del(g[\u0027membership_expires_at\u0027])"},{"line_number":124,"context_line":"        self.assertEqual(sorted(groups, key\u003dlambda k: k[\u0027name\u0027]),"},{"line_number":125,"context_line":"                         sorted(user_groups, key\u003dlambda k: k[\u0027name\u0027]))"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_f9062986","line":122,"range":{"start_line":122,"start_character":16,"end_line":122,"end_character":61},"updated":"2020-04-09 16:00:45.000000000","message":"I hope its value is never going to None ? if it can be None at initial time or sometime I will suggest not to assert here and let\u0027s just remove the attr for this test scope irrespective of its value ?","commit_id":"30638b53a4f9a277a821f7988d8c18b6de52bf77"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6dc192bdfc0c06a1d0715378576f2b0a0ed41342","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        # Therefore we remove it from the comparison."},{"line_number":120,"context_line":"        for g in user_groups:"},{"line_number":121,"context_line":"            if \u0027membership_expires_at\u0027 in g:"},{"line_number":122,"context_line":"                self.assertIsNone(g[\u0027membership_expires_at\u0027])"},{"line_number":123,"context_line":"                del(g[\u0027membership_expires_at\u0027])"},{"line_number":124,"context_line":"        self.assertEqual(sorted(groups, key\u003dlambda k: k[\u0027name\u0027]),"},{"line_number":125,"context_line":"                         sorted(user_groups, key\u003dlambda k: k[\u0027name\u0027]))"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_195e6d75","line":122,"range":{"start_line":122,"start_character":16,"end_line":122,"end_character":61},"in_reply_to":"df33271e_b9730116","updated":"2020-04-09 16:04:54.000000000","message":"got it. thanks","commit_id":"30638b53a4f9a277a821f7988d8c18b6de52bf77"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"52d889c94ba80d9742a0fbd0044380f6ad85bedd","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        # Therefore we remove it from the comparison."},{"line_number":120,"context_line":"        for g in user_groups:"},{"line_number":121,"context_line":"            if \u0027membership_expires_at\u0027 in g:"},{"line_number":122,"context_line":"                self.assertIsNone(g[\u0027membership_expires_at\u0027])"},{"line_number":123,"context_line":"                del(g[\u0027membership_expires_at\u0027])"},{"line_number":124,"context_line":"        self.assertEqual(sorted(groups, key\u003dlambda k: k[\u0027name\u0027]),"},{"line_number":125,"context_line":"                         sorted(user_groups, key\u003dlambda k: k[\u0027name\u0027]))"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_b9730116","line":122,"range":{"start_line":122,"start_character":16,"end_line":122,"end_character":61},"in_reply_to":"df33271e_f9062986","updated":"2020-04-09 16:04:18.000000000","message":"It\u0027s null/None for non-expiring group memberships, which is what tempest is creating. The only group memberships that expire are ones carried over via federation and federation mappings.","commit_id":"30638b53a4f9a277a821f7988d8c18b6de52bf77"}]}
