void shouldThrowIfFileIsGreaterThenMaxFileSizeUploadDocument()

in digital-document-service/src/it/java/com/epam/digital/data/platform/dgtldcmnt/controller/DocumentControllerIT.java [101:138]


  void shouldThrowIfFileIsGreaterThenMaxFileSizeUploadDocument() {
    var contextDto = createDocumentContextDto();
    var url = UriComponentsBuilder.newInstance().scheme("http")
        .host("localhost")
        .port(port)
        .pathSegment("documents")
        .pathSegment(contextDto.getRootProcessInstanceId())
        .pathSegment(contextDto.getTaskId())
        .pathSegment(contextDto.getFieldName())
        .build()
        .toUri();

    var fileData = Strings.repeat("file", 65535); // ~256KB
    var data =
        "--$boundary\r\nContent-Disposition: form-data; name=\"file\"; filename=\"file.csv\"\r\nContent-Type: text/csv\r\n\r\n"
            + fileData + "\r\n--$boundary--";

    var request = HttpRequest.newBuilder()
        .uri(url)
        .header("Content-Type", "multipart/form-data;boundary=$boundary")
        .header("Content-Disposition", "form-data; name=file; filename=file.csv")
        .header(JwtAuthenticationFilter.AUTHORIZATION_HEADER, accessToken)
        .header(DocumentController.X_FORWARDED_HOST_HEADER, host)
        .POST(HttpRequest.BodyPublishers
            .ofInputStream(() -> new ByteArrayInputStream(data.getBytes())))
        .build();

    var response = HttpClient.newHttpClient().send(request, BodyHandlers.ofString());

    assertThat(response.statusCode()).isEqualTo(413);

    DocumentContext ctx = JsonPath.parse(response.body());
    assertThat(ctx.read("$.traceId", String.class)).isNotNull();
    assertThat(ctx.read("$.code", String.class)).isEqualTo("FILE_SIZE_IS_TOO_LARGE");
    assertThat(ctx.read("$.message", String.class)).isEqualTo(
        "The size of the uploaded file exceeds 0.2MB");
    assertThat(ctx.read("$.localizedMessage", String.class)).isNull();
  }