TSK-927 set owner - comments from Holger

This commit is contained in:
BerndBreier 2020-02-04 11:56:36 +01:00
parent 22ac25f5c9
commit 12a94193be
1 changed files with 61 additions and 91 deletions

View File

@ -7,7 +7,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.IOException; import java.io.IOException;
@ -642,109 +641,80 @@ class TaskControllerIntTest {
@Test @Test
void testUpdateTaskOwnerOfReadyTaskSucceeds() throws IOException { void testUpdateTaskOwnerOfReadyTaskSucceeds() throws IOException {
URL url = new URL(restHelper.toUrl("/api/v1/tasks/TKI:000000000000000000000000000000000025")); // setup
final String taskUrlString =
restHelper.toUrl("/api/v1/tasks/TKI:000000000000000000000000000000000025");
// retrieve task from Rest Api // retrieve task from Rest Api
HttpURLConnection con = (HttpURLConnection) url.openConnection(); ResponseEntity<TaskResource> responseGet =
con.setRequestMethod("GET"); template.exchange(
con.setRequestProperty("Authorization", "Basic dXNlcl8xXzI6dXNlcl8xXzI="); // user_1_2 taskUrlString,
assertThat(con.getResponseCode()).isEqualTo(200); HttpMethod.GET,
ObjectMapper mapper = new ObjectMapper(); new HttpEntity<>(getHeadersForUser_1_2()),
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); ParameterizedTypeReference.forType(TaskResource.class));
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), UTF_8)); assertThat(responseGet.getBody()).isNotNull();
String inputLine; TaskResource theTaskResource = responseGet.getBody();
StringBuffer content = new StringBuffer(); assertThat(theTaskResource.getState()).isEqualTo(TaskState.READY);
while ((inputLine = in.readLine()) != null) { assertThat(theTaskResource.getOwner() == null);
content.append(inputLine);
}
in.close();
con.disconnect();
final String originalTaskJson = content.toString();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
TaskResource originalTaskObject = mapper.readValue(originalTaskJson, TaskResource.class);
String originalOwner = originalTaskObject.getOwner(); // set Owner and update Task
assertThat(originalOwner == null);
// set owner and call updateTask on Rest Api final String anyUserName = "dummyUser";
final String anyUserName = "Benjamin"; theTaskResource.setOwner(anyUserName);
TaskResource taskObjectWithUpdatedOwner = originalTaskObject; ResponseEntity<TaskResource> responseUpdate =
taskObjectWithUpdatedOwner.setOwner(anyUserName); template.exchange(
con = (HttpURLConnection) url.openConnection(); taskUrlString,
con.setRequestMethod("PUT"); HttpMethod.PUT,
con.setDoOutput(true); new HttpEntity<>(theTaskResource, getHeadersForUser_1_2()),
con.setRequestProperty("Authorization", "Basic dXNlcl8xXzI6dXNlcl8xXzI="); ParameterizedTypeReference.forType(TaskResource.class));
con.setRequestProperty("Content-Type", "application/json");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(con.getOutputStream(), UTF_8));
final String taskWithUpdatedOwnerJson = mapper.writeValueAsString(taskObjectWithUpdatedOwner);
out.write(taskWithUpdatedOwnerJson);
out.flush();
out.close();
assertThat(con.getResponseCode()).isEqualTo(200);
con.disconnect();
// retrieve task once again from Rest Api. assertThat(responseUpdate.getBody()).isNotNull();
con = (HttpURLConnection) url.openConnection(); TaskResource theUpdatedTaskResource = responseUpdate.getBody();
con.setRequestMethod("GET"); assertThat(theUpdatedTaskResource.getState()).isEqualTo(TaskState.READY);
con.setRequestProperty("Authorization", "Basic dXNlcl8xXzI6dXNlcl8xXzI="); assertThat(theUpdatedTaskResource.getOwner()).isEqualTo(anyUserName);
assertThat(con.getResponseCode()).isEqualTo(200);
in = new BufferedReader(new InputStreamReader(con.getInputStream(), UTF_8));
content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
con.disconnect();
final String retrievedTaskJson = content.toString();
TaskResource retrievedTaskObject = mapper.readValue(retrievedTaskJson, TaskResource.class);
assertThat(retrievedTaskObject.getOwner()).isEqualTo(anyUserName);
} }
@Test @Test
void testUpdateTaskOwnerOfClaimedTaskFails() throws IOException { void testUpdateTaskOwnerOfClaimedTaskFails() throws IOException {
URL url = new URL(restHelper.toUrl("/api/v1/tasks/TKI:000000000000000000000000000000000026")); // setup
final String taskUrlString =
restHelper.toUrl("/api/v1/tasks/TKI:000000000000000000000000000000000026");
// retrieve task from Rest Api // retrieve task from Rest Api
HttpURLConnection con = (HttpURLConnection) url.openConnection(); ResponseEntity<TaskResource> responseGet =
con.setRequestMethod("GET"); template.exchange(
con.setRequestProperty("Authorization", "Basic dXNlcl8xXzI6dXNlcl8xXzI="); // user_1_2 taskUrlString,
assertThat(con.getResponseCode()).isEqualTo(200); HttpMethod.GET,
ObjectMapper mapper = new ObjectMapper(); new HttpEntity<>(getHeadersForUser_1_2()),
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); ParameterizedTypeReference.forType(TaskResource.class));
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), UTF_8)); assertThat(responseGet.getBody()).isNotNull();
String inputLine; TaskResource theTaskResource = responseGet.getBody();
StringBuffer content = new StringBuffer(); assertThat(theTaskResource.getState()).isEqualTo(TaskState.CLAIMED);
while ((inputLine = in.readLine()) != null) { assertThat(theTaskResource.getOwner()).isEqualTo("user_1_1");
content.append(inputLine);
}
in.close();
con.disconnect();
final String originalTaskJson = content.toString();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
TaskResource originalTaskObject = mapper.readValue(originalTaskJson, TaskResource.class);
String originalOwner = originalTaskObject.getOwner(); // set Owner and update Task
assertThat(originalTaskObject.getOwner()).isEqualTo("user_1_1");
assertThat(originalTaskObject.getState()).isEqualTo(TaskState.CLAIMED);
// set owner and call updateTask on Rest Api final String anyUserName = "dummyuser";
final String anyUserName = "Mustapha"; theTaskResource.setOwner(anyUserName);
TaskResource taskObjectWithUpdatedOwner = originalTaskObject;
taskObjectWithUpdatedOwner.setOwner(anyUserName); assertThatThrownBy(
con = (HttpURLConnection) url.openConnection(); () ->
con.setRequestMethod("PUT"); template.exchange(
con.setDoOutput(true); taskUrlString,
con.setRequestProperty("Authorization", "Basic dXNlcl8xXzI6dXNlcl8xXzI="); HttpMethod.PUT,
con.setRequestProperty("Content-Type", "application/json"); new HttpEntity<>(theTaskResource, getHeadersForUser_1_2()),
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(con.getOutputStream(), UTF_8)); ParameterizedTypeReference.forType(TaskResource.class)))
final String taskWithUpdatedOwnerJson = mapper.writeValueAsString(taskObjectWithUpdatedOwner); .isInstanceOf(HttpClientErrorException.class)
out.write(taskWithUpdatedOwnerJson); .hasMessageContaining("409");
out.flush(); }
out.close();
assertThat(con.getResponseCode()).isEqualTo(409); private HttpHeaders getHeadersForUser_1_2() {
con.disconnect(); HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic dXNlcl8xXzI6dXNlcl8xXzI=");
headers.add("Content-Type", "application/json");
return headers;
} }
private TaskResource getTaskResourceSample() { private TaskResource getTaskResourceSample() {