REST-гарантия с вызовом POST - PullRequest
0 голосов
/ 08 мая 2020

Для серверной части моего приложения Angular я использую REST-assured и JUnit для написания моего первого интеграционного теста для моей страницы входа.

Каждый раз, когда я запускаю тест, он возвращает код состояния «401» вместо «200». У меня уже есть файл json, содержащий мои данные для входа, которые я использовал с WireMock для общения с моим приложением Angular.

Я думаю, что это не так, потому что я неправильно преобразовал json в REST-гарантированный. Я пробовал несколько решений, которые я нашел на inte rnet, но у него есть еще не работает ..

Редактировать: Код состояния опечатки был '403', правильный - '401'.

Успешный вход. json:

{
  "request": {
    "method": "POST",
    "url": "/api/login",
    "bodyPatterns": [
      {
        "matchesJsonPath": "[?(@.username=='john@test.com')]"
      },
      {
        "matchesJsonPath": "[?(@.password=='test1234')]"
      }
    ]
  },
  "response": {
    "status": 200,
    "jsonBody": {
      "token": "fD0wUDRdJOFIoUlAAAAaS2XStSvewARajwx7lTE"
    }
  }
}

LoginTestDataService. java:

final User user = User.builder()
            .firstName("John")
            .lastName("Doe")
            .email("john@test.com")
            .mobileNumber("+31642424345")
            .gender(Gender.MALE)
            .dateOfBirth(new Date())
            .city("Den Haag")
            .country("NL")
            .street("Hogestraat")
            .houseNumber(115L)
            .zipCode("1725TA")
            .password("asdf;laksjf")
            .singleUseAccount(Boolean.FALSE)
            .created(new Date())
            .createdBy("John Doe")
            .build();

    userRepository.saveAndFlush(user);

LoginResourceIntegrationTest. java:

@Test
    public void loginResource() {

        given()
                .when()
                .log()
                .all()
                .basePath("/api/company")
                .header("X-Token", "TOKEN")
                .header("X-Username", "john@test.com")
                .post("/login")
                .then()
                .log()
                .all()
                .assertThat()
                .statusCode(200);
    }

MemberLoginResource:

@POST
public Response login(@FormParam("username") final String username, @FormParam("password") final String password) {

    final Authentication authentication = apiLoginManager.loginMember(username, password);
    final Member member = authentication.getMember();

    String email = null;
    final String originalEmail = member.getEmail();
    if (StringUtils.isNotBlank(originalEmail)) {
        email = originalEmail.toLowerCase();
    }
    final ClientMember clientMember = ClientMember.builder()
            .id(member.getId())
            .firstName(member.getFirstName())
            .lastName(member.getLastName())
            .usualName(member.getUsualName())
            .gender(member.getGender())
            .initials(member.getInitials())
            .dateOfBirth(member.getDateOfBirth())
            .street(member.getStreet())
            .houseNumber(member.getHouseNumber())
            .houseNumberExt(member.getHouseNumberExtension())
            .zipCode(member.getZipCode())
            .city(member.getCity())
            .phoneNumber(member.getPhoneNumber())
            .country(member.getCountry())
            .mobileNumber(member.getMobileNumber())
            .pictureDate(member.getPictureDate())
            .email(email)
            .build();

    final ApiAuthentication apiAuthentication = new ApiAuthenticationBuilder()
            .withToken(authentication.getApiToken().getToken())
            .withMember(clientMember)
            .build();

    return Response.ok(apiAuthentication).build();
}

Вывод в консоль:

    Request method: POST
Request URI:    http://localhost:51525/api/company/login
Proxy:          <none>
Request params: <none>
Query params:   <none>
Form params:    <none>
Path params:    <none>
Headers:        X-Token=TOKEN
                X-Username=john@test.com
                Accept=*/*
                Content-Type=application/x-www-form-urlencoded; charset=ISO-8859-1
Cookies:        <none>
Multiparts:     <none>
Body:           <none>

Пожалуйста, дайте мне знать, если вам нужно увидеть больше журналов.

Как я уже упоминал выше, с помощью интеграционного теста я хочу войти в систему и ожидать возврата statusCode '200', который в этот случай означает, что логин сработал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...