Java tutorial
/******************************************************************************* * Copyright (c) 2005, 2014 springside.github.io * * Licensed under the Apache License, Version 2.0 (the "License"); *******************************************************************************/ package com.asiainfo.tfsPlatform.web.functional.rest; import static org.assertj.core.api.Assertions.*; import java.net.URI; import java.util.ArrayList; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.junit.Test; import org.junit.experimental.categories.Category; import org.springframework.http.HttpStatus; import org.springframework.web.client.HttpStatusCodeException; import org.springframework.web.client.RestTemplate; import com.asiainfo.tfsPlatform.dto.TaskDto; import com.asiainfo.tfsPlatform.modules.mapper.JsonMapper; import com.asiainfo.tfsPlatform.modules.test.category.Smoke; import com.asiainfo.tfsPlatform.web.data.TaskData; import com.asiainfo.tfsPlatform.web.functional.BaseFunctionalTestCase; /** * ?, ?JavaScript???. * * @author calvin */ public class TaskRestFT extends BaseFunctionalTestCase { private static String resourceUrl = baseUrl + "/api/v1/task"; private final RestTemplate restTemplate = new RestTemplate(); private final JsonMapper jsonMapper = new JsonMapper(); /** * . */ @Test @Category(Smoke.class) public void listTasks() { TaskList tasks = restTemplate.getForObject(resourceUrl, TaskList.class); assertThat(tasks).hasSize(5); assertThat(tasks.get(0).getTitle()).isEqualTo("Study PlayFramework 2.0"); } /** * ?. */ @Test @Category(Smoke.class) public void getTask() { TaskDto task = restTemplate.getForObject(resourceUrl + "/{id}", TaskDto.class, 1L); assertThat(task.getTitle()).isEqualTo("Study PlayFramework 2.0"); } /** * //. */ @Test @Category(Smoke.class) public void createUpdateAndDeleteTask() { // create TaskDto task = TaskData.randomTask(); URI createdTaskUri = restTemplate.postForLocation(resourceUrl, task); System.out.println(createdTaskUri.toString()); TaskDto createdTask = restTemplate.getForObject(createdTaskUri, TaskDto.class); assertThat(createdTask.getTitle()).isEqualTo(task.getTitle()); // update String id = StringUtils.substringAfterLast(createdTaskUri.toString(), "/"); task.setId(new Long(id)); task.setTitle(TaskData.randomTitle()); restTemplate.put(createdTaskUri, task); TaskDto updatedTask = restTemplate.getForObject(createdTaskUri, TaskDto.class); assertThat(updatedTask.getTitle()).isEqualTo(task.getTitle()); // delete restTemplate.delete(createdTaskUri); try { restTemplate.getForObject(createdTaskUri, TaskDto.class); fail("Get should fail while feth a deleted task"); } catch (HttpStatusCodeException e) { assertThat(e.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); } } @Test public void invalidInput() { // create TaskDto titleBlankTask = new TaskDto(); try { restTemplate.postForLocation(resourceUrl, titleBlankTask); fail("Create should fail while title is blank"); } catch (HttpStatusCodeException e) { assertThat(e.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); Map messages = jsonMapper.fromJson(e.getResponseBodyAsString(), Map.class); assertThat(messages).hasSize(1); assertThat(messages.get("title")).isIn("may not be empty", "?"); } // update titleBlankTask.setId(1L); try { restTemplate.put(resourceUrl + "/1", titleBlankTask); fail("Update should fail while title is blank"); } catch (HttpStatusCodeException e) { assertThat(e.getStatusCode()).isEqualTo(HttpStatus.BAD_REQUEST); Map messages = jsonMapper.fromJson(e.getResponseBodyAsString(), Map.class); assertThat(messages).hasSize(1); assertThat(messages.get("title")).isIn("may not be empty", "?"); } } // ArrayList<Task>RestTemplate???? private static class TaskList extends ArrayList<TaskDto> { } }