diff --git a/airgun/entities/user.py b/airgun/entities/user.py index 178c982f7..e98f4a49c 100644 --- a/airgun/entities/user.py +++ b/airgun/entities/user.py @@ -49,6 +49,17 @@ def delete(self, entity_name): view.flash.assert_no_error() view.flash.dismiss() + def invalidate_jwt(self, entity_name): + """Invalidate JSON Web Token of an user entity""" + view = self.navigate_to(self, 'All') + view.search(entity_name) + if view.dropdown.is_displayed: + view.dropdown.click() + view.invalidate_jwt.click() + view.dialog.confirm_dialog.click() + view.flash.assert_no_error() + view.flash.dismiss() + @navigator.register(UserEntity, 'All') class ShowAllUsers(NavigateStep): diff --git a/airgun/views/user.py b/airgun/views/user.py index 58f36a340..b811c16ff 100644 --- a/airgun/views/user.py +++ b/airgun/views/user.py @@ -8,6 +8,9 @@ class UsersView(BaseLoggedInView, SearchableViewMixinPF4): title = Text("//h1[normalize-space(.)='Users']") new = Text("//a[contains(@href, '/users/new')]") + dropdown = Text("//a[@href='#' and contains(@class, 'dropdown-toggle')]") + invalidate_jwt = Text('.//a[@data-method="patch"]') + impersonate_user = Text('.//a[@data-method="post"]') table = Table( './/table', column_widgets={