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("服务器状态不正常!"); } } }