Как и обещал в прошлом посте выкладываю свое решение задания:
🐈 GitHub: https://github.com/topsycreed/rest-assured-token
В решении используется Java, Gradle, JUnit 5, AssertJ, Rest Assured, Jackson, Allure, Lombok и Owner для чтения properties.
Тестировал решил API сценарий добавления товара в корзину для сайта https://www.ae.com/us/en — этот же сайт и его API используем на моем бесплатном курсе по автоматизации на Java в рамках курсового пет проекта.
Что было сделано:
1️⃣ Создан TokenManager - Хранит токены по ролям (GUEST, AUTH) в ThreadLocal<EnumMap<>>
Использует ленивую инициализацию computeIfAbsent Позволяет получить токен через TokenManager.getToken() или .getToken(UserRole)
2️⃣ Создано JUnit-расширение - GuestTokenExtension и заготовка для будущего AuthTokenExtension
В beforeAll() устанавливает роль (TokenManager.setCurrentRole(...)) И иницилизируется токен (TokenManager.getToken())
3️⃣ Контроллер (BagController) не знает о ролях
Просто вызывает TokenManager.getToken() — и получает нужный токен Роль уже была установлена расширением → нет дублирования
4️⃣ Отдельный контроллер для токенов (TokenClient)
Передаем авторизационный хедер из свойств, если нужно можно даже сделать секретными данными, для Guest общедоступная информация.
Почему решение архитектурно чистое:
• KISS - Простой TokenManager, один вызов в контроллере
• Single Responsibility Principle - TokenManager отвечает только за токены, контроллер — за API
• Open/Closed Principle - Добавить новую роль — легко (новое расширение)
• Dependency Inversion Principle - Контроллер не зависит напрямую от способа получения токена
• Без static в тестах - всё управление токеном — через @ExtendWith(...)
Пишите свои идеи как еще можно было бы решить такую задачку.
Задание:
🧪 В проекте с автотестами на Rest Assured:
— Прокиньте токен из @BeforeAll во все тесты.
— Сделайте это без статики.
— Сохраните архитектурную чистоту (SOLID, KISS).
В решении используется Java, Gradle, JUnit 5, AssertJ, Rest Assured, Jackson, Allure, Lombok и Owner для чтения properties.
Тестировал решил API сценарий добавления товара в корзину для сайта https://www.ae.com/us/en — этот же сайт и его API используем на моем бесплатном курсе по автоматизации на Java в рамках курсового пет проекта.
Что было сделано:
Использует ленивую инициализацию computeIfAbsent Позволяет получить токен через TokenManager.getToken() или .getToken(UserRole)
В beforeAll() устанавливает роль (TokenManager.setCurrentRole(...)) И иницилизируется токен (TokenManager.getToken())
Просто вызывает TokenManager.getToken() — и получает нужный токен Роль уже была установлена расширением → нет дублирования
Передаем авторизационный хедер из свойств, если нужно можно даже сделать секретными данными, для Guest общедоступная информация.
Почему решение архитектурно чистое:
• KISS - Простой TokenManager, один вызов в контроллере
• Single Responsibility Principle - TokenManager отвечает только за токены, контроллер — за API
• Open/Closed Principle - Добавить новую роль — легко (новое расширение)
• Dependency Inversion Principle - Контроллер не зависит напрямую от способа получения токена
• Без static в тестах - всё управление токеном — через @ExtendWith(...)
Пишите свои идеи как еще можно было бы решить такую задачку.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🔥2🏆2
Новый пет-проект! 🐶🐱
Устроил себе мини-отпуск для перезагрузки — стал няней для четырёх хвостатых.
С пятницы по воскресенье у меня были на передержке две собаки и две кошки.
Для меня это небольшое, но важное достижение: столько пушистиков одновременно у меня ещё не было. Причём все это с релокацией на их территорию. Это был ещё один уровень перезагрузки, я будто пожил в каком-то уютном загородном отеле. Такой мини-отпуск на выходные.
В моменте, конечно, устаёшь: вокруг постоянно кто-то лает, мяукает, просит внимания, вылизывается у тебя под боком. Но сейчас я уже скучаю по этой суете 😅
Вообще, такое хобби для меня — это отличная альтернатива выгореть, уйти в саббатикал и уехать на гусиную ферму.
Советую иногда пробовать себя в новых ролях, менять обстановку, вырываться из рутины. После этого действительно ощущается, что кэш очищен, и ты снова готов возвращаться в рабочий режим и свой QA-день-сурка.
Устроил себе мини-отпуск для перезагрузки — стал няней для четырёх хвостатых.
С пятницы по воскресенье у меня были на передержке две собаки и две кошки.
Для меня это небольшое, но важное достижение: столько пушистиков одновременно у меня ещё не было. Причём все это с релокацией на их территорию. Это был ещё один уровень перезагрузки, я будто пожил в каком-то уютном загородном отеле. Такой мини-отпуск на выходные.
В моменте, конечно, устаёшь: вокруг постоянно кто-то лает, мяукает, просит внимания, вылизывается у тебя под боком. Но сейчас я уже скучаю по этой суете 😅
Вообще, такое хобби для меня — это отличная альтернатива выгореть, уйти в саббатикал и уехать на гусиную ферму.
Советую иногда пробовать себя в новых ролях, менять обстановку, вырываться из рутины. После этого действительно ощущается, что кэш очищен, и ты снова готов возвращаться в рабочий режим и свой QA-день-сурка.
❤39👍10😍6🔥5
Всех с началом новой недели!
Давайте начнём её с лёгкого теста: выбери картинку какой ты сегодня тестировщик
(спойлер: все варианты — мемы с котиками и собаками в QA-ситуациях)
Что получилось? Насколько тест угадал?)
Давайте начнём её с лёгкого теста: выбери картинку какой ты сегодня тестировщик
(спойлер: все варианты — мемы с котиками и собаками в QA-ситуациях)
Что получилось? Насколько тест угадал?)
🔥16😁12❤2🫡2
Если бы не IT, то что? 🤔
Недавно на летней распродаже в Steam прикупил Death Stranding — по сути, симулятор курьера. А на прошлой — брал Euro Truck Simulator 2 и гонял по Европе, как настоящий дальнобойщик.
Во-первых: Поймал себя на мысли: почему в свободное время я... тоже работаю? 😅 Или это всё-таки отдых?
А потом задумался глубже: а если не QA, то кем бы я стал? Курьером? Таксистом? Может нянчил бы хвостатых на передержке в промышленных масштабах? 🐾
Но тут другая проблема: Можно ли превратить хобби в работу — и не начать её при этом ненавидеть? 🤷♂️
А вы как думаете — если бы не IT, то что?
Пишите в комменты, очень интересно почитать!
Недавно на летней распродаже в Steam прикупил Death Stranding — по сути, симулятор курьера. А на прошлой — брал Euro Truck Simulator 2 и гонял по Европе, как настоящий дальнобойщик.
Во-первых: Поймал себя на мысли: почему в свободное время я... тоже работаю? 😅 Или это всё-таки отдых?
А потом задумался глубже: а если не QA, то кем бы я стал? Курьером? Таксистом? Может нянчил бы хвостатых на передержке в промышленных масштабах? 🐾
Но тут другая проблема: Можно ли превратить хобби в работу — и не начать её при этом ненавидеть? 🤷♂️
А вы как думаете — если бы не IT, то что?
Пишите в комменты, очень интересно почитать!
❤10👎1