Установка программы SoapUI


  1. Перейти по ссылке https://www.soapui.org/downloads/soapui.html (раздел Download).
  2. Выбрать SoapUI OpenSource - для скачивания нажать кнопку Get It.
  3. После скачивания файла, устанавить программу. При установке настройки оставить по умолчанию.

Загрузка проекта с примерами запросов в SoapUI


  • Скачать файл с примерами запросов здесь.
  • Загрузить файл с примерами запросов в SoapUI. Для этого необходимо:
    1. Запусить программу SoapUI.
    2. File -> Import Project или Ctrl+I
    3. В открывшемся окне выбрать путь к файлу и нажать "Open"
    4. Проект CorteosTestAviaAPI загружен.

Тестирование методов API


FareDrivenFlightSearch


  • Необходимо найти метод FareDrivenFlightSearch в списке методов тестового проекта CorteosTestAviaAPI. Внутри метода FareDrivenFlightSearch раскрываем папку с запросами Поиск по цене, открываем запрос Туда и обратно

  • Необходимо оформить поисковой запрос, задав необходимые параметры о направлении, датах и времени вылета, количества пассажиров по типу. Указываем в запросе id_Profile= id Финансовый профиль и SecurityKey (запрашивается дополнительно).

    Структура запроса при отправке запроса в теле сообщения

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • Fare - Fare;
    • Adults - int - число, количество взрослых, 1-4;
    • Children - int - число, количество детей, 0-4;
    • Infants - int - число, количество младенцев, 0-4;
    • OnlyDirect - bool - возвращать только прямые рейсы в ответе;
    • ConnectionPoint - string - необязательное поле, код пункта пересадки, город или аэропорт, код аэропорта IATA - скачать список с datahub.io;
    • Airlines - string - необязательное поле, предпочтительные перевозчики - не более 3-х кодов авиакомпаний через запятую(например, "SU,AF,KL"), код авиакомпании IATA - скачать список с openflights.org;
    • Route - маршрут перелета, состоит из участков Segment
      • Origin - string - пункт вылета(код города или аэропорта) - код аэропорта IATA - скачать список с datahub.io;
      • Destination - string - пункт прибытия(код города или аэропорта) - код аэропорта IATA - скачать список с datahub.io ;
      • Date - datetime - дата вылета, формат dd.MM.yyyy - время игнорируется и не обязательно для заполнения;
      • StartHour - string - необязательное поле, минимальный час вылета, 2 символа с ведущим 0, например, 01;
      • EndHour - string - необязательное поле, максимальный час вылета, 2 символа с ведущим 0, например, 09;

  • При клике по зеленой кнопке play в левом верхнем углу экрана отправляется запрос

  • Сформированный сервером результат выдачи gds отобразится в правой части экрана

PriceExact


  • Для оценки стоимости необходимо скопировать информацию о Leg-и из выбранного Itinerary (необходимо скопировать все находящееся между тегами <legs></legs> внутри выбранного Itinerary) из ответа на запрос Туда и обратно метода FareDrivenFlightSearch

  • Добавить Leg из выбранного Itinerary в тело запроса

    Коллекция Legs. Собирается из элементов Leg, пришедших из поиска

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • Legs - Leg;
    • Fare - Fare;
    • Adults - int - число, количество взрослых, 1-4;
    • Children - int - число, количество детей, 0-4;
    • Infants - int - число, количество младенцев, 0-4;

  • Отправить запрос на сервер нажав кнопку play

  • Сформированный сервером результат отобразится в правой части экрана

Booking


  • Для букирования необходимо скопировать информацию о нужном Itinerary из ответа на запроc Расчет стоимости метода PriceExact

  • Пример данных пассажира для внесения в запрос booking можно найти в примере запроса

    Структура запроса при отправке запроса в теле сообщения

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • MultiItinerary - MultiItinerary.
      В корневой элемент MultiItinerary необходимо вставить список элементов Itinerary, полученный на этапе парсинга. В каждый элемент Itinerary необходимо добавить коллекцию пассажиров Passenger.
      <?xml version="1.0" encoding="utf-8"?>
      <Passengers>
        <Passenger Key="3251827403" FirstName="Ivan" LastName="Viktorov" MiddleName="Fedorovich" Date="05.10.1980 0:00:00" Gender="true" Type="Adult" CitizenshipCode="RU" DocumentNumber="123456789" DocumentValid="24.10.2027 0:00:00" Email="vikrorov@mail.ru" MobilePhone="+79033121020" MileCardNumber="123123213" MileCardAirline="SU">
          <Comments>
            <Comment>megadude</Comment>
            <Comment>superpax</Comment>
          </Comments>
        </Passenger>
        <Passenger...></Passenger...>
      </Passengers>
      • Passenger (пассажир) — человек, на которого оформляется авиаперевозка.

        Пассажиры делятся на три типа:

        • взрослый (12+ лет),
        • ребенок (02-12 лет, но не включая 12),
        • младенец (0-2 лет, но не включая 2 лет).

        Существуют некоторые особенности оформления бронирования:

        • пассажир с типом младенец (Infant) может быть забронирован только без места, т.е. совершать перелет он будет на одном месте с закрепленным за ним взрослым.
          Закрепление младенца в бронировании происходит по порядку занесения пассажиров в систему, т.е. первый младенец (Infant) автоматически привяжется к первому взрослому пассажиру (Adult), второй — ко второму, и т. д.
        • пассажир с типом ребенок (Child) также не может быть забронирован без сопровождения взрослого.
        • в брони должен присутствовать хотя бы один взрослый пассажир 18+.
          Пассажиры от 12 лет и не достигшие 18 лет, хотя и считаются взрослыми с точки зрения стоимости билета, не только не могут выступать сопровождающими для детей (Child) и младенцев (Infant), но и не могут сами быть забронированы отдельно от взрослого 18+ пассажира.

        Пассажир должен иметь следующие атрибуты:

        • Имя, фамилия и отчество (отчество используется по требованию ряда российских авиакомпаний и только на внутрироссийские перевозки).
        • Дата рождения пассажира.
        • Пол пассажира.
        • Гражданство — указывается код страны, гражданином которой является пассажир.
        • Номер документа и срок действия документа, по которому будет осуществляться перелет.
        • Контактные данные пассажира: электронная почта и мобильный телефон.
          Есть обязательное требование некоторых авиакомпаний о добавлении в бронь контактных данных пассажира, в том числе мобильного телефона, для оперативного уведомления пассажира о внештатных ситуациях, например, отмена или задержка рейса.
        • Бонусная (мильная) карта (номер карты и код авиаперевозчика-владельца бонусной программы), добавляется в случае ее наличия у пассажира.

        Поля класса:

        Тип XML-тип Название Комментарий Наличие в ответах Пример
        uint Attribute Key уникальный идентификатор пассажира всегда 3251827403
        string Attribute FirstName имя на латинице всегда Ivan
        string Attribute LastName фамилмя на латинице всегда Viktorov
        string Attribute MiddleName отчество на латинице всегда Fedorovich
        datetime Attribute Date дата рождения всегда 05.10.1980 0:00:00
        bool Attribute Gender пол пассажира (true = мужской, false = женский) всегда true
        string Attribute Type категория пассажира всегда Adult
        string Attribute CitizenshipCode ALPHA2-код страны гражданства всегда RU
        string Attribute DocumentNumber номер документа всегда 123456789
        datetime Attribute DocumentValid дата окончания срока действия всегда 16.10.2027 0:00:00
        string Attribute Email электронная почта пассажира если внесен в карточку пассажира vikrorov@mail.ru
        string Attribute MobilePhone телефон пассажира если внесен в карточку пассажира +79033121020
        string Attribute MileCardNumber номер мильной карты если внесена в карточку пассажира и выбрана при создании заказа 123123213
        string Attribute MileCardAirline код авиакомпании IATA - скачать список с openflights.org, чья мильная карта если внесена мильная карта SU
        string Element Comments / Comment комментарии по пассажиру если внесен superpax

  • Вставить выбранный Itinerary в шаблон запроса.

  • Дополнить его информацией о пассажирах (вставить информацию о пассажирах в <itinerary></itinerary> после </masks>).

  • Отправить запрос на сервер нажав кнопку play

  • В ответе мы получаем сформированное бронирование и обязательный локатор бронирования (пример Locator="SOCM8Q")

Ticketing


  • Для отправки запроса необходимо скопировать полный MultiItinerary из метода Booking

  • Добаваить MultiItinerary в тестовый запрос Пример выписки метода Ticketing

    Структура запроса при отправке запроса в теле сообщения

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • MultiItinerary - MultiItinerary;

  • Отправить запрос на сервер нажав кнопку play

  • Ответ должен выглядеть следующим образом

  • В удачном ответе будет присутствовать номер выписанного билета

Booking Retrieve

  • Запрос Retrieve имеет один обязательный параметр - <locator></locator>, локатор бронирования формируется на шаге booking. Параметр Leader = фамилия пассажира обязателен только для GDS Sirena travel.

    Структура запроса при отправке запроса в теле сообщения

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • id_System- система бронирования - идентификатор GDS, к которой относится бронь
    • Locator - string - локатор (номер) брони
    • Leader - string - необязательное поле, пассажир-лидер

  • Отправить запрос на сервер нажав кнопку play

  • В ответе мы получаем все данные по бронированию, указанному в запросе.

Void


  • В запросе на войдирование необходимо указать следующие данные: <locator></locator>, <leader></leader>(если это бронирование Sirena Travel), <TicketNumber></TicketNumber> - номер билета, который необходимо завойдировать, <Airline></Airline> - код авиакомпании-перевозчика.

    Структура запроса при отправке запроса в теле сообщения

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • id_System- система бронирования - идентификатор GDS, к которой относится бронь;
    • Locator - string - локатор (номер) брони;
    • Leader - string - обязательное только для сирены, пассажир-лидер;
    • TicketNumber - string - номер билета;
    • Airline - string - код авиакомпании, осуществляющей перевозку - код авиакомпании IATA - скачать список с openflights.org;

  • Отправить запрос на сервер нажав кнопку play

  • При успешном ответе, нам возвращается бронирование с успешно завойдированным бланком авиа билета

Cancel


  • В запросе на аннулирование необходимо указать:<Locator></Locator>, <Leader></Leader> (если бронирование было выполнено в Sirena Travel).

    Структура запроса при отправке запроса в теле сообщения

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • id_System- система бронирования - идентификатор GDS, к которой относится бронь
    • Locator - string - локатор (номер) брони
    • Leader - string - необязательное поле, пассажир-лидер

  • Отправить запрос на сервер нажав кнопку play

  • В безошибочном ответе получаем MultiItinerary без legs и mask.

Check


  • В запрос на актуализацию маски необходимо передавать MultiItinerary существующего бронирования.

    Структура запроса при отправке запроса в теле сообщения

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • MultiItinerary - MultiItinerary;

  • Отправить запрос на сервер нажав кнопку play

  • В безошибочном ответе бронирование должно быть перевыгруженно с актуальными данными маски и расчета по ней.

Resurrection


  • Необходимо в запрос вставить MultiItinerary с данными по ранее живому бронированию

    Структура запроса при отправке запроса в теле сообщения

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • MultiItinerary - MultiItinerary;

  • Отправить запрос на сервер нажав кнопку play

  • В безошибочном ответе должно перевыгрузиться живое бронирование с идентичными данными.

Rebooking


  • Заполните недостающие данные в тестовой форме и нажмите кнопку "отправить" для проверки работы запроса. В запросе необходимо указать MultiItinerary с необходимыми данными для бронирования.

    Структура запроса при отправке запроса в теле сообщения

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • LanguageCode - "EN" - всегда английский язык;
    • MultiItinerary - MultiItinerary;

  • Отправить запрос на сервер нажав кнопку play

  • В успешном ответе выгружается бронирование по заданным в запросе параметрам.

AvailabilitySearch


  • Необходимо найти метод Availability в списке методов тестового проекта CorteosTestAviaAPI. Внутри метода Availability раскрываем папку с запросами Поиск по наличию мест, открываем запрос Пример

  • Необходимо оформить поисковой запрос, задав необходимые параметры:

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • Fare - Fare;
    • Adults - int - число, количество взрослых, 1-4;
    • Children - int - число, количество детей, 0-4;
    • Infants - int - число, количество младенцев, 0-4;
    • OnlyDirect - bool - возвращать только прямые рейсы в ответе;
    • ConnectionPoint - string - необязательное поле, код пункта пересадки, город или аэропорт, код аэропорта IATA - скачать список с datahub.io;
    • Airlines - string - необязательное поле, предпочтительные перевозчики - не более 3-х кодов авиакомпаний через запятую(например, "SU,AF,KL"), код авиакомпании IATA - скачать список с openflights.org;
    • Route - маршрут перелета, состоит из участков Segment

      • Origin - string - пункт вылета(код города или аэропорта) - код аэропорта IATA - скачать список с datahub.io;
      • Destination - string - пункт прибытия(код города или аэропорта) - код аэропорта IATA - скачать список с datahub.io ;
      • Date - datetime - дата вылета, формат dd.MM.yyyy - время игнорируется и не обязательно для заполнения;
      • StartHour - string - необязательное поле, минимальный час вылета, 2 символа с ведущим 0, например, 01;
      • EndHour - string - необязательное поле, максимальный час вылета, 2 символа с ведущим 0, например, 09;

  • При клике по зеленой кнопке play в левом верхнем углу экрана отправляется запрос

  • Сформированный сервером результат выдачи GDS (система бронирования) отобразится в правой части экрана

Cryptic


  • Необходимо найти метод Cryptic в списке методов тестового проекта CorteosTestAviaAPI. Внутри метода Cryptic раскрываем папку с запросами Запрос наличия мест Москва-Лондон, открываем запрос Пример

  • Необходимо оформить запрос, задав необходимые параметры:

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • id_System - система бронирования - идентификатор GDS
    • CommandText - string - текст команды;
    • SessionId - string - необязательное поле, идентификатор сессии;

  • При клике по зеленой кнопке play в левом верхнем углу экрана отправляется запрос

  • Сформированный сервером результат выдачи GDS (система бронирования) отобразится в правой части экрана

ChangeDocuments


  • Необходимо найти метод ChangeDocuments в списке методов тестового проекта CorteosTestAviaAPI. Внутри метода ChangeDocuments раскрываем папку с запросами Меняет номер документа в созданной брони, открываем запрос Пример

  • Необходимо оформить запрос, задав необходимые параметры:

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • id_System- система бронирования - идентификатор GDS, к которой относится бронь;
    • OldDocumentNumber - string - номер старого документа;
    • Locator - string - локатор (номер) брони;
    • Leader - string - обязательное только для сирены, пассажир-лидер;
    • Passenger - Passenger - информация о пассажире в XML формате

  • При клике по зеленой кнопке play в левом верхнем углу экрана отправляется запрос

  • Сформированный сервером результат выдачи GDS (система бронирования) отобразится в правой части экрана

CalendarSearch


  • Необходимо найти метод Calendar в списке методов тестового проекта CorteosTestAviaAPI. Внутри метода Calendar раскрываем папку с запросами Запрос календаря Москва-Мюнхен, открываем запрос Пример

  • Необходимо оформить поисковой запрос, задав необходимые параметры:

    • id_Profile - int, число, идентификатор финансового профиля(финансовый профиль) для применения 3D и финусловий;
    • SecurityKey - ключ для работы с API;
    • IsMock - bool - используется только для разработки, для моментального получения прегенеренного ответа;
    • Fare - Fare;
    • Adults - int - число, количество взрослых, 1-4;
    • Children - int - число, количество детей, 0-4;
    • Infants - int - число, количество младенцев, 0-4;
    • OnlyDirect - bool - возвращать только прямые рейсы в ответе;
    • ConnectionPoint - string - необязательное поле, код пункта пересадки, город или аэропорт, код аэропорта IATA - скачать список с datahub.io;
    • Airlines - string - необязательное поле, предпочтительные перевозчики - не более 3-х кодов авиакомпаний через запятую(например, "SU,AF,KL"), код авиакомпании IATA - скачать список с openflights.org;
    • Route - маршрут перелета, состоит из участков Segment

      • Origin - string - пункт вылета(код города или аэропорта) - код аэропорта IATA - скачать список с datahub.io;
      • Destination - string - пункт прибытия(код города или аэропорта) - код аэропорта IATA - скачать список с datahub.io ;
      • Date - datetime - дата вылета, формат dd.MM.yyyy - время игнорируется и не обязательно для заполнения;
      • StartHour - string - необязательное поле, минимальный час вылета, 2 символа с ведущим 0, например, 01;
      • EndHour - string - необязательное поле, максимальный час вылета, 2 символа с ведущим 0, например, 09;

  • При клике по зеленой кнопке play в левом верхнем углу экрана отправляется запрос

  • Сформированный сервером результат выдачи GDS (система бронирования) отобразится в правой части экрана

AccessCheck


  • Необходимо найти метод AccessCheck в списке методов тестового проекта CorteosTestAviaAPI. Внутри метода AccessCheck раскрываем папку с запросами , открываем запрос Пример