я проверяю договор поставщика услуг OTP, он имеет имя пользователя и пароль Basi c Auth и заголовок в запросе как «Авторизация»: «ab c» - PullRequest
0 голосов
/ 07 февраля 2020

Код:

@TestTarget
    public final Target target = new HttpTarget("https", "digital-dev.mashreq.com/api/otp-service/api/v1/otp", 8080, "/generate");
    private static ConfigurableWebApplicationContext application;


    @TargetRequestFilter
    public void exampleRequestFilter (HttpRequest request) throws UnsupportedEncodingException {
        // Authorization header Base64 encoded...
        request.addHeader("Authorization", "Basic " + base64StringOf("OtpUser", "otp@123"));
        request.addHeader("Content-Type", "application/json");
        request.addHeader("Authorization", "Basic T3RwVXNlcjpvdHBAMTIz");

    }

    private String base64StringOf(String username, String password) {
        return Base64.getEncoder().encodeToString((username + ":" + password).getBytes());
    }

Консоль:

java.lang.AssertionError: 
0 - Expected a header 'Authorization' but was missing
1 - assert expectedStatus == actualStatus
           |              |  |
           200            |  404
                          false

Я думаю, что я делаю это неправильно, но все еще не могу найти решение.

1 Ответ

0 голосов
/ 09 февраля 2020

Есть две проблемы:

  1. Ваш поставщик не возвращает заголовок с ключом Authorization
  2. Поставщик отвечает 404

Для (1) ожидаете ли вы, что OTP будет возвращен в заголовке авторизации, или это ошибка? OTP возвращается как элемент тела или заголовок? (было бы странно возвращать другой заголовок авторизации IMO).

Для (2) это может быть связано с неправильной настройкой вашего провайдера. Возможно,

Вы также публикуете два заголовка Authorization - это кажется странным.

FWIW Мне удалось просто нажать этот API сейчас, но он не удался с 404, сообщившим, что сообщения нет. было найдено:

{"timestamp":"2020-02-09T11:28:39.411+0000","status":404,"error":"Not Found","message":"No message available","path":"/api/v1/otp:8080"}%                                                                                                                                                                                   
  1. Просто любезность, чтобы убедиться, что вы не хотели публиковать действительные учетные данные на этом сайте
  2. Возможно, для настройки состояния поставщика требуется ОТП на работу?
...