+ void consumerChangingInfoTypeGetRejected() throws Exception {
+ putEiProducerWithOneType("producer1", "typeId1");
+ putEiProducerWithOneType("producer2", "typeId2");
+ putEiJob("typeId1", "jobId");
+
+ String url = ConsumerConsts.API_ROOT + "/info-jobs/jobId";
+ String body = gson.toJson(consumerJobInfo("typeId2", "jobId"));
+ testErrorCode(restClient().put(url, body), HttpStatus.CONFLICT, "Not allowed to change type for existing job");
+ }
+
+ @Test
+ void producerPutEiType() throws JsonMappingException, JsonProcessingException, ServiceException {
+ assertThat(putEiType(TYPE_ID)).isEqualTo(HttpStatus.CREATED);
+ assertThat(putEiType(TYPE_ID)).isEqualTo(HttpStatus.OK);
+ }
+
+ @Test
+ void producerPutEiType_noSchema() {
+ String url = ProducerConsts.API_ROOT + "/eitypes/" + TYPE_ID;
+ String body = "{}";
+ testErrorCode(restClient().put(url, body), HttpStatus.BAD_REQUEST, "No schema provided");
+ }
+
+ @Test
+ void producerDeleteEiType() throws Exception {
+ putEiType(TYPE_ID);
+ String url = ProducerConsts.API_ROOT + "/eitypes/" + TYPE_ID;
+ restClient().delete(url).block();
+ assertThat(this.eiTypes.size()).isEqualTo(0);
+
+ testErrorCode(restClient().delete(url), HttpStatus.NOT_FOUND, "Information type not found");
+ }
+
+ @Test
+ void producerDeleteEiTypeExistingProducer() throws Exception {
+ putEiProducerWithOneType(PRODUCER_ID, TYPE_ID);
+ String url = ProducerConsts.API_ROOT + "/eitypes/" + TYPE_ID;
+ testErrorCode(restClient().delete(url), HttpStatus.NOT_ACCEPTABLE,
+ "The type has active producers: " + PRODUCER_ID);
+ assertThat(this.eiTypes.size()).isEqualTo(1);
+ }
+
+ @Test
+ void producerPutProducerWithOneType_rejecting()
+ throws JsonMappingException, JsonProcessingException, ServiceException {
+ putEiProducerWithOneTypeRejecting("simulateProducerError", TYPE_ID);
+ String url = A1eConsts.API_ROOT + "/eijobs/" + EI_JOB_ID;
+ String body = gson.toJson(eiJobInfo());
+ restClient().put(url, body).block();
+
+ ProducerSimulatorController.TestResults simulatorResults = this.producerSimulator.getTestResults();
+ // There is one retry -> 2 calls
+ await().untilAsserted(() -> assertThat(simulatorResults.noOfRejectedCreate).isEqualTo(2));
+ assertThat(simulatorResults.noOfRejectedCreate).isEqualTo(2);
+
+ verifyJobStatus(EI_JOB_ID, "DISABLED");
+ }
+
+ @Test
+ void producerGetEiProducerTypes() throws Exception {
+ final String EI_TYPE_ID_2 = TYPE_ID + "_2";
+ putEiProducerWithOneType("producer1", TYPE_ID);
+ putEiJob(TYPE_ID, "jobId");
+ putEiProducerWithOneType("producer2", EI_TYPE_ID_2);
+ putEiJob(EI_TYPE_ID_2, "jobId2");
+ String url = ProducerConsts.API_ROOT + "/eitypes";
+
+ ResponseEntity<String> resp = restClient().getForEntity(url).block();
+ assertThat(resp.getStatusCode()).isEqualTo(HttpStatus.OK);
+ assertThat(resp.getBody()).contains(TYPE_ID);
+ assertThat(resp.getBody()).contains(EI_TYPE_ID_2);
+ }
+
+ @Test
+ void producerPutEiProducer() throws Exception {
+ this.putEiType(TYPE_ID);