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.UpdatePwdRequest;
import org.xmx0632.deliciousfruit.api.v1.bo.UpdatePwdResponse;
import org.xmx0632.deliciousfruit.functional.BaseControllerTestCase;
public class UserAccountApiControllerUpdatePwdRestTemplateTest extends
BaseControllerTestCase {
private final RestTemplate restTemplate = new RestTemplate();
private static String url;
@BeforeClass
public static void initUrl() {
url = baseUrl + "/user/changePwd";
}
@Test
public void testUpdatePwdSuccess() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user2", "password");
UpdatePwdRequest updateRequest = new UpdatePwdRequest();
updateRequest.setPwd("newPassword");
HttpEntity<UpdatePwdRequest> entity = new HttpEntity<UpdatePwdRequest>(
updateRequest, requestHeaders);
UpdatePwdResponse response = restTemplate.postForObject(url, entity,
UpdatePwdResponse.class);
String expected = "UpdatePwdResponse [result=Result [msg=, value=0], err=null]";
assertEquals(expected, response.toString());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders, "更新密碼成功",
jsonMapper.toJson(updateRequest), jsonMapper.toJson(response));
// recover password
requestHeaders = createHttpHeader("user2", "newPassword");
updateRequest = new UpdatePwdRequest();
updateRequest.setPwd("password");
entity = new HttpEntity<UpdatePwdRequest>(updateRequest, requestHeaders);
response = restTemplate.postForObject(url, entity,
UpdatePwdResponse.class);
expected = "UpdatePwdResponse [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 testUpdateNotExistUserPwdShouldBeFail() throws Exception {
UpdatePwdRequest updateRequest = new UpdatePwdRequest();
HttpHeaders requestHeaders = null;
try {
requestHeaders = createHttpHeader("notExistUser", "password");
updateRequest.setPwd("newPassword");
HttpEntity<UpdatePwdRequest> entity = new HttpEntity<UpdatePwdRequest>(
updateRequest, requestHeaders);
restTemplate.postForObject(url, entity, UpdatePwdResponse.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 testUpdateBannedPwdShouldBeFail() throws Exception {
UpdatePwdRequest updateRequest = new UpdatePwdRequest();
HttpHeaders requestHeaders = null;
try {
requestHeaders = createHttpHeader("bannedUser", "password");
updateRequest.setPwd("newPassword");
HttpEntity<UpdatePwdRequest> entity = new HttpEntity<UpdatePwdRequest>(
updateRequest, requestHeaders);
restTemplate.postForObject(url, entity, UpdatePwdResponse.class);
} catch (HttpClientErrorException e) {
assertEquals("403 Forbidden", e.getMessage());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"已冻结用户更新密碼失败:", jsonMapper.toJson(updateRequest),
e.getMessage());
} catch (UnsupportedEncodingException e) {
fail("服务器状态不正常!");
}
}
}