org.springframework.core.ParameterizedTypeReference

Here are the examples of the java api org.springframework.core.ParameterizedTypeReference taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

440 Examples 7

19 View Source File : RestTemplateController.java
License : Apache License 2.0
Project Creator : zuihou

@GetMapping("/get")
public R<Order> get(@RequestParam("key") String key) {
    Map<String, Object> map = new HashMap<>(16);
    map.put("key", key);
    // map.put("ldt", LocalDateTime.now());
    // map.put("date", DateUtils.formatAsDateTime(new Date()));
    String url = "http://lamp-demo-server/restTemplate/get?key={key}";
    // String url = "http://lamp-demo-server/restTemplate/get?key={key}&date={date}&ldt={ldt}";
    // R<Order> r = restTemplate.getForObject(url, R.clreplaced, map);
    // HttpEnreplacedy httpEnreplacedy = new HttpEnreplacedy(map);
    ParameterizedTypeReference<R<Order>> ptr = new ParameterizedTypeReference<R<Order>>() {
    };
    ResponseEnreplacedy<R<Order>> exchange = restTemplate.exchange(url, HttpMethod.GET, null, ptr, map);
    return exchange.getBody();
}

19 View Source File : ByteDanceV1OperationControllerTest.java
License : MIT License
Project Creator : yydzxz

@DisplayName("查询「抖音直播组件」能力申请状态")
@Test
void liveApplicationStatus() {
    ParameterizedTypeReference<ByteDanceOpenDemoResponse<OperationLiveApplicationStatusResponse>> typeRef = new ParameterizedTypeReference<ByteDanceOpenDemoResponse<OperationLiveApplicationStatusResponse>>() {
    };
    ResponseEnreplacedy<ByteDanceOpenDemoResponse<OperationLiveApplicationStatusResponse>> responseEnreplacedy = restTemplate.exchange("http://127.0.0.1:" + port + "/bytedance/v1/miniprogram/operation/live_application_status?appid=" + testAppInfoProperties.getAppid(), HttpMethod.GET, null, typeRef);
    OperationLiveApplicationStatusResponse response = responseEnreplacedy.getBody().getData();
    replacedertThat(response.getErrno()).isEqualTo(0);
    replacedertThat(response.getData().getStatus()).isNotNull();
    replacedertThat(response.getData().getStatus()).isBetween(0, 6);
    // 「抖音直播组件」申请状态对应的原因
    // 如果状态是0(默认值)、1(可申请)、3(申请中)、4(申请通过),则 reason 为空字符串
    if (response.getData().getStatus() == 0 || response.getData().getStatus() == 1 || response.getData().getStatus() == 3 || response.getData().getStatus() == 4) {
        replacedertThat(response.getData().getReason()).isBlank();
    } else {
        replacedertThat(response.getData().getReason()).isNotBlank();
    }
}

19 View Source File : ByteDanceV1InfoControllerTest.java
License : MIT License
Project Creator : yydzxz

@DisplayName("小程序名称检测-名字太长")
@Test
void checkAppName4() {
    String appName = "aaaaaaaaaaaaaaaaaaaaa";
    ParameterizedTypeReference<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>> typeRef = new ParameterizedTypeReference<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>>() {
    };
    ResponseEnreplacedy<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>> responseEnreplacedy = restTemplate.exchange("http://127.0.0.1:" + port + "/bytedance/v1/miniprogram/check_app_name?appid=" + testAppInfoProperties.getAppid() + "&app_name=" + appName, HttpMethod.GET, null, typeRef);
    AppCheckAppNameResponse response = responseEnreplacedy.getBody().getData();
    replacedertThat(response.getErrno()).isEqualTo(21001);
}

19 View Source File : ByteDanceV1InfoControllerTest.java
License : MIT License
Project Creator : yydzxz

@DisplayName("小程序名称检测-名字有特殊字符")
@Test
void checkAppName2() {
    String appName = "%^&*(";
    ParameterizedTypeReference<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>> typeRef = new ParameterizedTypeReference<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>>() {
    };
    ResponseEnreplacedy<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>> responseEnreplacedy = restTemplate.exchange("http://127.0.0.1:" + port + "/bytedance/v1/miniprogram/check_app_name?appid=" + testAppInfoProperties.getAppid() + "&app_name=" + appName, HttpMethod.GET, null, typeRef);
    AppCheckAppNameResponse response = responseEnreplacedy.getBody().getData();
    replacedertThat(response.getErrno()).isEqualTo(21001);
}

19 View Source File : ByteDanceV1InfoControllerTest.java
License : MIT License
Project Creator : yydzxz

@DisplayName("查询信用分分值")
@Test
void creditScore() {
    ParameterizedTypeReference<ByteDanceOpenDemoResponse<AppCreditScoreResponse>> typeRef = new ParameterizedTypeReference<ByteDanceOpenDemoResponse<AppCreditScoreResponse>>() {
    };
    ResponseEnreplacedy<ByteDanceOpenDemoResponse<AppCreditScoreResponse>> responseEnreplacedy = restTemplate.exchange("http://127.0.0.1:" + port + "/bytedance/v1/miniprogram/credit_score?appid=" + testAppInfoProperties.getAppid(), HttpMethod.GET, null, typeRef);
    AppCreditScoreResponse response = responseEnreplacedy.getBody().getData();
    replacedertThat(response.getErrno()).isEqualTo(0);
    replacedertThat(response.getData().getCreditScore()).isNotNull();
}

19 View Source File : ByteDanceV1InfoControllerTest.java
License : MIT License
Project Creator : yydzxz

@DisplayName("小程序名称检测-名字正常")
@Test
void checkAppName() {
    String appName = "我的杂货铺";
    ParameterizedTypeReference<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>> typeRef = new ParameterizedTypeReference<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>>() {
    };
    ResponseEnreplacedy<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>> responseEnreplacedy = restTemplate.exchange("http://127.0.0.1:" + port + "/bytedance/v1/miniprogram/check_app_name?appid=" + testAppInfoProperties.getAppid() + "&app_name=" + appName, HttpMethod.GET, null, typeRef);
    AppCheckAppNameResponse response = responseEnreplacedy.getBody().getData();
    replacedertThat(response.getErrno()).isEqualTo(0);
}

19 View Source File : ByteDanceV1InfoControllerTest.java
License : MIT License
Project Creator : yydzxz

@DisplayName("小程序名称检测-名字太短")
@Test
void checkAppName3() {
    String appName = "aaa";
    ParameterizedTypeReference<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>> typeRef = new ParameterizedTypeReference<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>>() {
    };
    ResponseEnreplacedy<ByteDanceOpenDemoResponse<AppCheckAppNameResponse>> responseEnreplacedy = restTemplate.exchange("http://127.0.0.1:" + port + "/bytedance/v1/miniprogram/check_app_name?appid=" + testAppInfoProperties.getAppid() + "&app_name=" + appName, HttpMethod.GET, null, typeRef);
    AppCheckAppNameResponse response = responseEnreplacedy.getBody().getData();
    replacedertThat(response.getErrno()).isEqualTo(21001);
}

19 View Source File : ReactiveCloudFoundrySecurityService.java
License : Apache License 2.0
Project Creator : yuanmabiji

/**
 * Reactive Cloud Foundry security service to handle REST calls to the cloud controller
 * and UAA.
 *
 * @author Madhura Bhave
 */
clreplaced ReactiveCloudFoundrySecurityService {

    private static final ParameterizedTypeReference<Map<String, Object>> STRING_OBJECT_MAP = new ParameterizedTypeReference<Map<String, Object>>() {
    };

    private final WebClient webClient;

    private final String cloudControllerUrl;

    private Mono<String> uaaUrl;

    ReactiveCloudFoundrySecurityService(WebClient.Builder webClientBuilder, String cloudControllerUrl, boolean skipSslValidation) {
        replacedert.notNull(webClientBuilder, "Webclient must not be null");
        replacedert.notNull(cloudControllerUrl, "CloudControllerUrl must not be null");
        if (skipSslValidation) {
            webClientBuilder.clientConnector(buildTrustAllSslConnector());
        }
        this.webClient = webClientBuilder.build();
        this.cloudControllerUrl = cloudControllerUrl;
    }

    protected ReactorClientHttpConnector buildTrustAllSslConnector() {
        HttpClient client = HttpClient.create().secure((sslContextSpec) -> sslContextSpec.sslContext(createSslContext()));
        return new ReactorClientHttpConnector(client);
    }

    private SslContextBuilder createSslContext() {
        return SslContextBuilder.forClient().sslProvider(SslProvider.JDK).trustManager(InsecureTrustManagerFactory.INSTANCE);
    }

    /**
     * Return a Mono of the access level that should be granted to the given token.
     * @param token the token
     * @param applicationId the cloud foundry application ID
     * @return a Mono of the access level that should be granted
     * @throws CloudFoundryAuthorizationException if the token is not authorized
     */
    public Mono<AccessLevel> getAccessLevel(String token, String applicationId) throws CloudFoundryAuthorizationException {
        String uri = getPermissionsUri(applicationId);
        return this.webClient.get().uri(uri).header("Authorization", "bearer " + token).retrieve().bodyToMono(Map.clreplaced).map(this::getAccessLevel).onErrorMap(this::mapError);
    }

    private Throwable mapError(Throwable throwable) {
        if (throwable instanceof WebClientResponseException) {
            HttpStatus statusCode = ((WebClientResponseException) throwable).getStatusCode();
            if (statusCode.equals(HttpStatus.FORBIDDEN)) {
                return new CloudFoundryAuthorizationException(Reason.ACCESS_DENIED, "Access denied");
            }
            if (statusCode.is4xxClientError()) {
                return new CloudFoundryAuthorizationException(Reason.INVALID_TOKEN, "Invalid token", throwable);
            }
        }
        return new CloudFoundryAuthorizationException(Reason.SERVICE_UNAVAILABLE, "Cloud controller not reachable");
    }

    private AccessLevel getAccessLevel(Map<?, ?> body) {
        if (Boolean.TRUE.equals(body.get("read_sensitive_data"))) {
            return AccessLevel.FULL;
        }
        return AccessLevel.RESTRICTED;
    }

    private String getPermissionsUri(String applicationId) {
        return this.cloudControllerUrl + "/v2/apps/" + applicationId + "/permissions";
    }

    /**
     * Return a Mono of all token keys known by the UAA.
     * @return a Mono of token keys
     */
    public Mono<Map<String, String>> fetchTokenKeys() {
        return getUaaUrl().flatMap(this::fetchTokenKeys);
    }

    private Mono<? extends Map<String, String>> fetchTokenKeys(String url) {
        RequestHeadersSpec<?> uri = this.webClient.get().uri(url + "/token_keys");
        return uri.retrieve().bodyToMono(STRING_OBJECT_MAP).map(this::extractTokenKeys).onErrorMap(((ex) -> new CloudFoundryAuthorizationException(Reason.SERVICE_UNAVAILABLE, ex.getMessage())));
    }

    private Map<String, String> extractTokenKeys(Map<String, Object> response) {
        Map<String, String> tokenKeys = new HashMap<>();
        for (Object key : (List<?>) response.get("keys")) {
            Map<?, ?> tokenKey = (Map<?, ?>) key;
            tokenKeys.put((String) tokenKey.get("kid"), (String) tokenKey.get("value"));
        }
        return tokenKeys;
    }

    /**
     * Return a Mono of URL of the UAA.
     * @return the UAA url Mono
     */
    public Mono<String> getUaaUrl() {
        this.uaaUrl = this.webClient.get().uri(this.cloudControllerUrl + "/info").retrieve().bodyToMono(Map.clreplaced).map((response) -> (String) response.get("token_endpoint")).cache().onErrorMap((ex) -> new CloudFoundryAuthorizationException(Reason.SERVICE_UNAVAILABLE, "Unable to fetch token keys from UAA."));
        return this.uaaUrl;
    }
}

19 View Source File : PushServerClient.java
License : Apache License 2.0
Project Creator : wultra

/**
 * Get a list of users in paged format from specific campaign
 *
 * @param campaignId Identifier of campaign.
 * @param page Page number.
 * @param size Size of elements per page.
 * @return Page of users specified with params.
 * @throws PushServerClientException In case of network, response / JSON processing, or other IO error.
 */
public PagedResponse<ListOfUsersFromCampaignResponse> getListOfUsersFromCampaign(Long campaignId, int page, int size) throws PushServerClientException {
    try {
        String campaignIdSanitized = URLEncoder.encode(String.valueOf(campaignId), "UTF-8");
        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
        params.put("page", Collections.singletonList(Integer.valueOf(page).toString()));
        params.put("size", Collections.singletonList(Integer.valueOf(size).toString()));
        ParameterizedTypeReference<PagedResponse<ListOfUsersFromCampaignResponse>> typeReference = new ParameterizedTypeReference<PagedResponse<ListOfUsersFromCampaignResponse>>() {
        };
        logger.info("Calling push server to get users from the campaign, campaign ID: {} - start", campaignId);
        final PagedResponse<ListOfUsersFromCampaignResponse> result = getImpl("/push/campaign/" + campaignIdSanitized + "/user/list", params, typeReference);
        logger.info("Calling push server to get users from the campaign, campaign ID: {} - finish", campaignId);
        return result;
    } catch (UnsupportedEncodingException e) {
        throw new PushServerClientException(new Error("PUSH_SERVER_CLIENT_ERROR", e.getMessage()));
    }
}

19 View Source File : RequestMappingMessageConversionIntegrationTests.java
License : MIT License
Project Creator : Vip-Augus

/**
 * {@code @RequestMapping} integration tests focusing on serialization and
 * deserialization of the request and response body.
 *
 * @author Rossen Stoyanchev
 * @author Sebastien Deleuze
 */
public clreplaced RequestMappingMessageConversionIntegrationTests extends AbstractRequestMappingIntegrationTests {

    private static final ParameterizedTypeReference<List<Person>> PERSON_LIST = new ParameterizedTypeReference<List<Person>>() {
    };

    private static final MediaType JSON = MediaType.APPLICATION_JSON;

    @Override
    protected ApplicationContext initApplicationContext() {
        AnnotationConfigApplicationContext wac = new AnnotationConfigApplicationContext();
        wac.register(WebConfig.clreplaced);
        wac.refresh();
        return wac;
    }

    @Test
    public void byteBufferResponseBodyWithPublisher() throws Exception {
        Person expected = new Person("Robert");
        replacedertEquals(expected, performGet("/raw-response/publisher", JSON, Person.clreplaced).getBody());
    }

    @Test
    public void byteBufferResponseBodyWithFlux() throws Exception {
        String expected = "Hello!";
        replacedertEquals(expected, performGet("/raw-response/flux", new HttpHeaders(), String.clreplaced).getBody());
    }

    @Test
    public void byteBufferResponseBodyWithMono() throws Exception {
        String expected = "Hello!";
        ResponseEnreplacedy<String> responseEnreplacedy = performGet("/raw-response/mono", new HttpHeaders(), String.clreplaced);
        replacedertEquals(6, responseEnreplacedy.getHeaders().getContentLength());
        replacedertEquals(expected, responseEnreplacedy.getBody());
    }

    @Test
    public void byteBufferResponseBodyWithObservable() throws Exception {
        String expected = "Hello!";
        replacedertEquals(expected, performGet("/raw-response/observable", new HttpHeaders(), String.clreplaced).getBody());
    }

    @Test
    public void byteBufferResponseBodyWithRxJava2Observable() throws Exception {
        String expected = "Hello!";
        replacedertEquals(expected, performGet("/raw-response/rxjava2-observable", new HttpHeaders(), String.clreplaced).getBody());
    }

    @Test
    public void byteBufferResponseBodyWithFlowable() throws Exception {
        String expected = "Hello!";
        replacedertEquals(expected, performGet("/raw-response/flowable", new HttpHeaders(), String.clreplaced).getBody());
    }

    @Test
    public void personResponseBody() throws Exception {
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> responseEnreplacedy = performGet("/person-response/person", JSON, Person.clreplaced);
        replacedertEquals(17, responseEnreplacedy.getHeaders().getContentLength());
        replacedertEquals(expected, responseEnreplacedy.getBody());
    }

    @Test
    public void personResponseBodyWithCompletableFuture() throws Exception {
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> responseEnreplacedy = performGet("/person-response/completable-future", JSON, Person.clreplaced);
        replacedertEquals(17, responseEnreplacedy.getHeaders().getContentLength());
        replacedertEquals(expected, responseEnreplacedy.getBody());
    }

    @Test
    public void personResponseBodyWithMono() throws Exception {
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> responseEnreplacedy = performGet("/person-response/mono", JSON, Person.clreplaced);
        replacedertEquals(17, responseEnreplacedy.getHeaders().getContentLength());
        replacedertEquals(expected, responseEnreplacedy.getBody());
    }

    // SPR-17506
    @Test
    public void personResponseBodyWithEmptyMono() throws Exception {
        ResponseEnreplacedy<Person> responseEnreplacedy = performGet("/person-response/mono-empty", JSON, Person.clreplaced);
        replacedertEquals(0, responseEnreplacedy.getHeaders().getContentLength());
        replacedertNull(responseEnreplacedy.getBody());
        // As we're on the same connection, the 2nd request proves server response handling
        // did complete after the 1st request..
        responseEnreplacedy = performGet("/person-response/mono-empty", JSON, Person.clreplaced);
        replacedertEquals(0, responseEnreplacedy.getHeaders().getContentLength());
        replacedertNull(responseEnreplacedy.getBody());
    }

    @Test
    public void personResponseBodyWithMonoDeclaredAsObject() throws Exception {
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> enreplacedy = performGet("/person-response/mono-declared-as-object", JSON, Person.clreplaced);
        replacedertEquals(17, enreplacedy.getHeaders().getContentLength());
        replacedertEquals(expected, enreplacedy.getBody());
    }

    @Test
    public void personResponseBodyWithSingle() throws Exception {
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> enreplacedy = performGet("/person-response/single", JSON, Person.clreplaced);
        replacedertEquals(17, enreplacedy.getHeaders().getContentLength());
        replacedertEquals(expected, enreplacedy.getBody());
    }

    @Test
    public void personResponseBodyWithMonoResponseEnreplacedy() throws Exception {
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> enreplacedy = performGet("/person-response/mono-response-enreplacedy", JSON, Person.clreplaced);
        replacedertEquals(17, enreplacedy.getHeaders().getContentLength());
        replacedertEquals(expected, enreplacedy.getBody());
    }

    // SPR-16172
    @Test
    public void personResponseBodyWithMonoResponseEnreplacedyXml() throws Exception {
        String url = "/person-response/mono-response-enreplacedy-xml";
        ResponseEnreplacedy<String> enreplacedy = performGet(url, new HttpHeaders(), String.clreplaced);
        String actual = enreplacedy.getBody();
        replacedertEquals(91, enreplacedy.getHeaders().getContentLength());
        replacedertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<person><name>Robert</name></person>", actual);
    }

    @Test
    public void personResponseBodyWithList() throws Exception {
        List<?> expected = asList(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<List<Person>> enreplacedy = performGet("/person-response/list", JSON, PERSON_LIST);
        replacedertEquals(36, enreplacedy.getHeaders().getContentLength());
        replacedertEquals(expected, enreplacedy.getBody());
    }

    @Test
    public void personResponseBodyWithPublisher() throws Exception {
        List<?> expected = asList(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<List<Person>> enreplacedy = performGet("/person-response/publisher", JSON, PERSON_LIST);
        replacedertEquals(-1, enreplacedy.getHeaders().getContentLength());
        replacedertEquals(expected, enreplacedy.getBody());
    }

    @Test
    public void personResponseBodyWithFlux() throws Exception {
        List<?> expected = asList(new Person("Robert"), new Person("Marie"));
        replacedertEquals(expected, performGet("/person-response/flux", JSON, PERSON_LIST).getBody());
    }

    @Test
    public void personResponseBodyWithObservable() throws Exception {
        List<?> expected = asList(new Person("Robert"), new Person("Marie"));
        replacedertEquals(expected, performGet("/person-response/observable", JSON, PERSON_LIST).getBody());
    }

    @Test
    public void resource() throws Exception {
        ResponseEnreplacedy<byte[]> response = performGet("/resource", new HttpHeaders(), byte[].clreplaced);
        replacedertEquals(HttpStatus.OK, response.getStatusCode());
        replacedertTrue(response.hasBody());
        replacedertEquals(951, response.getHeaders().getContentLength());
        replacedertEquals(951, response.getBody().length);
        replacedertEquals(new MediaType("image", "png"), response.getHeaders().getContentType());
    }

    @Test
    public void personTransform() throws Exception {
        replacedertEquals(new Person("ROBERT"), performPost("/person-transform/person", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody());
    }

    @Test
    public void personTransformWithCompletableFuture() throws Exception {
        replacedertEquals(new Person("ROBERT"), performPost("/person-transform/completable-future", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody());
    }

    @Test
    public void personTransformWithMono() throws Exception {
        replacedertEquals(new Person("ROBERT"), performPost("/person-transform/mono", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody());
    }

    // SPR-16759
    @Test
    public void personTransformWithMonoAndXml() throws Exception {
        replacedertEquals(new Person("ROBERT"), performPost("/person-transform/mono", MediaType.APPLICATION_XML, new Person("Robert"), MediaType.APPLICATION_XML, Person.clreplaced).getBody());
    }

    @Test
    public void personTransformWithSingle() throws Exception {
        replacedertEquals(new Person("ROBERT"), performPost("/person-transform/single", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody());
    }

    @Test
    public void personTransformWithRxJava2Single() throws Exception {
        replacedertEquals(new Person("ROBERT"), performPost("/person-transform/rxjava2-single", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody());
    }

    @Test
    public void personTransformWithRxJava2Maybe() throws Exception {
        replacedertEquals(new Person("ROBERT"), performPost("/person-transform/rxjava2-maybe", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody());
    }

    @Test
    public void personTransformWithPublisher() throws Exception {
        List<?> req = asList(new Person("Robert"), new Person("Marie"));
        List<?> res = asList(new Person("ROBERT"), new Person("MARIE"));
        replacedertEquals(res, performPost("/person-transform/publisher", JSON, req, JSON, PERSON_LIST).getBody());
    }

    @Test
    public void personTransformWithFlux() throws Exception {
        List<?> req = asList(new Person("Robert"), new Person("Marie"));
        List<?> res = asList(new Person("ROBERT"), new Person("MARIE"));
        replacedertEquals(res, performPost("/person-transform/flux", JSON, req, JSON, PERSON_LIST).getBody());
    }

    @Test
    public void personTransformWithObservable() throws Exception {
        List<?> req = asList(new Person("Robert"), new Person("Marie"));
        List<?> res = asList(new Person("ROBERT"), new Person("MARIE"));
        replacedertEquals(res, performPost("/person-transform/observable", JSON, req, JSON, PERSON_LIST).getBody());
    }

    @Test
    public void personTransformWithRxJava2Observable() throws Exception {
        List<?> req = asList(new Person("Robert"), new Person("Marie"));
        List<?> res = asList(new Person("ROBERT"), new Person("MARIE"));
        replacedertEquals(res, performPost("/person-transform/rxjava2-observable", JSON, req, JSON, PERSON_LIST).getBody());
    }

    @Test
    public void personTransformWithFlowable() throws Exception {
        List<?> req = asList(new Person("Robert"), new Person("Marie"));
        List<?> res = asList(new Person("ROBERT"), new Person("MARIE"));
        replacedertEquals(res, performPost("/person-transform/flowable", JSON, req, JSON, PERSON_LIST).getBody());
    }

    @Test
    public void personCreateWithPublisherJson() throws Exception {
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/publisher", JSON, asList(new Person("Robert"), new Person("Marie")), null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, enreplacedy.getStatusCode());
        replacedertEquals(2, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithPublisherXml() throws Exception {
        People people = new People(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<Void> response = performPost("/person-create/publisher", APPLICATION_XML, people, null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, response.getStatusCode());
        replacedertEquals(2, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithMono() throws Exception {
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/mono", JSON, new Person("Robert"), null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, enreplacedy.getStatusCode());
        replacedertEquals(1, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithSingle() throws Exception {
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/single", JSON, new Person("Robert"), null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, enreplacedy.getStatusCode());
        replacedertEquals(1, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithRxJava2Single() throws Exception {
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/rxjava2-single", JSON, new Person("Robert"), null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, enreplacedy.getStatusCode());
        replacedertEquals(1, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithFluxJson() throws Exception {
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/flux", JSON, asList(new Person("Robert"), new Person("Marie")), null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, enreplacedy.getStatusCode());
        replacedertEquals(2, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithFluxXml() throws Exception {
        People people = new People(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<Void> response = performPost("/person-create/flux", APPLICATION_XML, people, null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, response.getStatusCode());
        replacedertEquals(2, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithObservableJson() throws Exception {
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/observable", JSON, asList(new Person("Robert"), new Person("Marie")), null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, enreplacedy.getStatusCode());
        replacedertEquals(2, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithRxJava2ObservableJson() throws Exception {
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/rxjava2-observable", JSON, asList(new Person("Robert"), new Person("Marie")), null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, enreplacedy.getStatusCode());
        replacedertEquals(2, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithObservableXml() throws Exception {
        People people = new People(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<Void> response = performPost("/person-create/observable", APPLICATION_XML, people, null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, response.getStatusCode());
        replacedertEquals(2, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithRxJava2ObservableXml() throws Exception {
        People people = new People(new Person("Robert"), new Person("Marie"));
        String url = "/person-create/rxjava2-observable";
        ResponseEnreplacedy<Void> response = performPost(url, APPLICATION_XML, people, null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, response.getStatusCode());
        replacedertEquals(2, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithFlowableJson() throws Exception {
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/flowable", JSON, asList(new Person("Robert"), new Person("Marie")), null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, enreplacedy.getStatusCode());
        replacedertEquals(2, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Test
    public void personCreateWithFlowableXml() throws Exception {
        People people = new People(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<Void> response = performPost("/person-create/flowable", APPLICATION_XML, people, null, Void.clreplaced);
        replacedertEquals(HttpStatus.OK, response.getStatusCode());
        replacedertEquals(2, getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size());
    }

    @Configuration
    @EnableWebFlux
    @ComponentScan(resourcePattern = "**/RequestMappingMessageConversionIntegrationTests$*.clreplaced")
    @SuppressWarnings({ "unused", "WeakerAccess" })
    static clreplaced WebConfig {
    }

    @RestController
    @RequestMapping("/raw-response")
    @SuppressWarnings("unused")
    private static clreplaced RawResponseBodyController {

        @GetMapping("/publisher")
        public Publisher<ByteBuffer> getPublisher() {
            DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
            Jackson2JsonEncoder encoder = new Jackson2JsonEncoder();
            return encoder.encode(Mono.just(new Person("Robert")), dataBufferFactory, ResolvableType.forClreplaced(Person.clreplaced), JSON, Collections.emptyMap()).map(DataBuffer::asByteBuffer);
        }

        @GetMapping("/flux")
        public Flux<ByteBuffer> getFlux() {
            return Flux.just(ByteBuffer.wrap("Hello!".getBytes()));
        }

        @GetMapping("/mono")
        public Mono<ByteBuffer> getMonoString() {
            return Mono.just(ByteBuffer.wrap("Hello!".getBytes()));
        }

        @GetMapping("/observable")
        public Observable<ByteBuffer> getObservable() {
            return Observable.just(ByteBuffer.wrap("Hello!".getBytes()));
        }

        @GetMapping("/rxjava2-observable")
        public io.reactivex.Observable<ByteBuffer> getRxJava2Observable() {
            return io.reactivex.Observable.just(ByteBuffer.wrap("Hello!".getBytes()));
        }

        @GetMapping("/flowable")
        public Flowable<ByteBuffer> getFlowable() {
            return Flowable.just(ByteBuffer.wrap("Hello!".getBytes()));
        }
    }

    @RestController
    @RequestMapping("/person-response")
    @SuppressWarnings("unused")
    private static clreplaced PersonResponseBodyController {

        @GetMapping("/person")
        public Person getPerson() {
            return new Person("Robert");
        }

        @GetMapping("/completable-future")
        public CompletableFuture<Person> getCompletableFuture() {
            return CompletableFuture.completedFuture(new Person("Robert"));
        }

        @GetMapping("/mono")
        public Mono<Person> getMono() {
            return Mono.just(new Person("Robert"));
        }

        @GetMapping("/mono-empty")
        public Mono<Person> getMonoEmpty() {
            return Mono.empty();
        }

        @GetMapping("/mono-declared-as-object")
        public Object getMonoDeclaredAsObject() {
            return Mono.just(new Person("Robert"));
        }

        @GetMapping("/single")
        public Single<Person> getSingle() {
            return Single.just(new Person("Robert"));
        }

        @GetMapping("/mono-response-enreplacedy")
        public ResponseEnreplacedy<Mono<Person>> getMonoResponseEnreplacedy() {
            Mono<Person> body = Mono.just(new Person("Robert"));
            return ResponseEnreplacedy.ok(body);
        }

        @GetMapping("/mono-response-enreplacedy-xml")
        public ResponseEnreplacedy<Mono<Person>> getMonoResponseEnreplacedyXml() {
            Mono<Person> body = Mono.just(new Person("Robert"));
            return ResponseEnreplacedy.ok().contentType(MediaType.APPLICATION_XML).body(body);
        }

        @GetMapping("/list")
        public List<Person> getList() {
            return asList(new Person("Robert"), new Person("Marie"));
        }

        @GetMapping("/publisher")
        public Publisher<Person> getPublisher() {
            return Flux.just(new Person("Robert"), new Person("Marie"));
        }

        @GetMapping("/flux")
        public Flux<Person> getFlux() {
            return Flux.just(new Person("Robert"), new Person("Marie"));
        }

        @GetMapping("/observable")
        public Observable<Person> getObservable() {
            return Observable.just(new Person("Robert"), new Person("Marie"));
        }
    }

    @RestController
    @SuppressWarnings("unused")
    private static clreplaced ResourceController {

        @GetMapping("/resource")
        public Resource resource() {
            return new ClreplacedPathResource("spring.png", ZeroCopyIntegrationTests.clreplaced);
        }
    }

    @RestController
    @RequestMapping("/person-transform")
    @SuppressWarnings("unused")
    private static clreplaced PersonTransformationController {

        @PostMapping("/person")
        public Person transformPerson(@RequestBody Person person) {
            return new Person(person.getName().toUpperCase());
        }

        @PostMapping("/completable-future")
        public CompletableFuture<Person> transformCompletableFuture(@RequestBody CompletableFuture<Person> personFuture) {
            return personFuture.thenApply(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/mono")
        public Mono<Person> transformMono(@RequestBody Mono<Person> personFuture) {
            return personFuture.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/single")
        public Single<Person> transformSingle(@RequestBody Single<Person> personFuture) {
            return personFuture.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/rxjava2-single")
        public io.reactivex.Single<Person> transformRxJava2Single(@RequestBody io.reactivex.Single<Person> personFuture) {
            return personFuture.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/rxjava2-maybe")
        public Maybe<Person> transformRxJava2Maybe(@RequestBody Maybe<Person> personFuture) {
            return personFuture.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/publisher")
        public Publisher<Person> transformPublisher(@RequestBody Publisher<Person> persons) {
            return Flux.from(persons).map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/flux")
        public Flux<Person> transformFlux(@RequestBody Flux<Person> persons) {
            return persons.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/observable")
        public Observable<Person> transformObservable(@RequestBody Observable<Person> persons) {
            return persons.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/rxjava2-observable")
        public io.reactivex.Observable<Person> transformObservable(@RequestBody io.reactivex.Observable<Person> persons) {
            return persons.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/flowable")
        public Flowable<Person> transformFlowable(@RequestBody Flowable<Person> persons) {
            return persons.map(person -> new Person(person.getName().toUpperCase()));
        }
    }

    @RestController
    @RequestMapping("/person-create")
    @SuppressWarnings("unused")
    private static clreplaced PersonCreateController {

        final List<Person> persons = new ArrayList<>();

        @PostMapping("/publisher")
        public Publisher<Void> createWithPublisher(@RequestBody Publisher<Person> publisher) {
            return Flux.from(publisher).doOnNext(persons::add).then();
        }

        @PostMapping("/mono")
        public Mono<Void> createWithMono(@RequestBody Mono<Person> mono) {
            return mono.doOnNext(persons::add).then();
        }

        @PostMapping("/single")
        public Completable createWithSingle(@RequestBody Single<Person> single) {
            return single.map(persons::add).toCompletable();
        }

        @PostMapping("/rxjava2-single")
        @SuppressWarnings("deprecation")
        public io.reactivex.Completable createWithRxJava2Single(@RequestBody io.reactivex.Single<Person> single) {
            return single.map(persons::add).toCompletable();
        }

        @PostMapping("/flux")
        public Mono<Void> createWithFlux(@RequestBody Flux<Person> flux) {
            return flux.doOnNext(persons::add).then();
        }

        @PostMapping("/observable")
        public Observable<Void> createWithObservable(@RequestBody Observable<Person> observable) {
            return observable.toList().doOnNext(persons::addAll).flatMap(doreplacedent -> Observable.empty());
        }

        @PostMapping("/rxjava2-observable")
        @SuppressWarnings("deprecation")
        public io.reactivex.Completable createWithRxJava2Observable(@RequestBody io.reactivex.Observable<Person> observable) {
            return observable.toList().doOnSuccess(persons::addAll).toCompletable();
        }

        @PostMapping("/flowable")
        @SuppressWarnings("deprecation")
        public io.reactivex.Completable createWithFlowable(@RequestBody Flowable<Person> flowable) {
            return flowable.toList().doOnSuccess(persons::addAll).toCompletable();
        }
    }

    @XmlRootElement
    @SuppressWarnings("unused")
    private static clreplaced Person {

        private String name;

        public Person() {
        }

        public Person(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) {
                return true;
            }
            if (o == null || getClreplaced() != o.getClreplaced()) {
                return false;
            }
            Person person = (Person) o;
            return !(this.name != null ? !this.name.equals(person.name) : person.name != null);
        }

        @Override
        public int hashCode() {
            return this.name != null ? this.name.hashCode() : 0;
        }

        @Override
        public String toString() {
            return "Person{" + "name='" + name + '\'' + '}';
        }
    }

    @XmlRootElement
    @SuppressWarnings({ "WeakerAccess", "unused" })
    private static clreplaced People {

        private List<Person> persons = new ArrayList<>();

        public People() {
        }

        public People(Person... persons) {
            this.persons.addAll(Arrays.asList(persons));
        }

        @XmlElement
        public List<Person> getPerson() {
            return this.persons;
        }
    }
}

19 View Source File : ServerRequestWrapperTests.java
License : MIT License
Project Creator : Vip-Augus

@Test
public void bodyToFluxParameterizedTypeReference() {
    Flux<String> result = Flux.just("foo");
    ParameterizedTypeReference<String> reference = new ParameterizedTypeReference<String>() {
    };
    given(mockRequest.bodyToFlux(reference)).willReturn(result);
    replacedertSame(result, wrapper.bodyToFlux(reference));
}

19 View Source File : ServerRequestWrapperTests.java
License : MIT License
Project Creator : Vip-Augus

@Test
public void bodyToMonoParameterizedTypeReference() {
    Mono<String> result = Mono.just("foo");
    ParameterizedTypeReference<String> reference = new ParameterizedTypeReference<String>() {
    };
    given(mockRequest.bodyToMono(reference)).willReturn(result);
    replacedertSame(result, wrapper.bodyToMono(reference));
}

19 View Source File : DefaultEntityResponseBuilderTests.java
License : MIT License
Project Creator : Vip-Augus

@Test
public void fromPublisher() {
    Flux<String> body = Flux.just("foo", "bar");
    ParameterizedTypeReference<String> typeReference = new ParameterizedTypeReference<String>() {
    };
    EnreplacedyResponse<Flux<String>> response = EnreplacedyResponse.fromPublisher(body, typeReference).build().block();
    replacedertSame(body, response.enreplacedy());
}

19 View Source File : ClientResponseWrapperTests.java
License : MIT License
Project Creator : Vip-Augus

@Test
public void bodyToMonoParameterizedTypeReference() {
    Mono<String> result = Mono.just("foo");
    ParameterizedTypeReference<String> reference = new ParameterizedTypeReference<String>() {
    };
    given(mockResponse.bodyToMono(reference)).willReturn(result);
    replacedertSame(result, wrapper.bodyToMono(reference));
}

19 View Source File : ClientResponseWrapperTests.java
License : MIT License
Project Creator : Vip-Augus

@Test
public void toEnreplacedyListParameterizedTypeReference() {
    Mono<ResponseEnreplacedy<List<String>>> result = Mono.just(new ResponseEnreplacedy<>(singletonList("foo"), HttpStatus.OK));
    ParameterizedTypeReference<String> reference = new ParameterizedTypeReference<String>() {
    };
    given(mockResponse.toEnreplacedyList(reference)).willReturn(result);
    replacedertSame(result, wrapper.toEnreplacedyList(reference));
}

19 View Source File : ClientResponseWrapperTests.java
License : MIT License
Project Creator : Vip-Augus

@Test
public void bodyToFluxParameterizedTypeReference() {
    Flux<String> result = Flux.just("foo");
    ParameterizedTypeReference<String> reference = new ParameterizedTypeReference<String>() {
    };
    given(mockResponse.bodyToFlux(reference)).willReturn(result);
    replacedertSame(result, wrapper.bodyToFlux(reference));
}

19 View Source File : RestTemplateIntegrationTests.java
License : MIT License
Project Creator : Vip-Augus

// SPR-13154
@Test
public void jsonPostForObjectWithJacksonTypeInfoList() throws URISyntaxException {
    List<ParentClreplaced> list = new ArrayList<>();
    list.add(new Foo("foo"));
    list.add(new Bar("bar"));
    ParameterizedTypeReference<?> typeReference = new ParameterizedTypeReference<List<ParentClreplaced>>() {
    };
    RequestEnreplacedy<List<ParentClreplaced>> enreplacedy = RequestEnreplacedy.post(new URI(baseUrl + "/jsonpost")).contentType(new MediaType("application", "json", StandardCharsets.UTF_8)).body(list, typeReference.getType());
    String content = template.exchange(enreplacedy, String.clreplaced).getBody();
    replacedertTrue(content.contains("\"type\":\"foo\""));
    replacedertTrue(content.contains("\"type\":\"bar\""));
}

19 View Source File : RequestEntityTests.java
License : MIT License
Project Creator : Vip-Augus

// SPR-13154
@Test
public void types() throws URISyntaxException {
    URI url = new URI("https://example.com");
    List<String> body = Arrays.asList("foo", "bar");
    ParameterizedTypeReference<?> typeReference = new ParameterizedTypeReference<List<String>>() {
    };
    RequestEnreplacedy<?> enreplacedy = RequestEnreplacedy.post(url).body(body, typeReference.getType());
    replacedertEquals(typeReference.getType(), enreplacedy.getType());
}

19 View Source File : MappingJackson2HttpMessageConverterTests.java
License : MIT License
Project Creator : Vip-Augus

// SPR-13318
@Test
public void writeSubTypeList() throws Exception {
    MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
    List<MyBean> beans = new ArrayList<>();
    MyBean foo = new MyBean();
    foo.setString("Foo");
    foo.setNumber(42);
    beans.add(foo);
    MyBean bar = new MyBean();
    bar.setString("Bar");
    bar.setNumber(123);
    beans.add(bar);
    ParameterizedTypeReference<List<MyInterface>> typeReference = new ParameterizedTypeReference<List<MyInterface>>() {
    };
    this.converter.writeInternal(beans, typeReference.getType(), outputMessage);
    String result = outputMessage.getBodyreplacedtring(StandardCharsets.UTF_8);
    replacedertTrue(result.contains("\"string\":\"Foo\""));
    replacedertTrue(result.contains("\"number\":42"));
    replacedertTrue(result.contains("\"string\":\"Bar\""));
    replacedertTrue(result.contains("\"number\":123"));
}

19 View Source File : LeaveRequestControllerSpringBootWebEnvRandomPortTest.java
License : MIT License
Project Creator : timtebeek

@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@AutoConfigureWireMock(port = 8090)
clreplaced LeaveRequestControllerSpringBootWebEnvRandomPortTest {

    private static final String TOKEN_ALICE_VALID_UNTIL_AUGUST_2022 = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJRSS1mdW1sLTRyTnBrdVZxWVg0elpuZlRUZW1hSkxoZ183Z0dULTZiSFlVIn0.eyJqdGkiOiI0OWFkZmVlOS02MGEwLTQxMreplacedOGI1OS1hZWEwOTliYjlmYTIiLCJleHAiOjE2NTk4OTg3NjYsIm5iZiI6MCwiaWF0IjoxNTczNDk4NzY2LCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwOTAvYXV0aC9yZWFsbXMvc3ByaW5nLWNsb3VkLWdhdGV3YXktcmVhbG0iLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiYWQ4MjRkZmMtNmFmZi00NWEzLWJlOWQtOTU0ZDUwZmJkYjdhIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoic3ByaW5nLWNsb3VkLWdhdGV3YXktY2xpZW50Iiwibm9uY2UiOiJwMGtsejZlc0VYNnYtWU8tXzVGd2JITk95N2NudklibEsweTBiWi1iUVpNIiwiYXV0aF90aW1lIjoxNTczNDk4NzY2LCJzZXNzaW9uX3N0YXRlIjoiZjIyMjY4ZTAtOTJlZS00MDU4LTgzMzctMzkyNDg4YjJlNTQwIiwiYWNyIjoiMSIsInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgcGhvbmUgbWljcm9wcm9maWxlLWp3dCBvZmZsaW5lX2FjY2VzcyBwcm9maWxlIGVtYWlsIGFkZHJlc3MiLCJ1cG4iOiJhbGljZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhZGRyZXNzIjp7fSwibmFtZSI6IkFsaWNlIiwiZ3JvdXBzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXSwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWxpY2UiLCJnaXZlbl9uYW1lIjoiQWxpY2UifQ.hHK8E-01eFb4UZtBjclVronp-6jfVbhxh9U0m0DEdYQE8YGWFCjMxUcfeI0Rx9zueeC_HJsFT4wcegs8Qh6Z2n7IGWbf0Vtg0fzVH9vFXkwbFBdbCZJz4MZ1Zc3cpC2UrSnuPDc8EIn1FQrKIEF8nqEcNzcL3ujxligvOern2A4xUS1GLqrLKmbPPbKocESZb75EMbmEPFDoctgI1n4vniOz9j242WxbcMjM7INeIsPCKWqvgaeYHOKlgW2CfHfsLPr_XQw5VvCMWJ1GHficCwwjyL-PeemHmBS6eO6EnHpl5Ftm7siATcZuJXQHTosb6b38Gkw2s6-yGQJcbQc01g";

    private static final String TOKEN_HR_VALID_UNTIL_AUGUST_2022 = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJRSS1mdW1sLTRyTnBrdVZxWVg0elpuZlRUZW1hSkxoZ183Z0dULTZiSFlVIn0.eyJqdGkiOiJhZjJkYjUzZi0zMzA3LTRiYmItOWIyMy01NjI4NzYxOTNiOTAiLCJleHAiOjE2NTk4OTgyMjIsIm5iZiI6MCwiaWF0IjoxNTczNDk4MjIyLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwOTAvYXV0aC9yZWFsbXMvc3ByaW5nLWNsb3VkLWdhdGV3YXktcmVhbG0iLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiYjc2ODI2NjQtZWJhZC00NzAzLTgyNTctNDIyY2QwNTJhNjU4IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoic3ByaW5nLWNsb3VkLWdhdGV3YXktY2xpZW50Iiwibm9uY2UiOiJDMFktek5kTUt6UWwweGdESDc1OWZJOU13ek5iY3ROT3I2M0ZOMUFSX1NzIiwiYXV0aF90aW1lIjoxNTczNDk4MjIyLCJzZXNzaW9uX3N0YXRlIjoiODA5NGMxZGUtMTNmYS00MzQzLWEyN2MtODRhZTE3NDJlMDA5IiwiYWNyIjoiMSIsInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsIkhSIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6Im9wZW5pZCBwaG9uZSBtaWNyb3Byb2ZpbGUtand0IG9mZmxpbmVfYWNjZXNzIHByb2ZpbGUgZW1haWwgYWRkcmVzcyIsInVwbiI6ImJvYiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhZGRyZXNzIjp7fSwibmFtZSI6IkJvYiIsImdyb3VwcyI6WyJvZmZsaW5lX2FjY2VzcyIsIkhSIiwidW1hX2F1dGhvcml6YXRpb24iXSwicHJlZmVycmVkX3VzZXJuYW1lIjoiYm9iIiwiZ2l2ZW5fbmFtZSI6IkJvYiJ9.DxqIEqanm_7pM08amW6VQ7EBXta54c7kV2ozewYZ_K6_nqOZHAQMWiH-DTnCLlNPnoKZeoLsf_7QcRAXijGoCiRYy0suhGvLAAMCtQgDMfmgMYCZV-sOkHNX8AZDzDj3tXQs1zVQOc3zw9M3Byt_e-0KzxcIi4EUcD8p5fi7NTsynV7Lm6KQVMQTVE-eWBN9wtNo6Lacv4WeFcOTYTRTVRHJU72rrXe6hSDpRd90__T2PsncnqvKPhtaSe4klgaENflxQRTEVKu_oDah4MabwFW1yqQRX68OvUdmtOI2sd05p1juYwuIbSThGtcgrqA1VomgHu0fbp6bgvd1Q_neuw";

    @Autowired
    private LeaveRequestRepository repository;

    @Autowired
    private TestRestTemplate resttemplate;

    @BeforeEach
    void beforeEach() {
        repository.clear();
    }

    @Test
    void testRequest() throws Exception {
        LocalDate from = of(2019, 11, 30);
        LocalDate to = of(2019, 12, 3);
        HttpEnreplacedy<?> httpEnreplacedy = httpEnreplacedyWithBearerTokenHeader(TOKEN_ALICE_VALID_UNTIL_AUGUST_2022);
        ResponseEnreplacedy<LeaveRequestDTO> response = resttemplate.exchange("/request/{employee}?from={from}&to={to}", HttpMethod.POST, httpEnreplacedy, LeaveRequestDTO.clreplaced, "alice", from, to);
        replacedertThat(response.getStatusCode()).isEqualByComparingTo(ACCEPTED);
        replacedertThat(response.getHeaders().getContentType()).isEqualByComparingTo(APPLICATION_JSON);
        replacedertThat(response.getBody().getEmployee()).isEqualTo("alice");
        replacedertThat(response.getBody().getFromDate()).isEqualTo(from);
        replacedertThat(response.getBody().getToDate()).isEqualTo(to);
        replacedertThat(response.getBody().getStatus()).isEqualByComparingTo(PENDING);
    }

    @Test
    void testApprove() throws Exception {
        LeaveRequest saved = repository.save(new LeaveRequest("Alice", of(2019, 11, 30), of(2019, 12, 3), PENDING));
        HttpEnreplacedy<?> httpEnreplacedy = httpEnreplacedyWithBearerTokenHeader(TOKEN_HR_VALID_UNTIL_AUGUST_2022);
        ResponseEnreplacedy<LeaveRequestDTO> response = resttemplate.exchange("/approve/{id}", HttpMethod.POST, httpEnreplacedy, LeaveRequestDTO.clreplaced, saved.getId());
        replacedertThat(response.getStatusCode()).isEqualByComparingTo(ACCEPTED);
        replacedertThat(response.getHeaders().getContentType()).isEqualByComparingTo(APPLICATION_JSON);
        replacedertThat(response.getBody().getEmployee()).isEqualTo("Alice");
        replacedertThat(response.getBody().getStatus()).isEqualByComparingTo(APPROVED);
    }

    @Test
    void testApproveMissing() throws Exception {
        HttpEnreplacedy<?> httpEnreplacedy = httpEnreplacedyWithBearerTokenHeader(TOKEN_HR_VALID_UNTIL_AUGUST_2022);
        ResponseEnreplacedy<LeaveRequestDTO> response = resttemplate.exchange("/approve/{id}", HttpMethod.POST, httpEnreplacedy, LeaveRequestDTO.clreplaced, UUID.randomUUID());
        replacedertThat(response.getStatusCode()).isEqualByComparingTo(NO_CONTENT);
    }

    @Test
    void testDeny() throws Exception {
        LeaveRequest saved = repository.save(new LeaveRequest("Alice", of(2019, 11, 30), of(2019, 12, 3), PENDING));
        HttpEnreplacedy<?> httpEnreplacedy = httpEnreplacedyWithBearerTokenHeader(TOKEN_HR_VALID_UNTIL_AUGUST_2022);
        ResponseEnreplacedy<LeaveRequestDTO> response = resttemplate.exchange("/deny/{id}", HttpMethod.POST, httpEnreplacedy, LeaveRequestDTO.clreplaced, saved.getId());
        replacedertThat(response.getStatusCode()).isEqualByComparingTo(ACCEPTED);
        replacedertThat(response.getHeaders().getContentType()).isEqualByComparingTo(APPLICATION_JSON);
        replacedertThat(response.getBody().getEmployee()).isEqualTo("Alice");
        replacedertThat(response.getBody().getStatus()).isEqualByComparingTo(DENIED);
    }

    @Test
    void testViewId() throws Exception {
        LeaveRequest saved = repository.save(new LeaveRequest("alice", of(2019, 11, 30), of(2019, 12, 3), PENDING));
        HttpEnreplacedy<?> httpEnreplacedy = httpEnreplacedyWithBearerTokenHeader(TOKEN_ALICE_VALID_UNTIL_AUGUST_2022);
        ResponseEnreplacedy<LeaveRequestDTO> response = resttemplate.exchange("/view/id/{id}", GET, httpEnreplacedy, LeaveRequestDTO.clreplaced, saved.getId());
        replacedertThat(response.getStatusCode()).isEqualByComparingTo(OK);
        replacedertThat(response.getHeaders().getContentType()).isEqualByComparingTo(APPLICATION_JSON);
        replacedertThat(response.getBody().getEmployee()).isEqualTo("alice");
        replacedertThat(response.getBody().getStatus()).isEqualByComparingTo(PENDING);
    }

    @Test
    void testViewIdMissing() throws Exception {
        HttpEnreplacedy<?> httpEnreplacedy = httpEnreplacedyWithBearerTokenHeader(TOKEN_HR_VALID_UNTIL_AUGUST_2022);
        ResponseEnreplacedy<LeaveRequestDTO> response = resttemplate.exchange("/view/id/{id}", GET, httpEnreplacedy, LeaveRequestDTO.clreplaced, UUID.randomUUID());
        replacedertThat(response.getStatusCode()).isEqualByComparingTo(NO_CONTENT);
    }

    private static final ParameterizedTypeReference<List<LeaveRequestDTO>> typeref = new ParameterizedTypeReference<>() {
    };

    @Test
    void testViewEmployee() throws Exception {
        repository.save(new LeaveRequest("alice", of(2019, 11, 30), of(2019, 12, 3), PENDING));
        HttpEnreplacedy<?> httpEnreplacedy = httpEnreplacedyWithBearerTokenHeader(TOKEN_ALICE_VALID_UNTIL_AUGUST_2022);
        ResponseEnreplacedy<List<LeaveRequestDTO>> response = resttemplate.exchange("/view/employee/{employee}", GET, httpEnreplacedy, typeref, "alice");
        replacedertThat(response.getStatusCode()).isEqualByComparingTo(OK);
        replacedertThat(response.getHeaders().getContentType()).isEqualByComparingTo(APPLICATION_JSON);
        replacedertThat(response.getBody().get(0).getEmployee()).isEqualTo("alice");
        replacedertThat(response.getBody().get(0).getStatus()).isEqualByComparingTo(PENDING);
    }

    @Test
    void testViewAll() throws Exception {
        repository.save(new LeaveRequest("Alice", of(2019, 11, 30), of(2019, 12, 3), PENDING));
        HttpEnreplacedy<?> httpEnreplacedy = httpEnreplacedyWithBearerTokenHeader(TOKEN_HR_VALID_UNTIL_AUGUST_2022);
        ResponseEnreplacedy<List<LeaveRequestDTO>> response = resttemplate.exchange("/view/all", GET, httpEnreplacedy, typeref);
        replacedertThat(response.getStatusCode()).isEqualByComparingTo(OK);
        replacedertThat(response.getHeaders().getContentType()).isEqualByComparingTo(APPLICATION_JSON);
        replacedertThat(response.getBody().get(0).getEmployee()).isEqualTo("Alice");
        replacedertThat(response.getBody().get(0).getStatus()).isEqualByComparingTo(PENDING);
    }

    private static HttpEnreplacedy<?> httpEnreplacedyWithBearerTokenHeader(String token) {
        HttpHeaders headers = new HttpHeaders();
        headers.setBearerAuth(token);
        HttpEnreplacedy<?> httpEnreplacedy = new HttpEnreplacedy<>(headers);
        return httpEnreplacedy;
    }
}

19 View Source File : WorkbasketControllerIntTest.java
License : Apache License 2.0
Project Creator : Taskana

/**
 * Test WorkbasketController.
 */
@TaskanaSpringBootTest
clreplaced WorkbasketControllerIntTest {

    private static final ParameterizedTypeReference<WorkbasketRepresentationModel> WORKBASKET_REPRESENTATION_MODEL_TYPE = new ParameterizedTypeReference<WorkbasketRepresentationModel>() {
    };

    private static final ParameterizedTypeReference<WorkbasketSummaryPagedRepresentationModel> WORKBASKET_SUMMARY_PAGE_MODEL_TYPE = new ParameterizedTypeReference<WorkbasketSummaryPagedRepresentationModel>() {
    };

    private static final ParameterizedTypeReference<WorkbasketAccessItemCollectionRepresentationModel> WORKBASKET_ACCESS_ITEM_COLLECTION_REPRESENTATION_TYPE = new ParameterizedTypeReference<WorkbasketAccessItemCollectionRepresentationModel>() {
    };

    private static final ParameterizedTypeReference<DistributionTargetsCollectionRepresentationModel> DISTRIBUTION_TARGETS_COLLECTION_REPRESENTATION_MODEL_TYPE = new ParameterizedTypeReference<DistributionTargetsCollectionRepresentationModel>() {
    };

    private final RestHelper restHelper;

    @Autowired
    WorkbasketControllerIntTest(RestHelper restHelper) {
        this.restHelper = restHelper;
    }

    @Test
    void testGetWorkbasket() {
        final String url = restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ID, "WBI:100000000000000000000000000000000006");
        ResponseEnreplacedy<WorkbasketRepresentationModel> response = TEMPLATE.exchange(url, HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isEqualTo(Optional.of(Link.of(url)));
        replacedertThat(response.getHeaders().getContentType()).isEqualTo(MediaTypes.HAL_JSON);
    }

    @Test
    void testGetAllWorkbaskets() {
        ResponseEnreplacedy<WorkbasketSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET), HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
    }

    @Test
    void testGetAllWorkbasketsBusinessAdminHasOpenPermission() {
        ResponseEnreplacedy<WorkbasketSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET) + "?required-permission=OPEN", HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(6);
    }

    @Test
    void testGetAllWorkbasketsKeepingFilters() {
        String parameters = "?type=PERSONAL&sort-by=KEY&order=DESCENDING";
        ResponseEnreplacedy<WorkbasketSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET) + parameters, HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.SELF).getHref().endsWith(parameters)).isTrue();
    }

    @Test
    void testUpdateWorkbasketWithConcurrentModificationShouldThrowException() {
        String workbasketId = "WBI:100000000000000000000000000000000001";
        ResponseEnreplacedy<WorkbasketRepresentationModel> initialWorkbasketResourceRequestResponse = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ID, workbasketId), HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersTeamlead_1()), WORKBASKET_REPRESENTATION_MODEL_TYPE);
        WorkbasketRepresentationModel workbasketRepresentationModel = initialWorkbasketResourceRequestResponse.getBody();
        replacedertThat(workbasketRepresentationModel).isNotNull();
        workbasketRepresentationModel.setKey("GPK_KSC");
        workbasketRepresentationModel.setDomain("DOMAIN_A");
        workbasketRepresentationModel.setType(WorkbasketType.PERSONAL);
        workbasketRepresentationModel.setName("was auch immer");
        workbasketRepresentationModel.setOwner("Joerg");
        workbasketRepresentationModel.setModified(Instant.now());
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ID, workbasketId), HttpMethod.PUT, new HttpEnreplacedy<>(workbasketRepresentationModel, restHelper.getHeadersTeamlead_1()), WORKBASKET_REPRESENTATION_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.CONFLICT);
    }

    @Test
    void testUpdateWorkbasketOfNonExistingWorkbasketShouldThrowException() {
        String workbasketId = "WBI:100004857400039500000999999999999999";
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ID, workbasketId), HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersBusinessAdmin()), WORKBASKET_REPRESENTATION_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
    }

    @Test
    void testGetSecondPageSortedByKey() {
        String parameters = "?sort-by=KEY&order=DESCENDING&page-size=5&page=2";
        ResponseEnreplacedy<WorkbasketSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET) + parameters, HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(5);
        replacedertThat(response.getBody().getContent().iterator().next().getKey()).isEqualTo("USER-1-1");
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.FIRST)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.LAST)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.NEXT)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.PREV)).isNotNull();
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.SELF).getHref().endsWith(parameters)).isTrue();
    }

    @Test
    void testMarkWorkbasketForDeletionAsBusinessAdminWithoutExplicitReadPermission() {
        String workbasketID = "WBI:100000000000000000000000000000000005";
        ResponseEnreplacedy<?> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ID, workbasketID), HttpMethod.DELETE, new HttpEnreplacedy<>(restHelper.getHeadersBusinessAdmin()), Void.clreplaced);
        replacedertThat(response.getStatusCode()).isEqualTo(HttpStatus.ACCEPTED);
    }

    @Test
    void statusCode423ShouldBeReturnedIfWorkbasketContainsNonCompletedTasks() {
        String workbasketWithNonCompletedTasks = "WBI:100000000000000000000000000000000004";
        ThrowingCallable call = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ID, workbasketWithNonCompletedTasks), HttpMethod.DELETE, new HttpEnreplacedy<>(restHelper.getHeadersBusinessAdmin()), Void.clreplaced);
        replacedertThatThrownBy(call).isInstanceOf(HttpClientErrorException.clreplaced).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.LOCKED);
    }

    @Test
    void testRemoveWorkbasketAsDistributionTarget() {
        ResponseEnreplacedy<?> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ID_DISTRIBUTION, "WBI:100000000000000000000000000000000007"), HttpMethod.DELETE, restHelper.defaultRequest(), Void.clreplaced);
        replacedertThat(response.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT);
        ResponseEnreplacedy<DistributionTargetsCollectionRepresentationModel> response2 = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ID_DISTRIBUTION, "WBI:100000000000000000000000000000000002"), HttpMethod.GET, restHelper.defaultRequest(), DISTRIBUTION_TARGETS_COLLECTION_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response2.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(response2.getBody()).isNotNull();
        replacedertThat(response2.getBody().getContent()).extracting(WorkbasketSummaryRepresentationModel::getWorkbasketId).doesNotContain("WBI:100000000000000000000000000000000007");
    }

    @Test
    void testGetWorkbasketAccessItems() {
        ResponseEnreplacedy<WorkbasketAccessItemCollectionRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ID_ACCESS_ITEMS, "WBI:100000000000000000000000000000000005"), HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_ACCESS_ITEM_COLLECTION_REPRESENTATION_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getHeaders().getContentType()).isEqualTo(MediaTypes.HAL_JSON);
        replacedertThat(response.getBody().getContent()).hreplacedize(3);
    }

    @Test
    void testGetWorkbasketDistributionTargets() {
        ResponseEnreplacedy<DistributionTargetsCollectionRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ID_DISTRIBUTION, "WBI:100000000000000000000000000000000001"), HttpMethod.GET, restHelper.defaultRequest(), DISTRIBUTION_TARGETS_COLLECTION_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getHeaders().getContentType()).isEqualTo(MediaTypes.HAL_JSON);
        replacedertThat(response.getBody().getContent()).hreplacedize(4);
    }

    @Test
    void should_ThrowException_When_ProvidingInvalidFilterParams() {
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET) + "?type=PERSONAL" + "&illegalParam=illegal" + "&anotherIllegalParam=stillIllegal" + "&sort-by=KEY&order=DESCENDING&page-size=5&page=2", HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("Unkown request parameters found: [anotherIllegalParam, illegalParam]").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }
}

19 View Source File : WorkbasketAccessItemControllerIntTest.java
License : Apache License 2.0
Project Creator : Taskana

/**
 * Test WorkbasketAccessItemController.
 */
@TestMethodOrder(MethodOrderer.MethodName.clreplaced)
@TaskanaSpringBootTest
clreplaced WorkbasketAccessItemControllerIntTest {

    private static final ParameterizedTypeReference<WorkbasketAccessItemPagedRepresentationModel> WORKBASKET_ACCESS_ITEM_PAGED_REPRESENTATION_MODEL_TYPE = new ParameterizedTypeReference<WorkbasketAccessItemPagedRepresentationModel>() {
    };

    private final RestHelper restHelper;

    @Autowired
    WorkbasketAccessItemControllerIntTest(RestHelper restHelper) {
        this.restHelper = restHelper;
    }

    @Test
    void testGetAllWorkbasketAccessItems() {
        ResponseEnreplacedy<WorkbasketAccessItemPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ACCESS_ITEMS), HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_ACCESS_ITEM_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
    }

    @Test
    void testGetWorkbasketAccessItemsKeepingFilters() {
        String parameters = "?sort-by=WORKBASKET_KEY&order=ASCENDING&page-size=9&access-id=user-1-1&page=1";
        ResponseEnreplacedy<WorkbasketAccessItemPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ACCESS_ITEMS) + parameters, HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_ACCESS_ITEM_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.SELF).getHref().endsWith(parameters)).isTrue();
    }

    @Test
    void testGetSecondPageSortedByWorkbasketKey() {
        String parameters = "?sort-by=WORKBASKET_KEY&order=ASCENDING&page=2&page-size=9&access-id=user-1-1";
        ResponseEnreplacedy<WorkbasketAccessItemPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ACCESS_ITEMS) + parameters, HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_ACCESS_ITEM_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(1);
        replacedertThat(response.getBody().getContent().iterator().next().getAccessId()).isEqualTo("user-1-1");
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.SELF).getHref().endsWith(parameters)).isTrue();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.FIRST)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.LAST)).isNotNull();
        replacedertThat(response.getBody().getPageMetadata().getSize()).isEqualTo(9);
        replacedertThat(response.getBody().getPageMetadata().getTotalElements()).isEqualTo(1);
        replacedertThat(response.getBody().getPageMetadata().getTotalPages()).isEqualTo(1);
        replacedertThat(response.getBody().getPageMetadata().getNumber()).isEqualTo(1);
    }

    @Test
    void should_DeleteAllAccessItemForUser_ifValidAccessIdOfUserIsSupplied() {
        String parameters = "?access-id=teamlead-2";
        ResponseEnreplacedy<Void> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ACCESS_ITEMS) + parameters, HttpMethod.DELETE, restHelper.defaultRequest(), ParameterizedTypeReference.forType(Void.clreplaced));
        replacedertThat(response.getBody()).isNull();
        replacedertThat(response.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT);
    }

    @Test
    void should_ThrowException_When_ProvidingInvalidFilterParams() {
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ACCESS_ITEMS) + "?access-id=teamlead-2" + "&illegalParam=illegal" + "&anotherIllegalParam=stillIllegal" + "&sort-by=WORKBASKET_KEY&order=DESCENDING&page-size=5&page=2", HttpMethod.GET, restHelper.defaultRequest(), WORKBASKET_ACCESS_ITEM_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("Unkown request parameters found: [anotherIllegalParam, illegalParam]").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }

    @TestFactory
    Stream<DynamicTest> should_ReturnBadRequest_When_AccessIdIsInvalid() {
        List<String> accessIds = List.of("cn=organisationseinheit ksc,cn=organisation,ou=test,o=taskana", "cn=monitor-users,cn=groups,ou=test,o=taskana", "user-1");
        ThrowingConsumer<String> test = accessId -> {
            String parameters = "?access-id=" + accessId;
            ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_WORKBASKET_ACCESS_ITEMS) + parameters, HttpMethod.DELETE, restHelper.defaultRequest(), ParameterizedTypeReference.forType(Void.clreplaced));
            replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
        };
        return DynamicTest.stream(accessIds.iterator(), s -> String.format("for user '%s'", s), test);
    }
}

19 View Source File : TaskControllerIntTest.java
License : Apache License 2.0
Project Creator : Taskana

/**
 * Test Task Controller.
 */
@TaskanaSpringBootTest
clreplaced TaskControllerIntTest {

    private static final ParameterizedTypeReference<TaskSummaryPagedRepresentationModel> TASK_SUMMARY_PAGE_MODEL_TYPE = new ParameterizedTypeReference<TaskSummaryPagedRepresentationModel>() {
    };

    private static final ParameterizedTypeReference<TaskSummaryCollectionRepresentationModel> TASK_SUMMARY_COLLECTION_MODEL_TYPE = new ParameterizedTypeReference<TaskSummaryCollectionRepresentationModel>() {
    };

    private static final ParameterizedTypeReference<TaskRepresentationModel> TASK_MODEL_TYPE = ParameterizedTypeReference.forType(TaskRepresentationModel.clreplaced);

    private static RestTemplate template;

    private final RestHelper restHelper;

    private final DataSource dataSource;

    private final String schemaName;

    @Autowired
    TaskControllerIntTest(RestHelper restHelper, DataSource dataSource, @Value("${taskana.schemaName:TASKANA}") String schemaName) {
        this.restHelper = restHelper;
        this.dataSource = dataSource;
        this.schemaName = schemaName;
    }

    @BeforeAll
    static void init() {
        template = RestHelper.TEMPLATE;
    }

    void resetDb() {
        SampleDataGenerator sampleDataGenerator = new SampleDataGenerator(dataSource, schemaName);
        sampleDataGenerator.generateSampleData();
    }

    @Test
    void testGetAllTasks() {
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS), HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(58);
    }

    @Test
    void testGetAllTasksByWorkbasketId() {
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?workbasket-id=WBI:100000000000000000000000000000000001", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(22);
    }

    @Test
    void testGetAllTasksByWorkbasketIdWithinMultiplePlannedTimeIntervals() {
        Instant firstInstant = Instant.now().minus(7, ChronoUnit.DAYS);
        Instant secondInstant = Instant.now().minus(10, ChronoUnit.DAYS);
        Instant thirdInstant = Instant.now().minus(10, ChronoUnit.DAYS);
        Instant fourthInstant = Instant.now().minus(11, ChronoUnit.DAYS);
        String parameters = String.format("?workbasket-id=WBI:100000000000000000000000000000000001" + "&planned=%s&planned=" + "&planned=%s&planned=%s" + "&planned=&planned=%s" + "&sort-by=PLANNED", firstInstant, secondInstant, thirdInstant, fourthInstant);
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + parameters, HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(6);
    }

    @Test
    void testGetAllTasksByWorkbasketIdWithinSinglePlannedTimeInterval() {
        Instant plannedFromInstant = Instant.now().minus(6, ChronoUnit.DAYS);
        Instant plannedToInstant = Instant.now().minus(3, ChronoUnit.DAYS);
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?workbasket-id=WBI:100000000000000000000000000000000001" + "&planned-from=" + plannedFromInstant + "&planned-until=" + plannedToInstant + "&sort-by=PLANNED", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(3);
    }

    @Test
    void testGetAllTasksByWorkbasketIdWithinSingleIndefinitePlannedTimeInterval() {
        Instant plannedFromInstant = Instant.now().minus(6, ChronoUnit.DAYS);
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?workbasket-id=WBI:100000000000000000000000000000000001" + "&planned-from=" + plannedFromInstant + "&sort-by=PLANNED", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(4);
    }

    @Test
    void testGetAllTasksByWorkbasketIdWithInvalidPlannedParamsCombination() {
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?workbasket-id=WBI:100000000000000000000000000000000001" + "&planned=2020-01-22T09:44:47.453Z,," + "2020-01-19T07:44:47.453Z,2020-01-19T19:44:47.453Z," + ",2020-01-18T09:44:47.453Z" + "&planned-from=2020-01-19T07:44:47.453Z" + "&sort-by=planned", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("400");
    }

    @Test
    void testGetAllTasksByWorkbasketIdWithinMultipleDueTimeIntervals() {
        Instant firstInstant = Instant.now().minus(7, ChronoUnit.DAYS);
        Instant secondInstant = Instant.now().minus(10, ChronoUnit.DAYS);
        Instant thirdInstant = Instant.now().minus(10, ChronoUnit.DAYS);
        Instant fourthInstant = Instant.now().minus(11, ChronoUnit.DAYS);
        String parameters = String.format("?workbasket-id=WBI:100000000000000000000000000000000001" + "&due=%s&due=" + "&due=%s&due=%s" + "&due=&due=%s" + "&sort-by=DUE", firstInstant, secondInstant, thirdInstant, fourthInstant);
        System.out.println(parameters);
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + parameters, HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(22);
    }

    @Test
    void should_ReturnAllTasksByWildcardSearch_For_ProvidedSearchValue() {
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?wildcard-search-value=99" + "&wildcard-search-fields=NAME" + "&wildcard-search-fields=CUSTOM_3" + "&wildcard-search-fields=CUSTOM_4", HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersAdmin()), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(4);
    }

    @Test
    void should_ThrowException_When_ProvidingInvalidFormatForCustomAttributes() {
        TaskRepresentationModel taskRepresentationModel = getTaskResourceSample();
        List<CustomAttribute> customAttributesWithNullKey = new ArrayList<>();
        customAttributesWithNullKey.add(CustomAttribute.of(null, "value"));
        taskRepresentationModel.setCustomAttributes(customAttributesWithNullKey);
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS), HttpMethod.POST, new HttpEnreplacedy<>(taskRepresentationModel, restHelper.getHeadersTeamlead_1()), TASK_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("Format of custom attributes is not valid").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
        List<CustomAttribute> customAttributesWithEmptyKey = new ArrayList<>();
        customAttributesWithEmptyKey.add(CustomAttribute.of("", "value"));
        taskRepresentationModel.setCustomAttributes(customAttributesWithEmptyKey);
        httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS), HttpMethod.POST, new HttpEnreplacedy<>(taskRepresentationModel, restHelper.getHeadersTeamlead_1()), TASK_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("Format of custom attributes is not valid").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
        List<CustomAttribute> customAttributesWithNullValue = new ArrayList<>();
        customAttributesWithNullValue.add(CustomAttribute.of("key", null));
        taskRepresentationModel.setCustomAttributes(customAttributesWithNullValue);
        httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS), HttpMethod.POST, new HttpEnreplacedy<>(taskRepresentationModel, restHelper.getHeadersTeamlead_1()), TASK_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("Format of custom attributes is not valid").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }

    @Test
    void should_DeleteAllTasks_For_ProvidedParams() {
        ResponseEnreplacedy<TaskSummaryCollectionRepresentationModel> response = template.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?task-id=TKI:000000000000000000000000000000000036" + "&task-id=TKI:000000000000000000000000000000000037" + "&task-id=TKI:000000000000000000000000000000000038" + "&custom14=abc", HttpMethod.DELETE, new HttpEnreplacedy<String>(restHelper.getHeadersAdmin()), TASK_SUMMARY_COLLECTION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(3);
    }

    @Test
    void should_ThrowException_When_ProvidingInvalidWildcardSearchParameters() {
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?wildcard-search-value=%rt%", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("400").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
        ThrowingCallable httpCall2 = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?wildcard-search-fields=NAME,CUSTOM_3,CUSTOM_4", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThatThrownBy(httpCall2).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("400").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }

    @Test
    void testGetAllTasksByWorkbasketIdWithinSingleDueTimeInterval() {
        Instant dueFromInstant = Instant.now().minus(8, ChronoUnit.DAYS);
        Instant dueToInstant = Instant.now().minus(3, ChronoUnit.DAYS);
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?workbasket-id=WBI:100000000000000000000000000000000001" + "&due-from=" + dueFromInstant + "&due-until=" + dueToInstant + "&sort-by=DUE", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(1);
    }

    @Test
    void testGetAllTasksByWorkbasketIdWithinSingleIndefiniteDueTimeInterval() {
        Instant dueToInstant = Instant.now().minus(1, ChronoUnit.DAYS);
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?workbasket-id=WBI:100000000000000000000000000000000001" + "&due-until=" + dueToInstant + "&sort-by=DUE", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(6);
    }

    @Test
    void testGetAllTasksByWorkbasketIdWithInvalidDueParamsCombination() {
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?workbasket-id=WBI:100000000000000000000000000000000001" + "&due=2020-01-22T09:44:47.453Z,," + "2020-01-19T07:44:47.453Z,2020-01-19T19:44:47.453Z," + ",2020-01-18T09:44:47.453Z" + "&due-from=2020-01-19T07:44:47.453Z" + "&sort-by=planned", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("400");
    }

    @Test
    void testGetAllTasksByWorkbasketKeyAndDomain() {
        HttpEnreplacedy<String> request = new HttpEnreplacedy<>(restHelper.getHeadersUser_1_2());
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?workbasket-key=USER-1-2&domain=DOMAIN_A", HttpMethod.GET, request, TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(20);
    }

    @Test
    void testGetAllTasksByExternalId() {
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?external-id=ETI:000000000000000000000000000000000003" + "&external-id=ETI:000000000000000000000000000000000004", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(2);
    }

    @Test
    void testExceptionIfKeyIsSetButDomainIsMissing() {
        HttpEnreplacedy<String> request = new HttpEnreplacedy<>(restHelper.getHeadersUser_1_2());
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?workbasket-key=USER-1-2", HttpMethod.GET, request, TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("400");
    }

    @Test
    void testGetAllTasksWithAdminRole() {
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS), HttpMethod.GET, new HttpEnreplacedy<>(restHelper.getHeadersAdmin()), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(88);
    }

    @Test
    void testGetAllTasksKeepingFilters() {
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?por.type=VNR&por.value=22334455&sort-by=POR_VALUE&order=DESCENDING", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.SELF).getHref()).endsWith("/api/v1/tasks?por.type=VNR&por.value=22334455" + "&sort-by=POR_VALUE&order=DESCENDING");
    }

    @Test
    void testGetLastPageSortedByPorValue() {
        HttpEnreplacedy<String> request = new HttpEnreplacedy<>(restHelper.getHeadersAdmin());
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?state=READY&state=CLAIMED&sort-by=POR_VALUE" + "&order=DESCENDING&page-size=5&page=16", HttpMethod.GET, request, TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getContent()).hreplacedize(3);
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.LAST).getHref()).contains("page=16");
        replacedertThat(response.getBody().getContent().iterator().next().getTaskId()).isEqualTo("TKI:000000000000000000000000000000000064");
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.SELF).getHref()).endsWith("/api/v1/tasks?state=READY&state=CLAIMED" + "&sort-by=POR_VALUE&order=DESCENDING&page-size=5&page=16");
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.FIRST)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.LAST)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.PREV)).isNotNull();
    }

    @Test
    void testGetLastPageSortedByDueWithHiddenTasksRemovedFromResult() {
        resetDb();
        // required because
        // ClreplacedificationControllerIntTest.testGetQueryByPorSecondPageSortedByType changes
        // tasks and this test depends on the tasks as they are in sampledata
        HttpEnreplacedy<String> request = new HttpEnreplacedy<>(restHelper.getHeadersTeamlead_1());
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?sort-by=DUE&order=DESCENDING", HttpMethod.GET, request, TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getContent()).hreplacedize(58);
        response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?sort-by=DUE&order=DESCENDING&page-size=5&page=5", HttpMethod.GET, request, TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat((response.getBody()).getContent()).hreplacedize(5);
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.LAST).getHref()).contains("page=12");
        replacedertThat(response.getBody().getContent().iterator().next().getTaskId()).isEqualTo("TKI:000000000000000000000000000000000073");
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.SELF).getHref()).endsWith("/api/v1/tasks?sort-by=DUE&order=DESCENDING&page-size=5&page=5");
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.FIRST)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.LAST)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.PREV)).isNotNull();
    }

    @Test
    void testGetQueryByPorSecondPageSortedByType() {
        // required because
        resetDb();
        // ClreplacedificationControllerIntTest.testGetQueryByPorSecondPageSortedByType changes
        // tasks and this test depends on the tasks as they are in sampledata
        HttpEnreplacedy<String> request = new HttpEnreplacedy<>(restHelper.getHeadersTeamlead_1());
        ResponseEnreplacedy<TaskSummaryPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?por.company=00&por.system=PASystem&por.instance=00&" + "por.type=VNR&por.value=22334455&sort-by=POR_TYPE&" + "order=ASCENDING&page-size=5&page=2", HttpMethod.GET, request, TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getContent()).extracting(TaskSummaryRepresentationModel::getTaskId).containsExactlyInAnyOrder("TKI:000000000000000000000000000000000013");
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.SELF).getHref()).endsWith("/api/v1/tasks?por.company=00&por.system=PASystem&por.instance=00&" + "por.type=VNR&por.value=22334455&sort-by=POR_TYPE&order=ASCENDING&" + "page-size=5&page=2");
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.FIRST)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.LAST)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.PREV)).isNotNull();
    }

    @Test
    void should_NotGetEmptyAttachmentList_When_GettingTaskWithAttachment() {
        ResponseEnreplacedy<TaskRepresentationModel> response = template.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID, "TKI:000000000000000000000000000000000002"), HttpMethod.GET, new HttpEnreplacedy<>(restHelper.getHeadersAdmin()), TASK_MODEL_TYPE);
        TaskRepresentationModel repModel = response.getBody();
        replacedertThat(repModel).isNotNull();
        replacedertThat(repModel.getAttachments()).isNotEmpty();
        replacedertThat(repModel.getAttachments()).isNotNull();
    }

    @Test
    void should_ChangeValueOfModified_When_UpdatingTask() {
        ResponseEnreplacedy<TaskRepresentationModel> responseGet = template.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID, "TKI:100000000000000000000000000000000000"), HttpMethod.GET, new HttpEnreplacedy<>(restHelper.getHeadersTeamlead_1()), TASK_MODEL_TYPE);
        final TaskRepresentationModel originalTask = responseGet.getBody();
        ResponseEnreplacedy<TaskRepresentationModel> responseUpdate = template.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID, "TKI:100000000000000000000000000000000000"), HttpMethod.PUT, new HttpEnreplacedy<>(originalTask, restHelper.getHeadersTeamlead_1()), TASK_MODEL_TYPE);
        TaskRepresentationModel updatedTask = responseUpdate.getBody();
        replacedertThat(originalTask).isNotNull();
        replacedertThat(updatedTask).isNotNull();
        replacedertThat(originalTask.getModified()).isBefore(updatedTask.getModified());
    }

    @Test
    void testCreateAndDeleteTask() {
        TaskRepresentationModel taskRepresentationModel = getTaskResourceSample();
        ResponseEnreplacedy<TaskRepresentationModel> responseCreate = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS), HttpMethod.POST, new HttpEnreplacedy<>(taskRepresentationModel, restHelper.getHeadersTeamlead_1()), TASK_MODEL_TYPE);
        replacedertThat(responseCreate.getStatusCode()).isEqualTo(HttpStatus.CREATED);
        replacedertThat(responseCreate.getBody()).isNotNull();
        String taskIdOfCreatedTask = responseCreate.getBody().getTaskId();
        replacedertThat(taskIdOfCreatedTask).isNotNull();
        replacedertThat(taskIdOfCreatedTask).startsWith("TKI:");
        ResponseEnreplacedy<TaskRepresentationModel> responseDeleted = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID, taskIdOfCreatedTask), HttpMethod.DELETE, new HttpEnreplacedy<>(restHelper.getHeadersAdmin()), ParameterizedTypeReference.forType(Void.clreplaced));
        replacedertThat(responseDeleted.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT);
    }

    /**
     * TSK-926: If Planned and Due Date is provided to create a task and not matching to service level
     * throw an exception One is calculated by other other date +- service level.
     */
    @Test
    void testCreateWithPlannedAndDueDate() {
        TaskRepresentationModel taskRepresentationModel = getTaskResourceSample();
        Instant now = Instant.now();
        taskRepresentationModel.setPlanned(now);
        taskRepresentationModel.setDue(now);
        ThrowingCallable httpCall = () -> template.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS), HttpMethod.POST, new HttpEnreplacedy<>(taskRepresentationModel, restHelper.getHeadersUser_1_1()), TASK_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced);
    }

    @Test
    void testCreateTaskWithInvalidParameter() throws Exception {
        final String taskToCreateJson = "{\"clreplacedificationKey\":\"L11010\"," + "\"workbasketSummaryResource\":" + "{\"workbasketId\":\"WBI:100000000000000000000000000000000004\"}," + "\"primaryObjRef\":{\"company\":\"MyCompany1\",\"system\":\"MySystem1\"," + "\"systemInstance\":\"MyInstance1\",\"type\":\"MyType1\",\"value\":\"00000001\"}}";
        URL url = new URL(restHelper.toUrl(RestEndpoints.URL_TASKS));
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("POST");
        con.setDoOutput(true);
        con.setRequestProperty("Authorization", RestHelper.AUTHORIZATION_TEAMLEAD_1);
        con.setRequestProperty("Content-Type", "application/json");
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(con.getOutputStream(), UTF_8));
        out.write(taskToCreateJson);
        out.flush();
        out.close();
        replacedertThat(con.getResponseCode()).isEqualTo(400);
        con.disconnect();
        final String taskToCreateJson2 = "{\"clreplacedificationSummaryResource\":" + "{\"clreplacedificationId\":\"CLI:100000000000000000000000000000000004\"}," + "\"workbasketSummaryResource\":{\"workbasketId\":\"\"}," + "\"primaryObjRef\":{\"company\":\"MyCompany1\",\"system\":\"MySystem1\"," + "\"systemInstance\":\"MyInstance1\",\"type\":\"MyType1\",\"value\":\"00000001\"}}";
        url = new URL(restHelper.toUrl(RestEndpoints.URL_TASKS));
        con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("POST");
        con.setDoOutput(true);
        con.setRequestProperty("Authorization", RestHelper.AUTHORIZATION_TEAMLEAD_1);
        con.setRequestProperty("Content-Type", "application/json");
        out = new BufferedWriter(new OutputStreamWriter(con.getOutputStream(), UTF_8));
        out.write(taskToCreateJson2);
        out.flush();
        out.close();
        replacedertThat(con.getResponseCode()).isEqualTo(400);
        con.disconnect();
    }

    @Test
    void should_CancelTask_when_CallingCancelEndpoint() {
        final String claimed_task_id = "TKI:000000000000000000000000000000000026";
        // retrieve task from Rest Api
        ResponseEnreplacedy<TaskRepresentationModel> responseGet = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID, claimed_task_id), HttpMethod.GET, new HttpEnreplacedy<>(restHelper.getHeadersUser_1_2()), TASK_MODEL_TYPE);
        replacedertThat(responseGet.getBody()).isNotNull();
        TaskRepresentationModel theTaskRepresentationModel = responseGet.getBody();
        replacedertThat(theTaskRepresentationModel.getState()).isEqualTo(TaskState.CLAIMED);
        // cancel the task
        responseGet = template.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID_CANCEL, claimed_task_id), HttpMethod.POST, new HttpEnreplacedy<>(restHelper.getHeadersUser_1_2()), TASK_MODEL_TYPE);
        replacedertThat(responseGet.getBody()).isNotNull();
        theTaskRepresentationModel = responseGet.getBody();
        replacedertThat(theTaskRepresentationModel.getState()).isEqualTo(TaskState.CANCELLED);
    }

    @Test
    void testCancelClaimTask() {
        final String claimed_task_id = "TKI:000000000000000000000000000000000027";
        final String user_id_of_claimed_task = "user-1-2";
        // retrieve task from Rest Api
        ResponseEnreplacedy<TaskRepresentationModel> getTaskResponse = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID, claimed_task_id), HttpMethod.GET, new HttpEnreplacedy<>(restHelper.getHeadersUser_1_2()), TASK_MODEL_TYPE);
        replacedertThat(getTaskResponse.getBody()).isNotNull();
        TaskRepresentationModel claimedTaskRepresentationModel = getTaskResponse.getBody();
        replacedertThat(claimedTaskRepresentationModel.getState()).isEqualTo(TaskState.CLAIMED);
        replacedertThat(claimedTaskRepresentationModel.getOwner()).isEqualTo(user_id_of_claimed_task);
        // cancel claim
        ResponseEnreplacedy<TaskRepresentationModel> cancelClaimResponse = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID_CLAIM, claimed_task_id), HttpMethod.DELETE, new HttpEnreplacedy<>(restHelper.getHeadersUser_1_2()), TASK_MODEL_TYPE);
        replacedertThat(cancelClaimResponse.getBody()).isNotNull();
        replacedertThat(cancelClaimResponse.getStatusCode().is2xxSuccessful()).isTrue();
        TaskRepresentationModel cancelClaimedtaskRepresentationModel = cancelClaimResponse.getBody();
        replacedertThat(cancelClaimedtaskRepresentationModel.getOwner()).isNull();
        replacedertThat(cancelClaimedtaskRepresentationModel.getClaimed()).isNull();
        replacedertThat(cancelClaimedtaskRepresentationModel.getState()).isEqualTo(TaskState.READY);
    }

    @Test
    void testCancelClaimOfClaimedTaskByAnotherUserShouldThrowException() {
        final String claimed_task_id = "TKI:000000000000000000000000000000000026";
        final String user_id_of_claimed_task = "user-1-1";
        // retrieve task from Rest Api
        ResponseEnreplacedy<TaskRepresentationModel> responseGet = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID, claimed_task_id), HttpMethod.GET, new HttpEnreplacedy<>(restHelper.getHeadersUser_1_2()), TASK_MODEL_TYPE);
        replacedertThat(responseGet.getBody()).isNotNull();
        TaskRepresentationModel theTaskRepresentationModel = responseGet.getBody();
        replacedertThat(theTaskRepresentationModel.getState()).isEqualTo(TaskState.CLAIMED);
        replacedertThat(theTaskRepresentationModel.getOwner()).isEqualTo(user_id_of_claimed_task);
        // try to cancel claim
        ThrowingCallable httpCall = () -> template.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID_CLAIM, claimed_task_id), HttpMethod.DELETE, new HttpEnreplacedy<>(restHelper.getHeadersUser_1_2()), TASK_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.CONFLICT);
    }

    @Test
    void testUpdateTaskOwnerOfReadyTaskSucceeds() {
        // setup
        final String taskUrlString = restHelper.toUrl("/api/v1/tasks/TKI:000000000000000000000000000000000025");
        // retrieve task from Rest Api
        ResponseEnreplacedy<TaskRepresentationModel> responseGet = TEMPLATE.exchange(taskUrlString, HttpMethod.GET, new HttpEnreplacedy<>(restHelper.getHeadersUser_1_2()), TASK_MODEL_TYPE);
        replacedertThat(responseGet.getBody()).isNotNull();
        TaskRepresentationModel theTaskRepresentationModel = responseGet.getBody();
        replacedertThat(theTaskRepresentationModel.getState()).isEqualTo(TaskState.READY);
        replacedertThat(theTaskRepresentationModel.getOwner()).isNull();
        // set Owner and update Task
        final String anyUserName = "dummyUser";
        theTaskRepresentationModel.setOwner(anyUserName);
        ResponseEnreplacedy<TaskRepresentationModel> responseUpdate = TEMPLATE.exchange(taskUrlString, HttpMethod.PUT, new HttpEnreplacedy<>(theTaskRepresentationModel, restHelper.getHeadersUser_1_2()), TASK_MODEL_TYPE);
        replacedertThat(responseUpdate.getBody()).isNotNull();
        TaskRepresentationModel theUpdatedTaskRepresentationModel = responseUpdate.getBody();
        replacedertThat(theUpdatedTaskRepresentationModel.getState()).isEqualTo(TaskState.READY);
        replacedertThat(theUpdatedTaskRepresentationModel.getOwner()).isEqualTo(anyUserName);
    }

    @Test
    void testUpdateTaskOwnerOfClaimedTaskFails() {
        // setup
        final String taskUrlString = restHelper.toUrl("/api/v1/tasks/TKI:000000000000000000000000000000000026");
        // retrieve task from Rest Api
        ResponseEnreplacedy<TaskRepresentationModel> responseGet = TEMPLATE.exchange(taskUrlString, HttpMethod.GET, new HttpEnreplacedy<>(restHelper.getHeadersUser_1_2()), TASK_MODEL_TYPE);
        replacedertThat(responseGet.getBody()).isNotNull();
        TaskRepresentationModel theTaskRepresentationModel = responseGet.getBody();
        replacedertThat(theTaskRepresentationModel.getState()).isEqualTo(TaskState.CLAIMED);
        replacedertThat(theTaskRepresentationModel.getOwner()).isEqualTo("user-1-1");
        // set Owner and update Task
        final String anyUserName = "dummyuser";
        theTaskRepresentationModel.setOwner(anyUserName);
        ThrowingCallable httpCall = () -> template.exchange(taskUrlString, HttpMethod.PUT, new HttpEnreplacedy<>(theTaskRepresentationModel, restHelper.getHeadersUser_1_2()), TASK_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("409");
    }

    @Test
    void should_ThrowNotAuthorized_When_UserHasNoAuthorizationOnTask() {
        String url = restHelper.toUrl(RestEndpoints.URL_TASKS_ID, "TKI:000000000000000000000000000000000000");
        ThrowingCallable httpCall = () -> template.exchange(url, HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersUser_b_1()), ParameterizedTypeReference.forType(TaskRepresentationModel.clreplaced));
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
    }

    @Test
    void should_ThrowException_When_ProvidingInvalidFilterParams() {
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS) + "?workbasket-id=WBI:100000000000000000000000000000000001" + "&illegalParam=illegal" + "&anotherIllegalParam=stillIllegal" + "&sort-by=NAME&order=DESCENDING&page-size=5&page=2", HttpMethod.GET, restHelper.defaultRequest(), TASK_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("Unkown request parameters found: [anotherIllegalParam, illegalParam]").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }

    @TestFactory
    Stream<DynamicTest> should_SetTransferFlagDependentOnRequestBody_When_TransferringTask() {
        Iterator<Boolean> iterator = Arrays.asList(true, false).iterator();
        ThrowingConsumer<Boolean> test = setTransferFlag -> {
            ResponseEnreplacedy<TaskRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID_TRANSFER_WORKBASKET_ID, "TKI:000000000000000000000000000000000003", "WBI:100000000000000000000000000000000006"), HttpMethod.POST, new HttpEnreplacedy<>(setTransferFlag.toString(), restHelper.getHeadersAdmin()), TASK_MODEL_TYPE);
            TaskRepresentationModel task = response.getBody();
            replacedertThat(task).isNotNull();
            replacedertThat(task.getWorkbasketSummary().getWorkbasketId()).isEqualTo("WBI:100000000000000000000000000000000006");
            replacedertThat(task.isTransferred()).isEqualTo(setTransferFlag);
        };
        return DynamicTest.stream(iterator, c -> "for setTransferFlag: " + c, test);
    }

    @Test
    void should_SetTransferFlagToTrue_When_TransferringWithoutRequestBody() {
        ResponseEnreplacedy<TaskRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASKS_ID_TRANSFER_WORKBASKET_ID, "TKI:000000000000000000000000000000000003", "WBI:100000000000000000000000000000000006"), HttpMethod.POST, new HttpEnreplacedy<>(restHelper.getHeadersAdmin()), TASK_MODEL_TYPE);
        TaskRepresentationModel task = response.getBody();
        replacedertThat(task).isNotNull();
        replacedertThat(task.getWorkbasketSummary().getWorkbasketId()).isEqualTo("WBI:100000000000000000000000000000000006");
        replacedertThat(task.isTransferred()).isTrue();
    }

    private TaskRepresentationModel getTaskResourceSample() {
        ClreplacedificationSummaryRepresentationModel clreplacedificationResource = new ClreplacedificationSummaryRepresentationModel();
        clreplacedificationResource.setKey("L11010");
        WorkbasketSummaryRepresentationModel workbasketSummary = new WorkbasketSummaryRepresentationModel();
        workbasketSummary.setWorkbasketId("WBI:100000000000000000000000000000000004");
        ObjectReferenceRepresentationModel objectReference = new ObjectReferenceRepresentationModel();
        objectReference.setCompany("MyCompany1");
        objectReference.setSystem("MySystem1");
        objectReference.setSystemInstance("MyInstance1");
        objectReference.setType("MyType1");
        objectReference.setValue("00000001");
        TaskRepresentationModel taskRepresentationModel = new TaskRepresentationModel();
        taskRepresentationModel.setClreplacedificationSummary(clreplacedificationResource);
        taskRepresentationModel.setWorkbasketSummary(workbasketSummary);
        taskRepresentationModel.setPrimaryObjRef(objectReference);
        return taskRepresentationModel;
    }
}

19 View Source File : TaskCommentControllerIntTest.java
License : Apache License 2.0
Project Creator : Taskana

/**
 * Test TaskCommentController.
 */
@TaskanaSpringBootTest
clreplaced TaskCommentControllerIntTest {

    private static final ParameterizedTypeReference<TaskCommentCollectionRepresentationModel> TASK_COMMENT_PAGE_MODEL_TYPE = new ParameterizedTypeReference<TaskCommentCollectionRepresentationModel>() {
    };

    private final RestHelper restHelper;

    @Autowired
    TaskCommentControllerIntTest(RestHelper restHelper) {
        this.restHelper = restHelper;
    }

    @Test
    void should_FailToReturnTaskComment_When_TaskCommentIsNotExisting() {
        String urlToNonExistingTaskComment = restHelper.toUrl(RestEndpoints.URL_TASK_COMMENT, "Non existing task comment Id");
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(urlToNonExistingTaskComment, HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersAdmin()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
    }

    @Test
    void should_FailToReturnTaskComments_When_TaskIstNotVisible() {
        String urlToNotVisibleTask = restHelper.toUrl(RestEndpoints.URL_TASK_COMMENTS, "TKI:000000000000000000000000000000000004");
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(urlToNotVisibleTask, HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersUser_1_1()), TASK_COMMENT_PAGE_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
    }

    @Test
    void should_ReturnSortedAndOrederedTaskCommentsSortedByModified_When_UsingSortAndOrderParams() {
        String url = restHelper.toUrl(RestEndpoints.URL_TASK_COMMENTS, "TKI:000000000000000000000000000000000000");
        ResponseEnreplacedy<TaskCommentCollectionRepresentationModel> getTaskCommentsSortedByModifiedOrderedByDescendingResponse = TEMPLATE.exchange(url + "?sort-by=MODIFIED&order=DESCENDING", HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersAdmin()), TASK_COMMENT_PAGE_MODEL_TYPE);
        replacedertThat(getTaskCommentsSortedByModifiedOrderedByDescendingResponse.getBody()).isNotNull();
        replacedertThat(getTaskCommentsSortedByModifiedOrderedByDescendingResponse.getBody().getContent()).hreplacedize(3).extracting(TaskCommentRepresentationModel::getModified).isSortedAccordingTo(Comparator.reverseOrder());
        ResponseEnreplacedy<TaskCommentCollectionRepresentationModel> getTaskCommentsSortedByModifiedOrderedByAscendingResponse = TEMPLATE.exchange(url + "?sort-by=MODIFIED", HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersAdmin()), TASK_COMMENT_PAGE_MODEL_TYPE);
        replacedertThat(getTaskCommentsSortedByModifiedOrderedByAscendingResponse.getBody()).isNotNull();
        replacedertThat(getTaskCommentsSortedByModifiedOrderedByAscendingResponse.getBody().getContent()).hreplacedize(3).extracting(TaskCommentRepresentationModel::getModified).isSortedAccordingTo(Comparator.naturalOrder());
        ResponseEnreplacedy<TaskCommentCollectionRepresentationModel> getTaskCommentsSortedByCreatedOrderedByDescendingResponse = TEMPLATE.exchange(url + "?sort-by=CREATED&order=DESCENDING", HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersAdmin()), TASK_COMMENT_PAGE_MODEL_TYPE);
        replacedertThat(getTaskCommentsSortedByCreatedOrderedByDescendingResponse.getBody()).isNotNull();
        replacedertThat(getTaskCommentsSortedByCreatedOrderedByDescendingResponse.getBody().getContent()).hreplacedize(3).extracting(TaskCommentRepresentationModel::getCreated).isSortedAccordingTo(Comparator.reverseOrder());
        ResponseEnreplacedy<TaskCommentCollectionRepresentationModel> getTaskCommentsSortedByCreatedOrderedByAscendingResponse = TEMPLATE.exchange(url + "?sort-by=CREATED", HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersAdmin()), TASK_COMMENT_PAGE_MODEL_TYPE);
        replacedertThat(getTaskCommentsSortedByCreatedOrderedByAscendingResponse.getBody()).isNotNull();
        replacedertThat(getTaskCommentsSortedByCreatedOrderedByAscendingResponse.getBody().getContent()).hreplacedize(3).extracting(TaskCommentRepresentationModel::getCreated).isSortedAccordingTo(Comparator.naturalOrder());
    }

    @Test
    void should_ThrowException_When_UsingInvalidSortParam() {
        String url = restHelper.toUrl(RestEndpoints.URL_TASK_COMMENTS, "TKI:000000000000000000000000000000000000");
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(url + "?sort-by=invalidSortParam", HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersUser_1_1()), TASK_COMMENT_PAGE_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }

    @Test
    void should_FailToReturnTaskComment_When_TaskIstNotVisible() {
        String urlToNotVisibleTask = restHelper.toUrl(RestEndpoints.URL_TASK_COMMENT, "TCI:000000000000000000000000000000000012");
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(urlToNotVisibleTask, HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersUser_1_2()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
    }

    @Test
    void should_FailToCreateTaskComment_When_TaskIsNotVisible() {
        TaskCommentRepresentationModel taskCommentRepresentationModelToCreate = new TaskCommentRepresentationModel();
        taskCommentRepresentationModelToCreate.setTaskId("TKI:000000000000000000000000000000000000");
        taskCommentRepresentationModelToCreate.setTextField("newly created task comment");
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASK_COMMENTS, "TKI:000000000000000000000000000000000000"), HttpMethod.POST, new HttpEnreplacedy<>(taskCommentRepresentationModelToCreate, restHelper.getHeadersUser_b_1()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
    }

    @Test
    void should_FailToCreateTaskComment_When_TaskIdIsNonExisting() {
        TaskCommentRepresentationModel taskCommentRepresentationModelToCreate = new TaskCommentRepresentationModel();
        taskCommentRepresentationModelToCreate.setTaskId("DefinatelyNotExistingId");
        taskCommentRepresentationModelToCreate.setTextField("newly created task comment");
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASK_COMMENTS, "DefinatelyNotExistingId"), HttpMethod.POST, new HttpEnreplacedy<>(taskCommentRepresentationModelToCreate, restHelper.getHeadersAdmin()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
    }

    @Test
    void should_FailToUpdateTaskComment_When_TaskCommentWasModifiedConcurrently() {
        String url = restHelper.toUrl(RestEndpoints.URL_TASK_COMMENT, "TCI:000000000000000000000000000000000000");
        ResponseEnreplacedy<TaskCommentRepresentationModel> getTaskCommentResponse = TEMPLATE.exchange(url, HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersAdmin()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        TaskCommentRepresentationModel taskCommentToUpdate = getTaskCommentResponse.getBody();
        replacedertThat(taskCommentToUpdate).isNotNull();
        replacedertThat(taskCommentToUpdate.getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(taskCommentToUpdate.getCreator()).isEqualTo("user-1-1");
        replacedertThat(taskCommentToUpdate.getTextField()).isEqualTo("some text in textfield");
        taskCommentToUpdate.setModified(Instant.now());
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(url, HttpMethod.PUT, new HttpEnreplacedy<>(taskCommentToUpdate, restHelper.getHeadersUser_1_1()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.CONFLICT);
    }

    @Test
    void should_FailToUpdateTaskComment_When_UserHasNoAuthorization() {
        String url = restHelper.toUrl(RestEndpoints.URL_TASK_COMMENT, "TCI:000000000000000000000000000000000000");
        ResponseEnreplacedy<TaskCommentRepresentationModel> getTaskCommentResponse = TEMPLATE.exchange(url, HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersUser_1_1()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        TaskCommentRepresentationModel taskComment = getTaskCommentResponse.getBody();
        replacedertThat(taskComment).isNotNull();
        replacedertThat(taskComment.getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(taskComment.getCreator()).isEqualTo("user-1-1");
        replacedertThat(taskComment.getTextField()).isEqualTo("some text in textfield");
        taskComment.setTextField("updated textfield");
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(url, HttpMethod.PUT, new HttpEnreplacedy<>(taskComment, restHelper.getHeadersUser_1_2()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
    }

    @Test
    void should_FailToUpdateTaskComment_When_TaskCommentIdInResourceDoesNotMatchPathVariable() {
        String url = restHelper.toUrl(RestEndpoints.URL_TASK_COMMENT, "TCI:000000000000000000000000000000000000");
        ResponseEnreplacedy<TaskCommentRepresentationModel> getTaskCommentResponse = TEMPLATE.exchange(url, HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersAdmin()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        replacedertThat(getTaskCommentResponse.getBody()).isNotNull();
        replacedertThat(getTaskCommentResponse.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(getTaskCommentResponse.getBody().getCreator()).isEqualTo("user-1-1");
        replacedertThat(getTaskCommentResponse.getBody().getTextField()).isEqualTo("some text in textfield");
        TaskCommentRepresentationModel taskCommentRepresentationModelToUpdate = getTaskCommentResponse.getBody();
        taskCommentRepresentationModelToUpdate.setTextField("updated text");
        taskCommentRepresentationModelToUpdate.setTaskCommentId("DifferentTaskCommentId");
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(url, HttpMethod.PUT, new HttpEnreplacedy<>(taskCommentRepresentationModelToUpdate, restHelper.getHeadersUser_1_1()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }

    @Test
    void should_FailToDeleteTaskComment_When_UserHasNoAuthorization() {
        ResponseEnreplacedy<TaskCommentCollectionRepresentationModel> getTaskCommentsBeforeDeleteionResponse = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_TASK_COMMENTS, "TKI:000000000000000000000000000000000001"), HttpMethod.GET, new HttpEnreplacedy<String>(restHelper.getHeadersUser_1_2()), TASK_COMMENT_PAGE_MODEL_TYPE);
        replacedertThat(getTaskCommentsBeforeDeleteionResponse.getBody()).isNotNull();
        replacedertThat(getTaskCommentsBeforeDeleteionResponse.getBody().getContent()).hreplacedize(2);
        String url = restHelper.toUrl(RestEndpoints.URL_TASK_COMMENT, "TCI:000000000000000000000000000000000004");
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(url, HttpMethod.DELETE, new HttpEnreplacedy<String>(restHelper.getHeadersUser_1_2()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("TaskComment creator and current user must match.").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
    }

    @Test
    void should_FailToDeleteTaskComment_When_TaskCommentIsNotExisting() {
        String url = restHelper.toUrl(RestEndpoints.URL_TASK_COMMENT, "NotExistingTaskComment");
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(url, HttpMethod.DELETE, new HttpEnreplacedy<String>(restHelper.getHeadersAdmin()), ParameterizedTypeReference.forType(TaskCommentRepresentationModel.clreplaced));
        replacedertThatThrownBy(httpCall).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
    }
}

19 View Source File : AccessIdControllerIntTest.java
License : Apache License 2.0
Project Creator : Taskana

@TaskanaSpringBootTest
clreplaced AccessIdControllerIntTest {

    private static final ParameterizedTypeReference<List<AccessIdRepresentationModel>> ACCESS_ID_LIST_TYPE = new ParameterizedTypeReference<List<AccessIdRepresentationModel>>() {
    };

    private final RestHelper restHelper;

    @Autowired
    AccessIdControllerIntTest(RestHelper restHelper) {
        this.restHelper = restHelper;
    }

    @Test
    void testQueryGroupsByDn() {
        ResponseEnreplacedy<List<AccessIdRepresentationModel>> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID) + "?search-for=cn=ksc-users,cn=groups,OU=Test,O=TASKANA", HttpMethod.GET, restHelper.defaultRequest(), ACCESS_ID_LIST_TYPE);
        replacedertThat(response.getBody()).isNotNull().extracting(AccessIdRepresentationModel::getAccessId).usingElementComparator(String.CASE_INSENSITIVE_ORDER).containsExactly("cn=ksc-users,cn=groups,OU=Test,O=TASKANA");
    }

    @Test
    void testQueryUserByDn() {
        ResponseEnreplacedy<List<AccessIdRepresentationModel>> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID) + "?search-for=uid=teamlead-1,cn=users,OU=Test,O=TASKANA", HttpMethod.GET, restHelper.defaultRequest(), ACCESS_ID_LIST_TYPE);
        replacedertThat(response.getBody()).isNotNull().extracting(AccessIdRepresentationModel::getAccessId).usingElementComparator(String.CASE_INSENSITIVE_ORDER).containsExactly("teamlead-1");
    }

    @Test
    void testQueryGroupsByCn() {
        ResponseEnreplacedy<List<AccessIdRepresentationModel>> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID) + "?search-for=ksc-use", HttpMethod.GET, restHelper.defaultRequest(), ACCESS_ID_LIST_TYPE);
        replacedertThat(response.getBody()).isNotNull().extracting(AccessIdRepresentationModel::getAccessId).usingElementComparator(String.CASE_INSENSITIVE_ORDER).containsExactly("cn=ksc-users,cn=groups,OU=Test,O=TASKANA");
    }

    @Test
    void should_ReturnEmptyResults_ifInvalidCharacterIsUsedInCondition() {
        ResponseEnreplacedy<List<AccessIdRepresentationModel>> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID) + "?search-for=ksc-teamleads,cn=groups", HttpMethod.GET, restHelper.defaultRequest(), ACCESS_ID_LIST_TYPE);
        replacedertThat(response.getBody()).isNotNull().isEmpty();
    }

    @Test
    void testGetMatches() {
        ResponseEnreplacedy<List<AccessIdRepresentationModel>> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID) + "?search-for=rig", HttpMethod.GET, restHelper.defaultRequest(), ACCESS_ID_LIST_TYPE);
        replacedertThat(response.getBody()).isNotNull().extracting(AccessIdRepresentationModel::getName).containsExactlyInAnyOrder("Schläfrig, Tim", "Eifrig, Elena");
    }

    @Test
    void should_ReturnAccessIdWithUmlauten_ifBased64EncodedUserIsLookedUp() {
        ResponseEnreplacedy<List<AccessIdRepresentationModel>> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID) + "?search-for=läf", HttpMethod.GET, restHelper.defaultRequest(), ACCESS_ID_LIST_TYPE);
        replacedertThat(response.getBody()).isNotNull().extracting(AccessIdRepresentationModel::getName).containsExactlyInAnyOrder("Schläfrig, Tim");
    }

    @Test
    void should_ThrowException_When_SearchForIsTooShort() {
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID) + "?search-for=al", HttpMethod.GET, restHelper.defaultRequest(), ParameterizedTypeReference.forType(List.clreplaced));
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("Minimum Length is").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }

    @Test
    void should_ReturnAccessIdsOfGroupsTheAccessIdIsMemberOf_ifAccessIdOfUserIsGiven() {
        ResponseEnreplacedy<List<AccessIdRepresentationModel>> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID_GROUPS) + "?access-id=teamlead-2", HttpMethod.GET, restHelper.defaultRequest(), ACCESS_ID_LIST_TYPE);
        replacedertThat(response.getBody()).isNotNull().extracting(AccessIdRepresentationModel::getAccessId).usingElementComparator(String.CASE_INSENSITIVE_ORDER).containsExactlyInAnyOrder("cn=ksc-teamleads,cn=groups,OU=Test,O=TASKANA", "cn=business-admins,cn=groups,OU=Test,O=TASKANA", "cn=monitor-users,cn=groups,OU=Test,O=TASKANA", "cn=Organisationseinheit KSC 2," + "cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA");
    }

    @Test
    void should_ValidateAccessIdWithEqualsFilterAndReturnAccessIdsOfGroupsTheAccessIdIsMemberOf() {
        ResponseEnreplacedy<List<AccessIdRepresentationModel>> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID_GROUPS) + "?access-id=user-2-1", HttpMethod.GET, restHelper.defaultRequest(), ACCESS_ID_LIST_TYPE);
        replacedertThat(response.getBody()).isNotNull().extracting(AccessIdRepresentationModel::getAccessId).usingElementComparator(String.CASE_INSENSITIVE_ORDER).containsExactlyInAnyOrder("cn=ksc-users,cn=groups,ou=Test,O=TASKANA", "cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC," + "cn=organisation,ou=Test,O=TASKANA");
    }

    @Test
    void should_ReturnBadRequest_ifAccessIdOfUserContainsInvalidCharacter() {
        ThrowingCallable call = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID_GROUPS) + "?access-id=teamlead-2,cn=users", HttpMethod.GET, restHelper.defaultRequest(), ACCESS_ID_LIST_TYPE);
        replacedertThatThrownBy(call).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("The accessId is invalid").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }

    @Test
    void should_ReturnAccessIdsOfGroupsTheAccessIdIsMemberOf_ifAccessIdOfGroupIsGiven() {
        ResponseEnreplacedy<List<AccessIdRepresentationModel>> response = TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID_GROUPS) + "?access-id=cn=Organisationseinheit KSC 1," + "cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA", HttpMethod.GET, restHelper.defaultRequest(), ACCESS_ID_LIST_TYPE);
        replacedertThat(response.getBody()).isNotNull().extracting(AccessIdRepresentationModel::getAccessId).usingElementComparator(String.CASE_INSENSITIVE_ORDER).containsExactlyInAnyOrder("cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA");
    }

    @Test
    void should_ThrowNotAuthorizedException_ifCallerOfGroupRetrievalIsNotAdminOrBusinessAdmin() {
        ThrowingCallable call = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID_GROUPS) + "?access-id=teamlead-2", HttpMethod.GET, new HttpEnreplacedy<>(restHelper.getHeadersUser_1_1()), ACCESS_ID_LIST_TYPE);
        replacedertThatThrownBy(call).isInstanceOf(HttpClientErrorException.clreplaced).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
    }

    @Test
    void should_ThrowNotAuthorizedException_ifCallerOfValidationIsNotAdminOrBusinessAdmin() {
        ThrowingCallable call = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_ACCESS_ID) + "?search-for=al", HttpMethod.GET, new HttpEnreplacedy<>(restHelper.getHeadersUser_1_1()), ACCESS_ID_LIST_TYPE);
        replacedertThatThrownBy(call).isInstanceOf(HttpClientErrorException.clreplaced).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
    }
}

19 View Source File : ClassificationControllerIntTest.java
License : Apache License 2.0
Project Creator : Taskana

/**
 * Test {@link ClreplacedificationController}.
 */
@TaskanaSpringBootTest
clreplaced ClreplacedificationControllerIntTest {

    private static final ParameterizedTypeReference<ClreplacedificationSummaryPagedRepresentationModel> CLreplacedIFICATION_SUMMARY_PAGE_MODEL_TYPE = new ParameterizedTypeReference<ClreplacedificationSummaryPagedRepresentationModel>() {
    };

    private static final ParameterizedTypeReference<ClreplacedificationRepresentationModel> CLreplacedIFICATION_REPRESENTATION_MODEL_TYPE = new ParameterizedTypeReference<ClreplacedificationRepresentationModel>() {
    };

    private static final ParameterizedTypeReference<ClreplacedificationSummaryRepresentationModel> CLreplacedIFICATION_SUMMARY_REPRESENTATION_MODEL_TYPE = new ParameterizedTypeReference<ClreplacedificationSummaryRepresentationModel>() {
    };

    static RestTemplate template = RestHelper.TEMPLATE;

    @Autowired
    RestHelper restHelper;

    @Test
    void testGetClreplacedification() {
        ResponseEnreplacedy<ClreplacedificationRepresentationModel> response = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS_ID, "CLI:100000000000000000000000000000000002"), HttpMethod.GET, restHelper.defaultRequest(), CLreplacedIFICATION_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getHeaders().getContentType()).isEqualTo(MediaTypes.HAL_JSON);
    }

    @Test
    void testGetAllClreplacedifications() {
        ResponseEnreplacedy<ClreplacedificationSummaryPagedRepresentationModel> response = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS), HttpMethod.GET, restHelper.defaultRequest(), CLreplacedIFICATION_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
    }

    @Test
    void testGetAllClreplacedificationsFilterByCustomAttribute() {
        ResponseEnreplacedy<ClreplacedificationSummaryPagedRepresentationModel> response = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS) + "?domain=DOMAIN_A&custom-1-like=RVNR", HttpMethod.GET, restHelper.defaultRequest(), CLreplacedIFICATION_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(33);
    }

    @Test
    void testGetAllClreplacedificationsKeepingFilters() {
        ResponseEnreplacedy<ClreplacedificationSummaryPagedRepresentationModel> response = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS) + "?domain=DOMAIN_A&sort-by=KEY&order=ASCENDING", HttpMethod.GET, restHelper.defaultRequest(), CLreplacedIFICATION_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.SELF).getHref()).endsWith("/api/v1/clreplacedifications?domain=DOMAIN_A&sort-by=KEY&order=ASCENDING");
        replacedertThat(response.getBody().getContent()).hreplacedize(37);
        replacedertThat(response.getBody().getContent().iterator().next().getKey()).isEqualTo("A12");
    }

    @Test
    void testGetSecondPageSortedByKey() {
        ResponseEnreplacedy<ClreplacedificationSummaryPagedRepresentationModel> response = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS) + "?domain=DOMAIN_A&sort-by=KEY&order=ASCENDING&page-size=5&page=2", HttpMethod.GET, restHelper.defaultRequest(), CLreplacedIFICATION_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(5);
        replacedertThat(response.getBody().getContent().iterator().next().getKey()).isEqualTo("L1050");
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getRequiredLink(IreplacedinkRelations.SELF).getHref()).endsWith("/api/v1/clreplacedifications?" + "domain=DOMAIN_A&sort-by=KEY&order=ASCENDING&page-size=5&page=2");
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.FIRST)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.LAST)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.NEXT)).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.PREV)).isNotNull();
    }

    @Test
    @DirtiesContext
    void testCreateClreplacedification() {
        String newClreplacedification = "{\"clreplacedificationId\":\"\",\"category\":\"MANUAL\"," + "\"domain\":\"DOMAIN_A\",\"key\":\"NEW_CLreplaced\"," + "\"name\":\"new clreplacedification\",\"type\":\"TASK\", \"serviceLevel\":\"P1D\"}";
        ResponseEnreplacedy<ClreplacedificationRepresentationModel> responseEnreplacedy = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS), HttpMethod.POST, new HttpEnreplacedy<>(newClreplacedification, restHelper.getHeadersTeamlead_1()), CLreplacedIFICATION_REPRESENTATION_MODEL_TYPE);
        replacedertThat(responseEnreplacedy).isNotNull();
        replacedertThat(responseEnreplacedy.getStatusCode()).isEqualTo(HttpStatus.CREATED);
        newClreplacedification = "{\"clreplacedificationId\":\"\",\"category\":\"MANUAL\"," + "\"domain\":\"DOMAIN_A\",\"key\":\"NEW_CLreplaced_2\"," + "\"name\":\"new clreplacedification\",\"type\":\"TASK\", \"serviceLevel\":\"P1D\"}";
        responseEnreplacedy = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS), HttpMethod.POST, new HttpEnreplacedy<>(newClreplacedification, restHelper.getHeadersTeamlead_1()), CLreplacedIFICATION_REPRESENTATION_MODEL_TYPE);
        replacedertThat(responseEnreplacedy.getStatusCode()).isEqualTo(HttpStatus.CREATED);
    }

    @Test
    @DirtiesContext
    void should_ThrowNotAuthorized_WhenUserIsNotInRoleAdminOrBusinessAdmin_whileCreating() {
        String newClreplacedification = "{\"clreplacedificationId\":\"\",\"category\":\"MANUAL\"," + "\"domain\":\"DOMAIN_A\",\"key\":\"NEW_CLreplaced\"," + "\"name\":\"new clreplacedification\",\"type\":\"TASK\"}";
        ThrowingCallable httpCall = () -> template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS), HttpMethod.POST, new HttpEnreplacedy<>(newClreplacedification, restHelper.getHeadersUser_1_1()), CLreplacedIFICATION_REPRESENTATION_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.FORBIDDEN);
    }

    @Test
    @DirtiesContext
    void testCreateClreplacedificationWithParentId() {
        String newClreplacedification = "{\"clreplacedificationId\":\"\",\"category\":\"MANUAL\"," + "\"domain\":\"DOMAIN_B\",\"key\":\"NEW_CLreplaced_P1\"," + "\"name\":\"new clreplacedification\",\"type\":\"TASK\",\"serviceLevel\":\"P1D\"," + "\"parentId\":\"CLI:200000000000000000000000000000000015\"}";
        ResponseEnreplacedy<ClreplacedificationRepresentationModel> responseEnreplacedy = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS), HttpMethod.POST, new HttpEnreplacedy<>(newClreplacedification, restHelper.getHeadersTeamlead_1()), CLreplacedIFICATION_REPRESENTATION_MODEL_TYPE);
        replacedertThat(responseEnreplacedy).isNotNull();
        replacedertThat(responseEnreplacedy.getStatusCode()).isEqualTo(HttpStatus.CREATED);
    }

    @Test
    @DirtiesContext
    @SuppressWarnings("checkstyle:LineLength")
    void testCreateClreplacedificationWithParentKey() {
        String newClreplacedification = "{\"clreplacedificationId\":\"\",\"category\":\"MANUAL\",\"domain\":\"DOMAIN_B\"," + "\"key\":\"NEW_CLreplaced_P2\",\"name\":\"new clreplacedification\"," + "\"type\":\"TASK\",\"parentKey\":\"T2100\",\"serviceLevel\":\"P1D\"}";
        ResponseEnreplacedy<ClreplacedificationRepresentationModel> responseEnreplacedy = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS), HttpMethod.POST, new HttpEnreplacedy<>(newClreplacedification, restHelper.getHeadersTeamlead_1()), CLreplacedIFICATION_REPRESENTATION_MODEL_TYPE);
        replacedertThat(responseEnreplacedy).isNotNull();
        replacedertThat(responseEnreplacedy.getStatusCode()).isEqualTo(HttpStatus.CREATED);
    }

    @Test
    @DirtiesContext
    void testCreateClreplacedificationWithParentKeyInDomain_aShouldCreateAClreplacedificationInRootDomain() {
        String newClreplacedification = "{\"clreplacedificationId\":\"\",\"category\":\"MANUAL\",\"domain\":\"DOMAIN_A\"," + "\"key\":\"NEW_CLreplaced_P2\",\"name\":\"new clreplacedification\"," + "\"type\":\"TASK\",\"parentKey\":\"T2100\",\"serviceLevel\":\"P1D\"}";
        ResponseEnreplacedy<ClreplacedificationRepresentationModel> responseEnreplacedy = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS), HttpMethod.POST, new HttpEnreplacedy<>(newClreplacedification, restHelper.getHeadersTeamlead_1()), CLreplacedIFICATION_REPRESENTATION_MODEL_TYPE);
        replacedertThat(responseEnreplacedy).isNotNull();
        replacedertThat(responseEnreplacedy.getStatusCode()).isEqualTo(HttpStatus.CREATED);
        ResponseEnreplacedy<ClreplacedificationSummaryPagedRepresentationModel> response = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS), HttpMethod.GET, restHelper.defaultRequest(), CLreplacedIFICATION_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        boolean foundClreplacedificationCreated = false;
        for (ClreplacedificationSummaryRepresentationModel clreplacedification : response.getBody().getContent()) {
            if ("NEW_CLreplaced_P2".equals(clreplacedification.getKey()) && "".equals(clreplacedification.getDomain()) && "T2100".equals(clreplacedification.getParentKey())) {
                foundClreplacedificationCreated = true;
                break;
            }
        }
        replacedertThat(foundClreplacedificationCreated).isTrue();
    }

    @Test
    @DirtiesContext
    void testReturn400IfCreateClreplacedificationWithIncompatibleParentIdAndKey() {
        String newClreplacedification = "{\"clreplacedificationId\":\"\",\"category\":\"MANUAL\",\"domain\":\"DOMAIN_B\"," + "\"key\":\"NEW_CLreplaced_P3\",\"name\":\"new clreplacedification\"," + "\"type\":\"TASK\",\"parentId\":\"CLI:200000000000000000000000000000000015\"," + "\"parentKey\":\"T2000\",\"serviceLevel\":\"P1D\"}";
        ThrowingCallable httpCall = () -> template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS), HttpMethod.POST, new HttpEnreplacedy<>(newClreplacedification, restHelper.getHeadersBusinessAdmin()), CLreplacedIFICATION_REPRESENTATION_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }

    @Test
    @DirtiesContext
    void testCreateClreplacedificationWithClreplacedificationIdReturnsError400() {
        String newClreplacedification = "{\"clreplacedificationId\":\"someId\",\"category\":\"MANUAL\"," + "\"domain\":\"DOMAIN_A\",\"key\":\"NEW_CLreplaced\"," + "\"name\":\"new clreplacedification\",\"type\":\"TASK\",\"serviceLevel\":\"P1D\"}";
        ThrowingCallable httpCall = () -> template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS), HttpMethod.POST, new HttpEnreplacedy<>(newClreplacedification, restHelper.getHeadersBusinessAdmin()), CLreplacedIFICATION_REPRESENTATION_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }

    @Test
    void testGetClreplacedificationWithSpecialCharacter() {
        HttpEnreplacedy<String> request = new HttpEnreplacedy<>(restHelper.getHeadersAdmin());
        ResponseEnreplacedy<ClreplacedificationSummaryRepresentationModel> response = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS_ID, "CLI:100000000000000000000000000000000009"), HttpMethod.GET, request, CLreplacedIFICATION_SUMMARY_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getName()).isEqualTo("Zustimmungserklärung");
    }

    @Test
    @DirtiesContext
    void testDeleteClreplacedification() {
        HttpEnreplacedy<String> request = new HttpEnreplacedy<>(restHelper.getHeadersBusinessAdmin());
        ResponseEnreplacedy<ClreplacedificationSummaryRepresentationModel> response = template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS_ID, "CLI:200000000000000000000000000000000004"), HttpMethod.DELETE, request, CLreplacedIFICATION_SUMMARY_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT);
        ThrowingCallable httpCall = () -> template.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS_ID, "CLI:200000000000000000000000000000000004"), HttpMethod.GET, request, CLreplacedIFICATION_SUMMARY_REPRESENTATION_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced);
    }

    @Test
    void should_ThrowException_When_ProvidingInvalidFilterParams() {
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(RestEndpoints.URL_CLreplacedIFICATIONS) + "?domain=DOMAIN_A" + "&illegalParam=illegal" + "&anotherIllegalParam=stillIllegal" + "&sort-by=NAME&order=DESCENDING&page-size=5&page=2", HttpMethod.GET, restHelper.defaultRequest(), CLreplacedIFICATION_SUMMARY_PAGE_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("Unkown request parameters found: [anotherIllegalParam, illegalParam]").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }
}

19 View Source File : TaskHistoryEventControllerIntTest.java
License : Apache License 2.0
Project Creator : Taskana

/**
 * Controller for integration test.
 */
@TaskanaSpringBootTest
clreplaced TaskHistoryEventControllerIntTest {

    private static final ParameterizedTypeReference<TaskHistoryEventPagedRepresentationModel> TASK_HISTORY_EVENT_PAGED_REPRESENTATION_MODEL_TYPE = new ParameterizedTypeReference<TaskHistoryEventPagedRepresentationModel>() {
    };

    private static final ParameterizedTypeReference<TaskHistoryEventRepresentationModel> TASK_HISTORY_EVENT_REPRESENTATION_MODEL_TYPE = new ParameterizedTypeReference<TaskHistoryEventRepresentationModel>() {
    };

    private final RestHelper restHelper;

    @Autowired
    TaskHistoryEventControllerIntTest(RestHelper restHelper) {
        this.restHelper = restHelper;
    }

    // region Get Task History Events
    @Test
    void should_GetAllHistoryEvents_When_UrlIsVisited() {
        ResponseEnreplacedy<TaskHistoryEventPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(HistoryRestEndpoints.URL_HISTORY_EVENTS), HttpMethod.GET, restHelper.defaultRequest(), TASK_HISTORY_EVENT_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(45);
    }

    @Test
    void should_GenerateSelfLink_When_TaskHistoryEventsAreRequested() {
        ResponseEnreplacedy<TaskHistoryEventPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(HistoryRestEndpoints.URL_HISTORY_EVENTS), HttpMethod.GET, restHelper.defaultRequest(), TASK_HISTORY_EVENT_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isPresent().get().extracting(Link::getHref).replacedtring().endsWith(HistoryRestEndpoints.URL_HISTORY_EVENTS);
    }

    @Test
    void should_ContainQueryParametersInComputedSelfLink_When_TaskHistoryEventsAreRequested() {
        String parameters = "?domain=DOMAIN_A&domain=DOMAIN_B";
        ResponseEnreplacedy<TaskHistoryEventPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(HistoryRestEndpoints.URL_HISTORY_EVENTS + parameters), HttpMethod.GET, restHelper.defaultRequest(), TASK_HISTORY_EVENT_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isPresent().get().extracting(Link::getHref).replacedtring().endsWith(HistoryRestEndpoints.URL_HISTORY_EVENTS + parameters);
    }

    @Test
    void should_SortEventsByBusinessProcessIdDesc_When_SortByAndOrderQueryParametersAreDeclared() {
        String parameters = "?sort-by=BUSINESS_PROCESS_ID&order=DESCENDING";
        ResponseEnreplacedy<TaskHistoryEventPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(HistoryRestEndpoints.URL_HISTORY_EVENTS + parameters), HttpMethod.GET, restHelper.defaultRequest(), TASK_HISTORY_EVENT_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getContent()).extracting(TaskHistoryEventRepresentationModel::getBusinessProcessId).isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
    }

    @Test
    void should_ApplyBusinessProcessIdFilter_When_QueryParameterIsProvided() {
        String parameters = "?business-process-id=BPI:01";
        ResponseEnreplacedy<TaskHistoryEventPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(HistoryRestEndpoints.URL_HISTORY_EVENTS + parameters), HttpMethod.GET, restHelper.defaultRequest(), TASK_HISTORY_EVENT_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getContent()).extracting(TaskHistoryEventRepresentationModel::getTaskHistoryId).containsExactly("THI:000000000000000000000000000000000000");
    }

    @Test
    @Disabled("Jörg pls fix this")
    void should_ReturnBadStatusErrorCode_When_CreatedQueryParameterIsWrongFormatted() {
        String currentTime = "wrong format";
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(HistoryRestEndpoints.URL_HISTORY_EVENTS + "?created=" + currentTime), HttpMethod.GET, restHelper.defaultRequest(), TASK_HISTORY_EVENT_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining(currentTime).extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }

    @Test
    void should_ApplyCreatedFilter_When_QueryParametersAreProvided() {
        Instant now = LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant();
        ResponseEnreplacedy<TaskHistoryEventPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(HistoryRestEndpoints.URL_HISTORY_EVENTS + "?created=" + now + "&created="), HttpMethod.GET, restHelper.defaultRequest(), TASK_HISTORY_EVENT_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isNotNull();
        replacedertThat(response.getBody().getContent()).hreplacedize(23);
    }

    @Test
    void should_ApplyPaging_When_PagingIsRequested() {
        String expectedFirstPageParameters = "?sort-by=TASK_HISTORY_EVENT_ID&page-size=3&page=1";
        String expectedLastPageParameters = "?sort-by=TASK_HISTORY_EVENT_ID&page-size=3&page=15";
        String expectedPrevPageParameters = "?sort-by=TASK_HISTORY_EVENT_ID&page-size=3&page=2";
        String expectedNextPageParameters = "?sort-by=TASK_HISTORY_EVENT_ID&page-size=3&page=4";
        String parameters = "?sort-by=TASK_HISTORY_EVENT_ID&page-size=3&page=3";
        ResponseEnreplacedy<TaskHistoryEventPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(HistoryRestEndpoints.URL_HISTORY_EVENTS + parameters), HttpMethod.GET, restHelper.defaultRequest(), TASK_HISTORY_EVENT_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getContent()).extracting(TaskHistoryEventRepresentationModel::getTaskHistoryId).containsExactly("THI:000000000000000000000000000000000006", "THI:000000000000000000000000000000000007", "THI:000000000000000000000000000000000008");
        replacedertThat(response.getBody().getPageMetadata()).isEqualTo(new PageMetadata(3, 45, 15, 3));
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.FIRST)).isPresent().get().extracting(Link::getHref).replacedtring().endsWith(HistoryRestEndpoints.URL_HISTORY_EVENTS + expectedFirstPageParameters);
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.LAST)).isPresent().get().extracting(Link::getHref).replacedtring().endsWith(HistoryRestEndpoints.URL_HISTORY_EVENTS + expectedLastPageParameters);
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.PREV)).isPresent().get().extracting(Link::getHref).replacedtring().endsWith(HistoryRestEndpoints.URL_HISTORY_EVENTS + expectedPrevPageParameters);
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.NEXT)).isPresent().get().extracting(Link::getHref).replacedtring().endsWith(HistoryRestEndpoints.URL_HISTORY_EVENTS + expectedNextPageParameters);
    }

    // endregion
    // region Get Specific Task History Event
    @Test
    void should_GenerateSelfLink_When_SpecificTaskHistoryEventIsRequested() {
        String id = "THI:000000000000000000000000000000000000";
        String expectedUrl = UriComponentsBuilder.fromPath(HistoryRestEndpoints.URL_HISTORY_EVENTS_ID).buildAndExpand(id).toUriString();
        ResponseEnreplacedy<TaskHistoryEventPagedRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(HistoryRestEndpoints.URL_HISTORY_EVENTS_ID, id), HttpMethod.GET, restHelper.defaultRequest(), TASK_HISTORY_EVENT_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getLink(IreplacedinkRelations.SELF)).isPresent().get().extracting(Link::getHref).replacedtring().endsWith(expectedUrl);
    }

    @Test
    void should_GetSpecificTaskHistoryEventWithDetails_When_SingleEventIsQueried() {
        ResponseEnreplacedy<TaskHistoryEventRepresentationModel> response = TEMPLATE.exchange(restHelper.toUrl(HistoryRestEndpoints.URL_HISTORY_EVENTS_ID, "THI:000000000000000000000000000000000000"), HttpMethod.GET, restHelper.defaultRequest(), TASK_HISTORY_EVENT_REPRESENTATION_MODEL_TYPE);
        replacedertThat(response.getBody()).isNotNull();
        replacedertThat(response.getBody().getDetails()).isNotNull();
    }

    @Test
    void should_ThrowException_When_ProvidingInvalidFilterParams() {
        ThrowingCallable httpCall = () -> TEMPLATE.exchange(restHelper.toUrl(HistoryRestEndpoints.URL_HISTORY_EVENTS) + "?domain=DOMAIN_A" + "&illegalParam=illegal" + "&anotherIllegalParam=stillIllegal" + "&sort-by=TASK_ID&order=DESCENDING&page-size=5&page=2", HttpMethod.GET, restHelper.defaultRequest(), TASK_HISTORY_EVENT_PAGED_REPRESENTATION_MODEL_TYPE);
        replacedertThatThrownBy(httpCall).isInstanceOf(HttpClientErrorException.clreplaced).hasMessageContaining("Unkown request parameters found: [anotherIllegalParam, illegalParam]").extracting(ex -> ((HttpClientErrorException) ex).getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST);
    }
    // endregion
}

19 View Source File : VersionITCase.java
License : Apache License 2.0
Project Creator : syndesisio

public clreplaced VersionITCase extends BaseITCase {

    private static final ParameterizedTypeReference<Map<String, String>> MAP_OF_STRINGS = new ParameterizedTypeReference<Map<String, String>>() {
    };

    @Test
    public void shouldFetchDetailedVersion() {
        final HttpHeaders headers = new HttpHeaders();
        headers.add(HttpHeaders.ACCEPT, "application/json");
        final ResponseEnreplacedy<Map<String, String>> detailed = http(HttpMethod.GET, "/api/v1/version", null, MAP_OF_STRINGS, tokenRule.validToken(), headers, HttpStatus.OK);
        replacedertThat(detailed.getBody()).isNotEmpty();
    }

    @Test
    public void shouldFetchPlainVersion() {
        final HttpHeaders headers = new HttpHeaders();
        headers.add(HttpHeaders.ACCEPT, "text/plain");
        final ResponseEnreplacedy<String> plainVersion = http(HttpMethod.GET, "/api/v1/version", null, String.clreplaced, tokenRule.validToken(), headers, HttpStatus.OK);
        replacedertThat(plainVersion.getBody()).isNotEmpty();
    }
}

19 View Source File : ConnectionsITCase.java
License : Apache License 2.0
Project Creator : syndesisio

public clreplaced ConnectionsITCase extends BaseITCase {

    private final static ParameterizedTypeReference<List<Violation>> RESPONSE_TYPE = new ParameterizedTypeReference<List<Violation>>() {
    };

    private final String id = UUID.randomUUID().toString();

    @Test
    public void emptyNamesShouldNotBeAllowed() {
        final Connection connection = new Connection.Builder().name(" ").build();
        final ResponseEnreplacedy<List<Violation>> got = post("/api/v1/connections/validation", connection, RESPONSE_TYPE, tokenRule.validToken(), HttpStatus.BAD_REQUEST);
        replacedertThat(got.getBody()).containsExactly(new Violation.Builder().property("name").error("NotNull").message("Value is required").build());
    }

    @Test
    public void emptyTagsShouldBeIgnored() {
        final Connection connection = new Connection.Builder().id("tags-connection-test").connectorId("http").name("tags-connection-test").addTags("", " ", "taggy").build();
        final ResponseEnreplacedy<Connection> got = post("/api/v1/connections", connection, Connection.clreplaced, tokenRule.validToken(), HttpStatus.OK);
        final Connection created = got.getBody();
        replacedertThat(created).isNotNull();
        replacedertThat(created.getTags()).containsExactly("taggy");
    }

    @Test
    public void nullNamesShouldNotBeAllowed() {
        final Connection connection = new Connection.Builder().build();
        final ResponseEnreplacedy<List<Violation>> got = post("/api/v1/connections/validation", connection, RESPONSE_TYPE, tokenRule.validToken(), HttpStatus.BAD_REQUEST);
        replacedertThat(got.getBody()).containsExactly(new Violation.Builder().property("name").error("NotNull").message("Value is required").build());
    }

    @BeforeEach
    public void preexistingConnection() {
        final Connection connection = new Connection.Builder().name("Existing connection").id(id).build();
        dataManager.create(connection);
    }

    @Test
    public void shouldAllowConnectionUpdateWithExistingName() {
        final Connection connection = new Connection.Builder().name("Existing connection").connectorId("http").id(id).build();
        final ResponseEnreplacedy<Void> got = put("/api/v1/connections/" + id, connection, Void.clreplaced, tokenRule.validToken(), HttpStatus.NO_CONTENT);
        replacedertThat(got.getBody()).isNull();
    }

    @Test
    public void shouldDetermineValidityForInvalidConnections() {
        final Connection connection = new Connection.Builder().name("Existing connection").build();
        final ResponseEnreplacedy<List<Violation>> got = post("/api/v1/connections/validation", connection, RESPONSE_TYPE, tokenRule.validToken(), HttpStatus.BAD_REQUEST);
        replacedertThat(got.getBody()).containsExactly(new Violation.Builder().property("name").error("UniqueProperty").message("Value 'Existing connection' is not unique").build());
    }

    @Test
    public void shouldDetermineValidityForValidConnections() {
        final Connection connection = new Connection.Builder().name("Test connection").build();
        final ResponseEnreplacedy<List<Violation>> got = post("/api/v1/connections/validation", connection, RESPONSE_TYPE, tokenRule.validToken(), HttpStatus.NO_CONTENT);
        replacedertThat(got.getBody()).isNull();
    }

    @Test
    public void violationsShouldBeGivenForInvalidConnectionCreation() {
        final Connection connection = new Connection.Builder().name("Existing connection").build();
        final ResponseEnreplacedy<List<Violation>> got = post("/api/v1/connections", connection, RESPONSE_TYPE, tokenRule.validToken(), HttpStatus.BAD_REQUEST);
        replacedertThat(got.getBody()).containsExactly(new Violation.Builder().property("create.obj.name").error("UniqueProperty").message("Value 'Existing connection' is not unique").build());
    }
}

19 View Source File : GraphQLHttpHandler.java
License : Apache License 2.0
Project Creator : spring-projects-experimental

/**
 * GraphQL handler to expose as a WebMvc.fn endpoint via
 * {@link org.springframework.web.servlet.function.RouterFunctions}.
 */
public clreplaced GraphQLHttpHandler {

    private final static Log logger = LogFactory.getLog(GraphQLHttpHandler.clreplaced);

    private static final ParameterizedTypeReference<Map<String, Object>> MAP_PARAMETERIZED_TYPE_REF = new ParameterizedTypeReference<Map<String, Object>>() {
    };

    private final WebInterceptorExecutionChain executionChain;

    /**
     * Create a handler that executes queries through the given {@link GraphQL}
     * and and invokes the given interceptors to customize input to and the
     * result from the execution of the query.
     * @param graphQL the GraphQL instance to use for query execution
     * @param interceptors 0 or more interceptors to customize input and output
     */
    public GraphQLHttpHandler(GraphQL graphQL, List<WebInterceptor> interceptors) {
        this.executionChain = new WebInterceptorExecutionChain(graphQL, interceptors);
    }

    /**
     * {@inheritDoc}
     *
     * @throws ServletException may be raised when reading the request body,
     * e.g. {@link HttpMediaTypeNotSupportedException}.
     */
    public ServerResponse handle(ServerRequest request) throws ServletException {
        WebInput webInput = new WebInput(request.uri(), request.headers().asHttpHeaders(), readBody(request));
        if (logger.isDebugEnabled()) {
            logger.debug("Executing: " + webInput);
        }
        Mono<ServerResponse> responseMono = this.executionChain.execute(webInput).map(output -> {
            if (logger.isDebugEnabled()) {
                logger.debug("Execution complete");
            }
            ServerResponse.BodyBuilder builder = ServerResponse.ok();
            if (output.getHeaders() != null) {
                builder.headers(headers -> headers.putAll(output.getHeaders()));
            }
            return builder.body(output.toSpecification());
        });
        return ServerResponse.async(responseMono);
    }

    private static Map<String, Object> readBody(ServerRequest request) throws ServletException {
        try {
            return request.body(MAP_PARAMETERIZED_TYPE_REF);
        } catch (IOException ex) {
            throw new ServerWebInputException("I/O error while reading request body", null, ex);
        }
    }
}

19 View Source File : GraphQLHttpHandler.java
License : Apache License 2.0
Project Creator : spring-projects-experimental

/**
 * WebFlux.fn Handler for GraphQL over HTTP requests.
 */
public clreplaced GraphQLHttpHandler {

    private static final Log logger = LogFactory.getLog(GraphQLHttpHandler.clreplaced);

    private static final ParameterizedTypeReference<Map<String, Object>> MAP_PARAMETERIZED_TYPE_REF = new ParameterizedTypeReference<Map<String, Object>>() {
    };

    private final WebInterceptorExecutionChain executionChain;

    /**
     * Create a new instance.
     * @param graphQL the GraphQL instance to use for query execution
     * @param interceptors 0 or more interceptors to customize input and output
     */
    public GraphQLHttpHandler(GraphQL graphQL, List<WebInterceptor> interceptors) {
        this.executionChain = new WebInterceptorExecutionChain(graphQL, interceptors);
    }

    /**
     * Handle GraphQL query requests over HTTP.
     */
    public Mono<ServerResponse> handleQuery(ServerRequest request) {
        return request.bodyToMono(MAP_PARAMETERIZED_TYPE_REF).flatMap(body -> {
            WebInput webInput = new WebInput(request.uri(), request.headers().asHttpHeaders(), body);
            if (logger.isDebugEnabled()) {
                logger.debug("Executing: " + webInput);
            }
            return this.executionChain.execute(webInput);
        }).flatMap(output -> {
            Map<String, Object> spec = output.toSpecification();
            if (logger.isDebugEnabled()) {
                logger.debug("Execution complete");
            }
            ServerResponse.BodyBuilder builder = ServerResponse.ok();
            if (output.getHeaders() != null) {
                builder.headers(headers -> headers.putAll(output.getHeaders()));
            }
            return builder.bodyValue(spec);
        });
    }
}

19 View Source File : ReactiveCredHubCredentialTemplate.java
License : Apache License 2.0
Project Creator : spring-projects

@Override
public <T> Mono<CredentialDetails<T>> write(final CredentialRequest<T> credentialRequest) {
    replacedert.notNull(credentialRequest, "credentialRequest must not be null");
    final ParameterizedTypeReference<CredentialDetails<T>> ref = new ParameterizedTypeReference<CredentialDetails<T>>() {
    };
    return this.credHubOperations.doWithWebClient((webClient) -> webClient.put().uri(BASE_URL_PATH).bodyValue(credentialRequest).retrieve().onStatus(HttpStatus::isError, ExceptionUtils::buildError).bodyToMono(ref));
}

19 View Source File : ReactiveCredHubCredentialTemplate.java
License : Apache License 2.0
Project Creator : spring-projects

@Override
public <T> Mono<CredentialDetails<T>> getById(final String id, final Clreplaced<T> credentialType) {
    replacedert.notNull(id, "credential id must not be null");
    replacedert.notNull(credentialType, "credential type must not be null");
    final ParameterizedTypeReference<CredentialDetails<T>> ref = new ParameterizedTypeReference<CredentialDetails<T>>() {
    };
    return this.credHubOperations.doWithWebClient((webClient) -> webClient.get().uri(ID_URL_PATH, id).retrieve().onStatus(HttpStatus::isError, ExceptionUtils::buildError).bodyToMono(ref));
}

19 View Source File : ReactiveCredHubCredentialTemplate.java
License : Apache License 2.0
Project Creator : spring-projects

@Override
public <T, P> Mono<CredentialDetails<T>> generate(final ParametersRequest<P> parametersRequest, Clreplaced<T> credentialType) {
    replacedert.notNull(parametersRequest, "parametersRequest must not be null");
    final ParameterizedTypeReference<CredentialDetails<T>> ref = new ParameterizedTypeReference<CredentialDetails<T>>() {
    };
    return this.credHubOperations.doWithWebClient((webClient) -> webClient.post().uri(BASE_URL_PATH).bodyValue(parametersRequest).retrieve().onStatus(HttpStatus::isError, ExceptionUtils::buildError).bodyToMono(ref));
}

19 View Source File : CredHubCredentialTemplate.java
License : Apache License 2.0
Project Creator : spring-projects

@Override
public <T> CredentialDetails<T> getById(final String id, final Clreplaced<T> credentialType) {
    replacedert.notNull(id, "credential id must not be null");
    replacedert.notNull(credentialType, "credential type must not be null");
    final ParameterizedTypeReference<CredentialDetails<T>> ref = new ParameterizedTypeReference<CredentialDetails<T>>() {
    };
    return this.credHubOperations.doWithRest((restOperations) -> {
        ResponseEnreplacedy<CredentialDetails<T>> response = restOperations.exchange(ID_URL_PATH, HttpMethod.GET, null, ref, id);
        ExceptionUtils.throwExceptionOnError(response);
        return response.getBody();
    });
}

19 View Source File : CredHubCredentialTemplate.java
License : Apache License 2.0
Project Creator : spring-projects

@Override
public <T> CredentialDetails<T> write(final CredentialRequest<T> credentialRequest) {
    replacedert.notNull(credentialRequest, "credentialRequest must not be null");
    final ParameterizedTypeReference<CredentialDetails<T>> ref = new ParameterizedTypeReference<CredentialDetails<T>>() {
    };
    return this.credHubOperations.doWithRest((restOperations) -> {
        ResponseEnreplacedy<CredentialDetails<T>> response = restOperations.exchange(BASE_URL_PATH, HttpMethod.PUT, new HttpEnreplacedy<>(credentialRequest), ref);
        ExceptionUtils.throwExceptionOnError(response);
        return response.getBody();
    });
}

19 View Source File : ReactiveCredHubCertificateTemplate.java
License : Apache License 2.0
Project Creator : spring-projects

@Override
public Mono<CertificateCredentialDetails> regenerate(final String id, final boolean setAsTransitional) {
    replacedert.notNull(id, "credential ID must not be null");
    final ParameterizedTypeReference<CertificateCredentialDetails> ref = new ParameterizedTypeReference<CertificateCredentialDetails>() {
    };
    Map<String, Boolean> request = new HashMap<>(1);
    request.put(TRANSITIONAL_REQUEST_FIELD, setAsTransitional);
    return this.credHubOperations.doWithWebClient((webClient) -> webClient.post().uri(REGENERATE_URL_PATH, id).bodyValue(request).retrieve().onStatus(HttpStatus::isError, ExceptionUtils::buildError).bodyToMono(ref));
}

19 View Source File : DefaultSkipperClient.java
License : Apache License 2.0
Project Creator : spring-cloud

@Override
public Info status(String releaseName, int releaseVersion) {
    ParameterizedTypeReference<Info> typeReference = new ParameterizedTypeReference<Info>() {
    };
    Map<String, String> uriVariables = new HashMap<String, String>();
    uriVariables.put("releaseName", releaseName);
    uriVariables.put("releaseVersion", Integer.toString(releaseVersion));
    ResponseEnreplacedy<Info> resourceResponseEnreplacedy = restTemplate.exchange(baseUri + "/release/status/{releaseName}/{releaseVersion}", HttpMethod.GET, null, typeReference, uriVariables);
    return resourceResponseEnreplacedy.getBody();
}

19 View Source File : DefaultSkipperClient.java
License : Apache License 2.0
Project Creator : spring-cloud

public Release install(InstallRequest installRequest) {
    ParameterizedTypeReference<Release> typeReference = new ParameterizedTypeReference<Release>() {
    };
    String url = String.format("%s/%s/%s", baseUri, "package", "install");
    HttpEnreplacedy<InstallRequest> httpEnreplacedy = new HttpEnreplacedy<>(installRequest);
    ResponseEnreplacedy<Release> resourceResponseEnreplacedy = restTemplate.exchange(url, HttpMethod.POST, httpEnreplacedy, typeReference);
    return resourceResponseEnreplacedy.getBody();
}

19 View Source File : DefaultSkipperClient.java
License : Apache License 2.0
Project Creator : spring-cloud

@Override
public Info status(String releaseName) {
    ParameterizedTypeReference<Info> typeReference = new ParameterizedTypeReference<Info>() {
    };
    Map<String, String> uriVariables = new HashMap<String, String>();
    uriVariables.put("releaseName", releaseName);
    ResponseEnreplacedy<Info> resourceResponseEnreplacedy = restTemplate.exchange(baseUri + "/release/status/{releaseName}", HttpMethod.GET, null, typeReference, uriVariables);
    return resourceResponseEnreplacedy.getBody();
}

19 View Source File : DefaultSkipperClient.java
License : Apache License 2.0
Project Creator : spring-cloud

@Override
public LogInfo getLog(String releaseName, String appName) {
    ParameterizedTypeReference<LogInfo> typeReference = new ParameterizedTypeReference<LogInfo>() {
    };
    Map<String, String> uriVariables = new HashMap<String, String>();
    uriVariables.put("releaseName", releaseName);
    uriVariables.put("appName", appName);
    ResponseEnreplacedy<LogInfo> resourceResponseEnreplacedy = restTemplate.exchange(baseUri + "/release/logs/{releaseName}/{appName}", HttpMethod.GET, null, typeReference, uriVariables);
    return resourceResponseEnreplacedy.getBody();
}

19 View Source File : DefaultSkipperClient.java
License : Apache License 2.0
Project Creator : spring-cloud

@Override
public LogInfo getLog(String releaseName) {
    ParameterizedTypeReference<LogInfo> typeReference = new ParameterizedTypeReference<LogInfo>() {
    };
    Map<String, String> uriVariables = new HashMap<String, String>();
    uriVariables.put("releaseName", releaseName);
    ResponseEnreplacedy<LogInfo> resourceResponseEnreplacedy = restTemplate.exchange(baseUri + "/release/logs/{releaseName}", HttpMethod.GET, null, typeReference, uriVariables);
    return resourceResponseEnreplacedy.getBody();
}

19 View Source File : DefaultSkipperClient.java
License : Apache License 2.0
Project Creator : spring-cloud

@Override
public Release rollback(RollbackRequest rollbackRequest) {
    ParameterizedTypeReference<Release> typeReference = new ParameterizedTypeReference<Release>() {
    };
    String url = String.format("%s/%s/%s", baseUri, "release", "rollback");
    HttpEnreplacedy<RollbackRequest> httpEnreplacedy = new HttpEnreplacedy<>(rollbackRequest);
    ResponseEnreplacedy<Release> resourceResponseEnreplacedy = restTemplate.exchange(url, HttpMethod.POST, httpEnreplacedy, typeReference);
    return resourceResponseEnreplacedy.getBody();
}

19 View Source File : DefaultSkipperClient.java
License : Apache License 2.0
Project Creator : spring-cloud

@Override
public String manifest(String releaseName) {
    ParameterizedTypeReference<Manifest> typeReference = new ParameterizedTypeReference<Manifest>() {
    };
    Map<String, String> uriVariables = new HashMap<String, String>();
    uriVariables.put("releaseName", releaseName);
    ResponseEnreplacedy<Manifest> resourceResponseEnreplacedy = restTemplate.exchange(baseUri + "/release/manifest/{releaseName}", HttpMethod.GET, null, typeReference, uriVariables);
    return resourceResponseEnreplacedy.getBody().getData();
}

19 View Source File : DefaultSkipperClient.java
License : Apache License 2.0
Project Creator : spring-cloud

@Override
public String manifest(String releaseName, int releaseVersion) {
    ParameterizedTypeReference<Manifest> typeReference = new ParameterizedTypeReference<Manifest>() {
    };
    Map<String, String> uriVariables = new HashMap<String, String>();
    uriVariables.put("releaseName", releaseName);
    uriVariables.put("releaseVersion", Integer.toString(releaseVersion));
    ResponseEnreplacedy<Manifest> resourceResponseEnreplacedy = restTemplate.exchange(baseUri + "/release/manifest/{releaseName}/{releaseVersion}", HttpMethod.GET, null, typeReference, uriVariables);
    return resourceResponseEnreplacedy.getBody().getData();
}

19 View Source File : DefaultSkipperClient.java
License : Apache License 2.0
Project Creator : spring-cloud

@Override
public Release scale(String releaseName, ScaleRequest scaleRequest) {
    ParameterizedTypeReference<Release> typeReference = new ParameterizedTypeReference<Release>() {
    };
    Map<String, String> uriVariables = new HashMap<String, String>();
    uriVariables.put("releaseName", releaseName);
    HttpEnreplacedy<ScaleRequest> httpEnreplacedy = new HttpEnreplacedy<>(scaleRequest);
    ResponseEnreplacedy<Release> resourceResponseEnreplacedy = restTemplate.exchange(baseUri + "/release/scale/{releaseName}", HttpMethod.POST, httpEnreplacedy, typeReference, uriVariables);
    return resourceResponseEnreplacedy.getBody();
}

19 View Source File : ProductionConfigurationTests.java
License : Apache License 2.0
Project Creator : spring-cloud

@Test
public void deleteWithBody() throws Exception {
    Foo foo = new Foo("to-be-deleted");
    ParameterizedTypeReference<Map<String, Foo>> returnType = new ParameterizedTypeReference<Map<String, Foo>>() {
    };
    ResponseEnreplacedy<Map<String, Foo>> deleteResponse = rest.exchange("/proxy/{id}", HttpMethod.DELETE, new HttpEnreplacedy<Foo>(foo), returnType, Collections.singletonMap("id", "123"));
    replacedertThat(deleteResponse.getStatusCode()).isEqualTo(HttpStatus.OK);
    replacedertThat(deleteResponse.getBody().get("deleted")).isEqualToComparingFieldByField(foo);
}

19 View Source File : ApplicationJsonMessageMarshallingConverter.java
License : Apache License 2.0
Project Creator : spring-cloud

@Override
protected Object convertFromInternal(Message<?> message, Clreplaced<?> targetClreplaced, @Nullable Object hint) {
    Object conversionHint = hint;
    Object result = null;
    if (conversionHint instanceof MethodParameter) {
        Clreplaced<?> conversionHintType = ((MethodParameter) conversionHint).getParameterType();
        if (Message.clreplaced.isreplacedignableFrom(conversionHintType)) {
            /*
				 * Ensures that super won't attempt to create Message as a result of
				 * conversion and stays at payload conversion only. The Message will
				 * eventually be created in
				 * MessageMethodArgumentResolver.resolveArgument(..)
				 */
            conversionHint = null;
        } else if (((MethodParameter) conversionHint).getGenericParameterType() instanceof ParameterizedType) {
            ParameterizedTypeReference<Object> forType = ParameterizedTypeReference.forType(((MethodParameter) conversionHint).getGenericParameterType());
            result = convertParameterizedType(message, forType.getType());
        }
    } else if (conversionHint instanceof ParameterizedTypeReference) {
        result = convertParameterizedType(message, ((ParameterizedTypeReference<?>) conversionHint).getType());
    } else if (conversionHint instanceof ParameterizedType) {
        result = convertParameterizedType(message, (Type) conversionHint);
    }
    if (result == null) {
        if (message.getPayload() instanceof byte[] && targetClreplaced.isreplacedignableFrom(String.clreplaced)) {
            result = new String((byte[]) message.getPayload(), StandardCharsets.UTF_8);
        } else {
            result = super.convertFromInternal(message, targetClreplaced, conversionHint);
        }
    }
    return result;
}

19 View Source File : RequestMappingMessageConversionIntegrationTests.java
License : Apache License 2.0
Project Creator : SourceHot

/**
 * {@code @RequestMapping} integration tests focusing on serialization and
 * deserialization of the request and response body.
 *
 * @author Rossen Stoyanchev
 * @author Sebastien Deleuze
 */
public clreplaced RequestMappingMessageConversionIntegrationTests extends AbstractRequestMappingIntegrationTests {

    private static final ParameterizedTypeReference<List<Person>> PERSON_LIST = new ParameterizedTypeReference<List<Person>>() {
    };

    private static final MediaType JSON = MediaType.APPLICATION_JSON;

    @Override
    protected ApplicationContext initApplicationContext() {
        AnnotationConfigApplicationContext wac = new AnnotationConfigApplicationContext();
        wac.register(WebConfig.clreplaced);
        wac.refresh();
        return wac;
    }

    @ParameterizedHttpServerTest
    public void byteBufferResponseBodyWithPublisher(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        Person expected = new Person("Robert");
        replacedertThat(performGet("/raw-response/publisher", JSON, Person.clreplaced).getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void byteBufferResponseBodyWithFlux(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        String expected = "Hello!";
        replacedertThat(performGet("/raw-response/flux", new HttpHeaders(), String.clreplaced).getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void byteBufferResponseBodyWithMono(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        String expected = "Hello!";
        ResponseEnreplacedy<String> responseEnreplacedy = performGet("/raw-response/mono", new HttpHeaders(), String.clreplaced);
        replacedertThat(responseEnreplacedy.getHeaders().getContentLength()).isEqualTo(6);
        replacedertThat(responseEnreplacedy.getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void byteBufferResponseBodyWithObservable(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        String expected = "Hello!";
        replacedertThat(performGet("/raw-response/observable", new HttpHeaders(), String.clreplaced).getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void byteBufferResponseBodyWithRxJava2Observable(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        String expected = "Hello!";
        replacedertThat(performGet("/raw-response/rxjava2-observable", new HttpHeaders(), String.clreplaced).getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void byteBufferResponseBodyWithFlowable(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        String expected = "Hello!";
        replacedertThat(performGet("/raw-response/flowable", new HttpHeaders(), String.clreplaced).getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void personResponseBody(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> responseEnreplacedy = performGet("/person-response/person", JSON, Person.clreplaced);
        replacedertThat(responseEnreplacedy.getHeaders().getContentLength()).isEqualTo(17);
        replacedertThat(responseEnreplacedy.getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void personResponseBodyWithCompletableFuture(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> responseEnreplacedy = performGet("/person-response/completable-future", JSON, Person.clreplaced);
        replacedertThat(responseEnreplacedy.getHeaders().getContentLength()).isEqualTo(17);
        replacedertThat(responseEnreplacedy.getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void personResponseBodyWithMono(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> responseEnreplacedy = performGet("/person-response/mono", JSON, Person.clreplaced);
        replacedertThat(responseEnreplacedy.getHeaders().getContentLength()).isEqualTo(17);
        replacedertThat(responseEnreplacedy.getBody()).isEqualTo(expected);
    }

    // SPR-17506
    @ParameterizedHttpServerTest
    public void personResponseBodyWithEmptyMono(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        ResponseEnreplacedy<Person> responseEnreplacedy = performGet("/person-response/mono-empty", JSON, Person.clreplaced);
        replacedertThat(responseEnreplacedy.getHeaders().getContentLength()).isEqualTo(0);
        replacedertThat(responseEnreplacedy.getBody()).isNull();
        // As we're on the same connection, the 2nd request proves server response handling
        // did complete after the 1st request..
        responseEnreplacedy = performGet("/person-response/mono-empty", JSON, Person.clreplaced);
        replacedertThat(responseEnreplacedy.getHeaders().getContentLength()).isEqualTo(0);
        replacedertThat(responseEnreplacedy.getBody()).isNull();
    }

    @ParameterizedHttpServerTest
    public void personResponseBodyWithMonoDeclaredAsObject(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> enreplacedy = performGet("/person-response/mono-declared-as-object", JSON, Person.clreplaced);
        replacedertThat(enreplacedy.getHeaders().getContentLength()).isEqualTo(17);
        replacedertThat(enreplacedy.getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void personResponseBodyWithSingle(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> enreplacedy = performGet("/person-response/single", JSON, Person.clreplaced);
        replacedertThat(enreplacedy.getHeaders().getContentLength()).isEqualTo(17);
        replacedertThat(enreplacedy.getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void personResponseBodyWithMonoResponseEnreplacedy(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        Person expected = new Person("Robert");
        ResponseEnreplacedy<Person> enreplacedy = performGet("/person-response/mono-response-enreplacedy", JSON, Person.clreplaced);
        replacedertThat(enreplacedy.getHeaders().getContentLength()).isEqualTo(17);
        replacedertThat(enreplacedy.getBody()).isEqualTo(expected);
    }

    // SPR-16172
    @ParameterizedHttpServerTest
    public void personResponseBodyWithMonoResponseEnreplacedyXml(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        String url = "/person-response/mono-response-enreplacedy-xml";
        ResponseEnreplacedy<String> enreplacedy = performGet(url, new HttpHeaders(), String.clreplaced);
        String actual = enreplacedy.getBody();
        replacedertThat(enreplacedy.getHeaders().getContentLength()).isEqualTo(91);
        replacedertThat(actual).isEqualTo(("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<person><name>Robert</name></person>"));
    }

    @ParameterizedHttpServerTest
    public void personResponseBodyWithList(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        List<?> expected = asList(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<List<Person>> enreplacedy = performGet("/person-response/list", JSON, PERSON_LIST);
        replacedertThat(enreplacedy.getHeaders().getContentLength()).isEqualTo(36);
        replacedertThat(enreplacedy.getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void personResponseBodyWithPublisher(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        List<?> expected = asList(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<List<Person>> enreplacedy = performGet("/person-response/publisher", JSON, PERSON_LIST);
        replacedertThat(enreplacedy.getHeaders().getContentLength()).isEqualTo(-1);
        replacedertThat(enreplacedy.getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void personResponseBodyWithFlux(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        List<?> expected = asList(new Person("Robert"), new Person("Marie"));
        replacedertThat(performGet("/person-response/flux", JSON, PERSON_LIST).getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void personResponseBodyWithObservable(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        List<?> expected = asList(new Person("Robert"), new Person("Marie"));
        replacedertThat(performGet("/person-response/observable", JSON, PERSON_LIST).getBody()).isEqualTo(expected);
    }

    @ParameterizedHttpServerTest
    public void resource(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        ResponseEnreplacedy<byte[]> response = performGet("/resource", new HttpHeaders(), byte[].clreplaced);
        replacedertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(response.hasBody()).isTrue();
        replacedertThat(response.getHeaders().getContentLength()).isEqualTo(951);
        replacedertThat(response.getBody().length).isEqualTo(951);
        replacedertThat(response.getHeaders().getContentType()).isEqualTo(new MediaType("image", "png"));
    }

    @ParameterizedHttpServerTest
    public void personTransform(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        replacedertThat(performPost("/person-transform/person", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody()).isEqualTo(new Person("ROBERT"));
    }

    @ParameterizedHttpServerTest
    public void personTransformWithCompletableFuture(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        replacedertThat(performPost("/person-transform/completable-future", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody()).isEqualTo(new Person("ROBERT"));
    }

    @ParameterizedHttpServerTest
    public void personTransformWithMono(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        replacedertThat(performPost("/person-transform/mono", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody()).isEqualTo(new Person("ROBERT"));
    }

    // SPR-16759
    @ParameterizedHttpServerTest
    public void personTransformWithMonoAndXml(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        replacedertThat(performPost("/person-transform/mono", MediaType.APPLICATION_XML, new Person("Robert"), MediaType.APPLICATION_XML, Person.clreplaced).getBody()).isEqualTo(new Person("ROBERT"));
    }

    @ParameterizedHttpServerTest
    public void personTransformWithSingle(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        replacedertThat(performPost("/person-transform/single", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody()).isEqualTo(new Person("ROBERT"));
    }

    @ParameterizedHttpServerTest
    public void personTransformWithRxJava2Single(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        replacedertThat(performPost("/person-transform/rxjava2-single", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody()).isEqualTo(new Person("ROBERT"));
    }

    @ParameterizedHttpServerTest
    public void personTransformWithRxJava2Maybe(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        replacedertThat(performPost("/person-transform/rxjava2-maybe", JSON, new Person("Robert"), JSON, Person.clreplaced).getBody()).isEqualTo(new Person("ROBERT"));
    }

    @ParameterizedHttpServerTest
    public void personTransformWithPublisher(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        List<?> req = asList(new Person("Robert"), new Person("Marie"));
        List<?> res = asList(new Person("ROBERT"), new Person("MARIE"));
        replacedertThat(performPost("/person-transform/publisher", JSON, req, JSON, PERSON_LIST).getBody()).isEqualTo(res);
    }

    @ParameterizedHttpServerTest
    public void personTransformWithFlux(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        List<?> req = asList(new Person("Robert"), new Person("Marie"));
        List<?> res = asList(new Person("ROBERT"), new Person("MARIE"));
        replacedertThat(performPost("/person-transform/flux", JSON, req, JSON, PERSON_LIST).getBody()).isEqualTo(res);
    }

    @ParameterizedHttpServerTest
    public void personTransformWithObservable(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        List<?> req = asList(new Person("Robert"), new Person("Marie"));
        List<?> res = asList(new Person("ROBERT"), new Person("MARIE"));
        replacedertThat(performPost("/person-transform/observable", JSON, req, JSON, PERSON_LIST).getBody()).isEqualTo(res);
    }

    @ParameterizedHttpServerTest
    public void personTransformWithRxJava2Observable(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        List<?> req = asList(new Person("Robert"), new Person("Marie"));
        List<?> res = asList(new Person("ROBERT"), new Person("MARIE"));
        replacedertThat(performPost("/person-transform/rxjava2-observable", JSON, req, JSON, PERSON_LIST).getBody()).isEqualTo(res);
    }

    @ParameterizedHttpServerTest
    public void personTransformWithFlowable(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        List<?> req = asList(new Person("Robert"), new Person("Marie"));
        List<?> res = asList(new Person("ROBERT"), new Person("MARIE"));
        replacedertThat(performPost("/person-transform/flowable", JSON, req, JSON, PERSON_LIST).getBody()).isEqualTo(res);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithPublisherJson(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/publisher", JSON, asList(new Person("Robert"), new Person("Marie")), null, Void.clreplaced);
        replacedertThat(enreplacedy.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(2);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithPublisherXml(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        People people = new People(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<Void> response = performPost("/person-create/publisher", APPLICATION_XML, people, null, Void.clreplaced);
        replacedertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(2);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithMono(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/mono", JSON, new Person("Robert"), null, Void.clreplaced);
        replacedertThat(enreplacedy.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(1);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithSingle(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/single", JSON, new Person("Robert"), null, Void.clreplaced);
        replacedertThat(enreplacedy.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(1);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithRxJava2Single(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/rxjava2-single", JSON, new Person("Robert"), null, Void.clreplaced);
        replacedertThat(enreplacedy.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(1);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithFluxJson(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/flux", JSON, asList(new Person("Robert"), new Person("Marie")), null, Void.clreplaced);
        replacedertThat(enreplacedy.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(2);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithFluxXml(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        People people = new People(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<Void> response = performPost("/person-create/flux", APPLICATION_XML, people, null, Void.clreplaced);
        replacedertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(2);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithObservableJson(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/observable", JSON, asList(new Person("Robert"), new Person("Marie")), null, Void.clreplaced);
        replacedertThat(enreplacedy.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(2);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithRxJava2ObservableJson(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/rxjava2-observable", JSON, asList(new Person("Robert"), new Person("Marie")), null, Void.clreplaced);
        replacedertThat(enreplacedy.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(2);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithObservableXml(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        People people = new People(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<Void> response = performPost("/person-create/observable", APPLICATION_XML, people, null, Void.clreplaced);
        replacedertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(2);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithRxJava2ObservableXml(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        People people = new People(new Person("Robert"), new Person("Marie"));
        String url = "/person-create/rxjava2-observable";
        ResponseEnreplacedy<Void> response = performPost(url, APPLICATION_XML, people, null, Void.clreplaced);
        replacedertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(2);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithFlowableJson(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        ResponseEnreplacedy<Void> enreplacedy = performPost("/person-create/flowable", JSON, asList(new Person("Robert"), new Person("Marie")), null, Void.clreplaced);
        replacedertThat(enreplacedy.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(2);
    }

    @ParameterizedHttpServerTest
    public void personCreateWithFlowableXml(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        People people = new People(new Person("Robert"), new Person("Marie"));
        ResponseEnreplacedy<Void> response = performPost("/person-create/flowable", APPLICATION_XML, people, null, Void.clreplaced);
        replacedertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(getApplicationContext().getBean(PersonCreateController.clreplaced).persons.size()).isEqualTo(2);
    }

    @Disabled
    // gh-23791
    @ParameterizedHttpServerTest
    public void personCreateViaDefaultMethodWithGenerics(HttpServer httpServer) throws Exception {
        startServer(httpServer);
        ResponseEnreplacedy<String> enreplacedy = performPost("/23791", JSON, new Person("Robert"), null, String.clreplaced);
        replacedertThat(enreplacedy.getStatusCode()).isEqualTo(HttpStatus.OK);
        replacedertThat(enreplacedy.getBody()).isEqualTo("Person");
    }

    @Configuration
    @EnableWebFlux
    @ComponentScan(resourcePattern = "**/RequestMappingMessageConversionIntegrationTests$*.clreplaced")
    @SuppressWarnings({ "unused", "WeakerAccess" })
    static clreplaced WebConfig {
    }

    @RestController
    @RequestMapping("/raw-response")
    @SuppressWarnings("unused")
    private static clreplaced RawResponseBodyController {

        @GetMapping("/publisher")
        public Publisher<ByteBuffer> getPublisher() {
            DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
            Jackson2JsonEncoder encoder = new Jackson2JsonEncoder();
            return encoder.encode(Mono.just(new Person("Robert")), dataBufferFactory, ResolvableType.forClreplaced(Person.clreplaced), JSON, Collections.emptyMap()).map(DataBuffer::asByteBuffer);
        }

        @GetMapping("/flux")
        public Flux<ByteBuffer> getFlux() {
            return Flux.just(ByteBuffer.wrap("Hello!".getBytes()));
        }

        @GetMapping("/mono")
        public Mono<ByteBuffer> getMonoString() {
            return Mono.just(ByteBuffer.wrap("Hello!".getBytes()));
        }

        @GetMapping("/observable")
        public Observable<ByteBuffer> getObservable() {
            return Observable.just(ByteBuffer.wrap("Hello!".getBytes()));
        }

        @GetMapping("/rxjava2-observable")
        public io.reactivex.Observable<ByteBuffer> getRxJava2Observable() {
            return io.reactivex.Observable.just(ByteBuffer.wrap("Hello!".getBytes()));
        }

        @GetMapping("/flowable")
        public Flowable<ByteBuffer> getFlowable() {
            return Flowable.just(ByteBuffer.wrap("Hello!".getBytes()));
        }
    }

    @RestController
    @RequestMapping("/person-response")
    @SuppressWarnings("unused")
    private static clreplaced PersonResponseBodyController {

        @GetMapping("/person")
        public Person getPerson() {
            return new Person("Robert");
        }

        @GetMapping("/completable-future")
        public CompletableFuture<Person> getCompletableFuture() {
            return CompletableFuture.completedFuture(new Person("Robert"));
        }

        @GetMapping("/mono")
        public Mono<Person> getMono() {
            return Mono.just(new Person("Robert"));
        }

        @GetMapping("/mono-empty")
        public Mono<Person> getMonoEmpty() {
            return Mono.empty();
        }

        @GetMapping("/mono-declared-as-object")
        public Object getMonoDeclaredAsObject() {
            return Mono.just(new Person("Robert"));
        }

        @GetMapping("/single")
        public Single<Person> getSingle() {
            return Single.just(new Person("Robert"));
        }

        @GetMapping("/mono-response-enreplacedy")
        public ResponseEnreplacedy<Mono<Person>> getMonoResponseEnreplacedy() {
            Mono<Person> body = Mono.just(new Person("Robert"));
            return ResponseEnreplacedy.ok(body);
        }

        @GetMapping("/mono-response-enreplacedy-xml")
        public ResponseEnreplacedy<Mono<Person>> getMonoResponseEnreplacedyXml() {
            Mono<Person> body = Mono.just(new Person("Robert"));
            return ResponseEnreplacedy.ok().contentType(MediaType.APPLICATION_XML).body(body);
        }

        @GetMapping("/list")
        public List<Person> getList() {
            return asList(new Person("Robert"), new Person("Marie"));
        }

        @GetMapping("/publisher")
        public Publisher<Person> getPublisher() {
            return Flux.just(new Person("Robert"), new Person("Marie"));
        }

        @GetMapping("/flux")
        public Flux<Person> getFlux() {
            return Flux.just(new Person("Robert"), new Person("Marie"));
        }

        @GetMapping("/observable")
        public Observable<Person> getObservable() {
            return Observable.just(new Person("Robert"), new Person("Marie"));
        }
    }

    @RestController
    @SuppressWarnings("unused")
    private static clreplaced ResourceController {

        @GetMapping("/resource")
        public Resource resource() {
            return new ClreplacedPathResource("/org/springframework/web/reactive/spring.png");
        }
    }

    @RestController
    @RequestMapping("/person-transform")
    @SuppressWarnings("unused")
    private static clreplaced PersonTransformationController {

        @PostMapping("/person")
        public Person transformPerson(@RequestBody Person person) {
            return new Person(person.getName().toUpperCase());
        }

        @PostMapping("/completable-future")
        public CompletableFuture<Person> transformCompletableFuture(@RequestBody CompletableFuture<Person> personFuture) {
            return personFuture.thenApply(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/mono")
        public Mono<Person> transformMono(@RequestBody Mono<Person> personFuture) {
            return personFuture.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/single")
        public Single<Person> transformSingle(@RequestBody Single<Person> personFuture) {
            return personFuture.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/rxjava2-single")
        public io.reactivex.Single<Person> transformRxJava2Single(@RequestBody io.reactivex.Single<Person> personFuture) {
            return personFuture.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/rxjava2-maybe")
        public Maybe<Person> transformRxJava2Maybe(@RequestBody Maybe<Person> personFuture) {
            return personFuture.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/publisher")
        public Publisher<Person> transformPublisher(@RequestBody Publisher<Person> persons) {
            return Flux.from(persons).map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/flux")
        public Flux<Person> transformFlux(@RequestBody Flux<Person> persons) {
            return persons.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/observable")
        public Observable<Person> transformObservable(@RequestBody Observable<Person> persons) {
            return persons.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/rxjava2-observable")
        public io.reactivex.Observable<Person> transformObservable(@RequestBody io.reactivex.Observable<Person> persons) {
            return persons.map(person -> new Person(person.getName().toUpperCase()));
        }

        @PostMapping("/flowable")
        public Flowable<Person> transformFlowable(@RequestBody Flowable<Person> persons) {
            return persons.map(person -> new Person(person.getName().toUpperCase()));
        }
    }

    @RestController
    @RequestMapping("/person-create")
    @SuppressWarnings("unused")
    private static clreplaced PersonCreateController {

        final List<Person> persons = new ArrayList<>();

        @PostMapping("/publisher")
        public Publisher<Void> createWithPublisher(@RequestBody Publisher<Person> publisher) {
            return Flux.from(publisher).doOnNext(persons::add).then();
        }

        @PostMapping("/mono")
        public Mono<Void> createWithMono(@RequestBody Mono<Person> mono) {
            return mono.doOnNext(persons::add).then();
        }

        @PostMapping("/single")
        public Completable createWithSingle(@RequestBody Single<Person> single) {
            return single.map(persons::add).toCompletable();
        }

        @PostMapping("/rxjava2-single")
        public io.reactivex.Completable createWithRxJava2Single(@RequestBody io.reactivex.Single<Person> single) {
            return single.map(persons::add).ignoreElement();
        }

        @PostMapping("/flux")
        public Mono<Void> createWithFlux(@RequestBody Flux<Person> flux) {
            return flux.doOnNext(persons::add).then();
        }

        @PostMapping("/observable")
        public Observable<Void> createWithObservable(@RequestBody Observable<Person> observable) {
            return observable.toList().doOnNext(persons::addAll).flatMap(doreplacedent -> Observable.empty());
        }

        @PostMapping("/rxjava2-observable")
        public io.reactivex.Completable createWithRxJava2Observable(@RequestBody io.reactivex.Observable<Person> observable) {
            return observable.toList().doOnSuccess(persons::addAll).ignoreElement();
        }

        @PostMapping("/flowable")
        public io.reactivex.Completable createWithFlowable(@RequestBody Flowable<Person> flowable) {
            return flowable.toList().doOnSuccess(persons::addAll).ignoreElement();
        }
    }

    @XmlRootElement
    @SuppressWarnings("unused")
    private static clreplaced Person {

        private String name;

        public Person() {
        }

        public Person(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) {
                return true;
            }
            if (o == null || getClreplaced() != o.getClreplaced()) {
                return false;
            }
            Person person = (Person) o;
            return !(this.name != null ? !this.name.equals(person.name) : person.name != null);
        }

        @Override
        public int hashCode() {
            return this.name != null ? this.name.hashCode() : 0;
        }

        @Override
        public String toString() {
            return "Person{" + "name='" + name + '\'' + '}';
        }
    }

    @XmlRootElement
    @SuppressWarnings({ "WeakerAccess", "unused" })
    private static clreplaced People {

        private List<Person> persons = new ArrayList<>();

        public People() {
        }

        public People(Person... persons) {
            this.persons.addAll(Arrays.asList(persons));
        }

        @XmlElement
        public List<Person> getPerson() {
            return this.persons;
        }
    }

    private interface Controller23791<E> {

        @PostMapping("/23791")
        default Mono<String> test(@RequestBody Mono<E> body) {
            return body.map(value -> value.getClreplaced().getSimpleName());
        }
    }

    @RestController
    private static clreplaced ConcreteController23791 implements Controller23791<Person> {
    }
}

19 View Source File : ServerRequestWrapperTests.java
License : Apache License 2.0
Project Creator : SourceHot

@Test
public void bodyToMonoParameterizedTypeReference() {
    Mono<String> result = Mono.just("foo");
    ParameterizedTypeReference<String> reference = new ParameterizedTypeReference<String>() {
    };
    given(mockRequest.bodyToMono(reference)).willReturn(result);
    replacedertThat(wrapper.bodyToMono(reference)).isSameAs(result);
}

See More Examples