Java tutorial
/******************************************************************************* * Copyright (c) 2005, 2014 springside.github.io * * Licensed under the Apache License, Version 2.0 (the "License"); *******************************************************************************/ package cn.dsgrp.field.stock.functional.rest; import static org.assertj.core.api.Assertions.*; import java.math.BigInteger; 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 cn.dsgrp.field.stock.data.TaskData; import cn.dsgrp.field.stock.entity.Task; import cn.dsgrp.field.stock.functional.BaseFunctionalTestCase; import org.springside.modules.mapper.JsonMapper; import org.springside.modules.test.category.Smoke; /** * ?, ?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() { Task task = restTemplate.getForObject(resourceUrl + "/{id}", Task.class, 1L); assertThat(task.getTitle()).isEqualTo("Study PlayFramework 2.0"); } /** * //. */ @Test @Category(Smoke.class) public void createUpdateAndDeleteTask() { // create Task task = TaskData.randomTask(); URI createdTaskUri = restTemplate.postForLocation(resourceUrl, task); System.out.println(createdTaskUri.toString()); Task createdTask = restTemplate.getForObject(createdTaskUri, Task.class); assertThat(createdTask.getTitle()).isEqualTo(task.getTitle()); // update String id = StringUtils.substringAfterLast(createdTaskUri.toString(), "/"); task.setId(BigInteger.valueOf(Long.parseLong(id))); task.setTitle(TaskData.randomTitle()); restTemplate.put(createdTaskUri, task); Task updatedTask = restTemplate.getForObject(createdTaskUri, Task.class); assertThat(updatedTask.getTitle()).isEqualTo(task.getTitle()); // delete restTemplate.delete(createdTaskUri); try { restTemplate.getForObject(createdTaskUri, Task.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 Task titleBlankTask = new Task(); 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(BigInteger.valueOf(1)); 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<Task> { } }