package org.xmx0632.deliciousfruit.api.v1;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.io.UnsupportedEncodingException;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
import org.xmx0632.deliciousfruit.api.v1.bo.UpdateRequest;
import org.xmx0632.deliciousfruit.api.v1.bo.UpdateResponse;
import org.xmx0632.deliciousfruit.functional.BaseControllerTestCase;
public class UserAccountApiControllerUpdateRestTemplateTest extends
BaseControllerTestCase {
private final RestTemplate restTemplate = new RestTemplate();
private static String url;
@BeforeClass
public static void initUrl() {
url = baseUrl + "/user/update";
}
@Test
public void testUpdateSuccess() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.setCustomerName("changeName");
updateRequest.setEmail("aaa@bbb.com");
updateRequest.setMobile("13900000000");
updateRequest.setSex("2");
updateRequest.setUsername("user2");
HttpEntity<UpdateRequest> entity = new HttpEntity<UpdateRequest>(
updateRequest, requestHeaders);
UpdateResponse response = restTemplate.postForObject(url, entity,
UpdateResponse.class);
String expected = "UpdateResponse [result=Result [msg=, value=0], err=null]";
assertEquals(expected, response.toString());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders, "用户更新成功",
jsonMapper.toJson(updateRequest), jsonMapper.toJson(response));
}
@Test
public void testUpdateFail_invalid_property() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.setCustomerName("customerName");
updateRequest.setEmail("aaa@bbb.com");
updateRequest.setMobile("13900000000");
updateRequest.setSex("2");
updateRequest.setUsername(null);
HttpEntity<UpdateRequest> entity = new HttpEntity<UpdateRequest>(
updateRequest, requestHeaders);
UpdateResponse response = restTemplate.postForObject(url, entity,
UpdateResponse.class);
String expected = "UpdateResponse [result=Result [msg=invalid property, value=1], err={username=不能为null}]";
assertEquals(expected, response.toString());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders, "用户更新失败",
jsonMapper.toJson(updateRequest), jsonMapper.toJson(response));
}
@Test
public void testUpdateFail_invalid_authInfo() {
UpdateRequest updateRequest = new UpdateRequest();
HttpHeaders requestHeaders = null;
try {
requestHeaders = createHttpHeader("notExistUser", "password");
updateRequest.setCustomerName("customerName");
updateRequest.setEmail("aaa@bbb.com");
updateRequest.setMobile("13900000000");
updateRequest.setSex("2");
updateRequest.setUsername(null);
HttpEntity<UpdateRequest> entity = new HttpEntity<UpdateRequest>(
updateRequest, requestHeaders);
restTemplate.postForObject(url, entity, UpdateResponse.class);
} catch (HttpClientErrorException e) {
assertEquals("401 Unauthorized", e.getMessage());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders, "用户更新失败",
jsonMapper.toJson(updateRequest), e.getMessage());
} catch (UnsupportedEncodingException e) {
fail("服务器状态不正常!");
}
}
@Test
public void testUpdateFail_banned_authInfo() {
UpdateRequest updateRequest = new UpdateRequest();
HttpHeaders requestHeaders = null;
try {
requestHeaders = createHttpHeader("bannedUser", "password");
updateRequest.setCustomerName("customerName");
updateRequest.setEmail("aaa@bbb.com");
updateRequest.setMobile("13900000000");
updateRequest.setSex("2");
updateRequest.setUsername(null);
HttpEntity<UpdateRequest> entity = new HttpEntity<UpdateRequest>(
updateRequest, requestHeaders);
restTemplate.postForObject(url, entity, UpdateResponse.class);
} catch (HttpClientErrorException e) {
assertEquals("403 Forbidden", e.getMessage());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders, "用户更新失败",
jsonMapper.toJson(updateRequest), e.getMessage());
} catch (UnsupportedEncodingException e) {
fail("服务器状态不正常!");
}
}
}