Добавить
Уведомления

Собес: 19.3 Тестирование JWT с истекшим сроком действия: макирование времени и подделка токена

#QA #JWT #тестирование #собеседованиеQA #автоматизация #Jest #QAинженер #обучениеIT #качествоПО #автоматизациятестирования #WebSecurity #тестировщик 19.3 Как замокать jwt время истечения в frontend тестах В этом ролике мы разберем один из самых каверзных вопросов на технических интервью — как протестировать реакцию системы на *просроченный JWT* , не дожидаясь его реального истечения. Вы получите два готовых профессиональных подхода, которые выделят вас среди других кандидатов. Мы детально обсудим: * *Макирование времени (Time Mocking)* : как совершить «путешествие в будущее» внутри теста, используя инструменты вроде *Jest (useFakeTimers)* . * *Подделка токена * : как залезть «под капот» JWT, изменить поле *exp* на дату в прошлом и подсунуть системе уже протухший объект. В этом видео мы покажем: * Пошаговый алгоритм работы с фейковыми таймерами: от активации до обязательной «уборки» за собой. * Разбор псевдокода для модификации полезной нагрузки токена. * Почему для фронтенда часто не важна подпись токена при тестировании логики разлогина. Специально для подготовки к интервью мы подготовили *идеальный ответ* , который демонстрирует знание инструментов и понимание бизнес-задач (очистка состояния, повторная аутентификация). Смотрите до конца, чтобы получить готовую шпаргалку и научиться имитировать сложные сценарии, завязанные на времени! [00:00] — Проблема тестирования логики, завязанной на времени [01:05] — Два пути: макирование времени vs манипуляция с объектом [01:21] — Метод 1: Макирование времени (Time Mocking) [01:48] — Алгоритм работы: активация, перемотка и восстановление таймеров [02:10] — Пример кода на Jest: useFakeTimers и setSystemTime [02:54] — Метод 2: Подделка токена (Token Forging) [03:40] — Разбор псевдокода: меняем поле exp на дату в прошлом [04:24] — Идеальный ответ для собеседования: как объединить оба подхода [05:10] — Финальная шпаргалка: ключевые тезисы для повторения Есть два основных подхода: подделать время (Date.now) или подделать сам JWT (поле exp). Для фронтенд‑тестов чаще делают первое.stackoverflow+1 Подход 1. Замокать время (Date.now / таймеры) Идея: твоя функция isTokenExpired сравнивает exp токена с текущим временем. Если в тесте сказать «сейчас уже будущее», токен станет просроченным. Варианты: замокать прямо Date.now = jest.fn().mockReturnValue(...);github+1 в современных версиях Jest — jest.setSystemTime(...).codewithhugo Плюсы: не нужно ковырять сам JWT; реалистично: фронт «думает», что прошло много времени. Подход 2. Замокать / подделать JWT (exp в прошлом) Если у тебя есть helper, который декодирует JWT и берёт из него exp, можно не менять время, а изменить сам токен. Идея: В тесте расшифровываешь JWT (без проверки подписи). Меняешь поле exp на время в прошлом. Кодируешь обратно и передаёшь в свою функцию/контекст. Такой подход ближе к бэкенд‑логике, но требует утилит для сборки тестового JWT.github+1 Как это объяснить на собеседовании QA Можно сказать так: «Во фронтовых тестах, когда нужно смоделировать истечение JWT, я обычно не жду реального времени, а мокаю время. Например, в Jest через jest.useFakeTimers() или jest.setSystemTime подставляю дату “в будущем”, чтобы функция, которая проверяет exp в токене, посчитала его просроченным. Альтернативный вариант — для JWT сделать тестовый токен с полем exp в прошлом и проверить, что фронт корректно реагирует: помечает токен как expired, чистит стейт и инициирует повторную авторизацию.» https://stackoverflow.com/questions/29719631/how-do-i-set-a-mock-date-in-jest https://codewithhugo.com/mocking-the-current-date-in-jest-tests/ https://github.com/jestjs/jest/issues/2234 https://github.com/auth0/node-jsonwebtoken/issues/288 https://proselyte.net/jwt-for-devs/ https://www.javacodegeeks.com/mock-jwt-decoding-with-jwtdecoder-in-junit-tests.html https://www.linkedin.com/posts/chikezie-ilodigwe-942262113_frontend-interview-question-expired-jwt-activity-7364915837410926592-ma_k https://stackoverflow.com/questions/28304821/node-js-unit-test-to-check-that-a-token-is-expired-after-the-set-time https://developer.mozilla.org/en-US/blog/test-javascript-with-jest-on-vultr/ https://dev.to/harsha/jwt-authentication-tutorial-with-node-js-3bgo https://stackoverflow.com/questions/61500578/how-to-mock-jwt-authentication-in-a-spring-boot-unit-test *Подписывайтесь на канал* , чтобы уверенно проходить QA-собеседования и развивать навыки в автоматизации!

Иконка канала rutube_account_23532490
1 подписчик
12+
5 просмотров
9 дней назад
12+
5 просмотров
9 дней назад

#QA #JWT #тестирование #собеседованиеQA #автоматизация #Jest #QAинженер #обучениеIT #качествоПО #автоматизациятестирования #WebSecurity #тестировщик 19.3 Как замокать jwt время истечения в frontend тестах В этом ролике мы разберем один из самых каверзных вопросов на технических интервью — как протестировать реакцию системы на *просроченный JWT* , не дожидаясь его реального истечения. Вы получите два готовых профессиональных подхода, которые выделят вас среди других кандидатов. Мы детально обсудим: * *Макирование времени (Time Mocking)* : как совершить «путешествие в будущее» внутри теста, используя инструменты вроде *Jest (useFakeTimers)* . * *Подделка токена * : как залезть «под капот» JWT, изменить поле *exp* на дату в прошлом и подсунуть системе уже протухший объект. В этом видео мы покажем: * Пошаговый алгоритм работы с фейковыми таймерами: от активации до обязательной «уборки» за собой. * Разбор псевдокода для модификации полезной нагрузки токена. * Почему для фронтенда часто не важна подпись токена при тестировании логики разлогина. Специально для подготовки к интервью мы подготовили *идеальный ответ* , который демонстрирует знание инструментов и понимание бизнес-задач (очистка состояния, повторная аутентификация). Смотрите до конца, чтобы получить готовую шпаргалку и научиться имитировать сложные сценарии, завязанные на времени! [00:00] — Проблема тестирования логики, завязанной на времени [01:05] — Два пути: макирование времени vs манипуляция с объектом [01:21] — Метод 1: Макирование времени (Time Mocking) [01:48] — Алгоритм работы: активация, перемотка и восстановление таймеров [02:10] — Пример кода на Jest: useFakeTimers и setSystemTime [02:54] — Метод 2: Подделка токена (Token Forging) [03:40] — Разбор псевдокода: меняем поле exp на дату в прошлом [04:24] — Идеальный ответ для собеседования: как объединить оба подхода [05:10] — Финальная шпаргалка: ключевые тезисы для повторения Есть два основных подхода: подделать время (Date.now) или подделать сам JWT (поле exp). Для фронтенд‑тестов чаще делают первое.stackoverflow+1 Подход 1. Замокать время (Date.now / таймеры) Идея: твоя функция isTokenExpired сравнивает exp токена с текущим временем. Если в тесте сказать «сейчас уже будущее», токен станет просроченным. Варианты: замокать прямо Date.now = jest.fn().mockReturnValue(...);github+1 в современных версиях Jest — jest.setSystemTime(...).codewithhugo Плюсы: не нужно ковырять сам JWT; реалистично: фронт «думает», что прошло много времени. Подход 2. Замокать / подделать JWT (exp в прошлом) Если у тебя есть helper, который декодирует JWT и берёт из него exp, можно не менять время, а изменить сам токен. Идея: В тесте расшифровываешь JWT (без проверки подписи). Меняешь поле exp на время в прошлом. Кодируешь обратно и передаёшь в свою функцию/контекст. Такой подход ближе к бэкенд‑логике, но требует утилит для сборки тестового JWT.github+1 Как это объяснить на собеседовании QA Можно сказать так: «Во фронтовых тестах, когда нужно смоделировать истечение JWT, я обычно не жду реального времени, а мокаю время. Например, в Jest через jest.useFakeTimers() или jest.setSystemTime подставляю дату “в будущем”, чтобы функция, которая проверяет exp в токене, посчитала его просроченным. Альтернативный вариант — для JWT сделать тестовый токен с полем exp в прошлом и проверить, что фронт корректно реагирует: помечает токен как expired, чистит стейт и инициирует повторную авторизацию.» https://stackoverflow.com/questions/29719631/how-do-i-set-a-mock-date-in-jest https://codewithhugo.com/mocking-the-current-date-in-jest-tests/ https://github.com/jestjs/jest/issues/2234 https://github.com/auth0/node-jsonwebtoken/issues/288 https://proselyte.net/jwt-for-devs/ https://www.javacodegeeks.com/mock-jwt-decoding-with-jwtdecoder-in-junit-tests.html https://www.linkedin.com/posts/chikezie-ilodigwe-942262113_frontend-interview-question-expired-jwt-activity-7364915837410926592-ma_k https://stackoverflow.com/questions/28304821/node-js-unit-test-to-check-that-a-token-is-expired-after-the-set-time https://developer.mozilla.org/en-US/blog/test-javascript-with-jest-on-vultr/ https://dev.to/harsha/jwt-authentication-tutorial-with-node-js-3bgo https://stackoverflow.com/questions/61500578/how-to-mock-jwt-authentication-in-a-spring-boot-unit-test *Подписывайтесь на канал* , чтобы уверенно проходить QA-собеседования и развивать навыки в автоматизации!

, чтобы оставлять комментарии