GraphQL Specification — September 2025
Нормативні definitions для query, mutation, subscription і selection set.
Вступ до API-автоматизації → Першоджерело ↗Відеобібліотека
Пошук у нотатках курсу Java з переходом на потрібну секунду.
Нормативні definitions для query, mutation, subscription і selection set.
Вступ до API-автоматизації → Першоджерело ↗Дає формальний contract для schema, types і required properties API payload.
Міграція бази даних і тестування даних → Першоджерело ↗Фіксує connection/cursor contract, threadsafety і paramstyle capabilities.
Без API docs можна згенерувати POJO з observed JSON, але це лише semi-automatic recovery. З OpenAPI specification можна відтворювано генерувати models і API client через Gradle/Maven/CLI. Specification містить metadata, servers, paths, operations, schemas і response/error definitions. Swagger UI — лише projection цієї специфікації; code generator працює з machine-readable JSON/YAML.
Перший request до suites повертає `400`, бо повторно використана mutable `RequestSpecification` зберегла form parameters від login request. RestAssured накопичує налаштування у стані specification, тому вона не повинна мутуватися і перевикористовуватися між різними requests. Виправлення — повертати нову specification із factory method для кожного request. Після цього уточнюється endpoint path: запит має містити API prefix, project id і suites resource. Потім `GET` повертає список suites з їхніми id, type і title.
Дані, які бачить користувач, приходять з backend services, тому UI scenario часто можна розкласти на більш швидкі API checks. Спочатку треба з’ясувати API maturity: чи є specification, чи вона актуальна, як frontend реально викликає endpoints. Якщо documentation немає або їй не можна довіряти, browser DevTools/Network дає фактичні URL, method, headers, payload і response. Це джерело для discovery, але не заміна погодженого contract.
Внутрішня pentest-команда потрібна не кожному продукту постійно. Багато компаній залучають зовнішній security assessment перед важливим запуском, аудитом або після інцидентів; навіть зрілі внутрішні команди можуть замовляти незалежну перевірку. Як навчальний старт рекомендуються практичні курси, де учень підіймає vulnerable environment, працює з Docker, читає API specification і пробує реальні tools. Так формується зв’язок між знахідкою scanner-а, її відтворенням та поясненням impact.
Спільна RestAssured configuration переноситься в abstract `BaseController`. Бібліотека RestAssured має бути доступною main-коду, тому dependency переводиться з test-only у `implementation`. Controllers успадковують base class і працюють з protected request specification. Логін, пошук проєкту і створення suite розносяться між `AuthController`, `ProjectController` і `SuiteController`; controllers та DTO розкладаються в окремі packages. Для порівняння в тому самому class залишається початковий «брудний» сценарій і додається окремий MVC-варіант. Перенесення operations в окремі classes дає змогу розширювати кожен resource без розростання одного test class.
SAST аналізує codebase, configuration та infrastructure definitions без запуску повного user flow. До scope можуть входити source code, dependencies, YAML, Docker та Terraform files. DAST працює проти запущеного застосунку: генерує requests, змінює parameters, headers, authentication data й шукає небезпечну runtime behavior. OpenAPI specification може бути input для API security scanner-а. Окремі tools аналізують network traffic або вразливості, характерні для конкретної мови, cloud platform, protocol чи IoT stack. Тому pentesting швидко розгалужується на спеціалізації, а не зводиться до ручного перебору requests у Postman.
В build configuration задаються specification URL/file, output directory, generator/language, package names і config options. Окрема task спочатку отримує spec, потім генерує sources. Вихід кладеться в `build/`, а не редагується вручну. Так generator залишається build product, а не другим source of truth.
Gradle і IDE мають знати, що generated directory є Java source root. IDE indexing може вимагати explicit generated-source marking, але command-line build не має залежати від manual IDE action. `clean` видаляє generated output, а build відновлює його зі specification. Це перевіряє, що repository не приховує uncommitted/manual fixes generated code.
Перша спроба не спрацьовує, доки request явно не позначено як JSON через `Content-Type`. Після цього suite створюється і видно в UI. Endpoint повертає `200`, хоча для create operation очікується `201`; автор називає це API defect. Отриманий flow вже можна використати як API precondition для UI-тесів. Ключове обмеження RestAssured: reusable configuration має повертатися з method як новий instance для кожного request, а не зберігатися як mutable shared object.
Після проблем з full client відео показує простіший варіант: generate models, а transport залишити під контролем test code. Це зберігає schema checking без складного generated client runtime. Актуальна specification також робить API придатним для external consumers. Це не лише testing concern, а product capability: onboarding, SDK generation і integration cost.