package org.xmx0632.deliciousfruit.api.v1;
import static org.junit.Assert.assertEquals;
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.RestTemplate;
import org.xmx0632.deliciousfruit.api.v1.bo.LoginRequest;
import org.xmx0632.deliciousfruit.api.v1.bo.LoginResponse;
import org.xmx0632.deliciousfruit.functional.BaseControllerTestCase;
public class UserAccountApiControllerLoginRestTemplateTest extends
BaseControllerTestCase {
private final RestTemplate restTemplate = new RestTemplate();
private static String url;
@BeforeClass
public static void initUrl() {
url = baseUrl + "/user/login";
}
@Test
public void testLoginSuccess() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("user3", "password");
LoginRequest loginRequest = new LoginRequest();
loginRequest.setLoginName("user3");
HttpEntity<LoginRequest> entity = new HttpEntity<LoginRequest>(
loginRequest, requestHeaders);
LoginResponse response = restTemplate.postForObject(url, entity,
LoginResponse.class);
String expected = "LoginResponse [result=Result [msg=, value=0], user=UserAccountDTO [customerId=3, customerName=user3, sex=0, mobile=13800138003, email=user3@gmail.com, username=user3, credit=0]]";
assertEquals(expected, response.toString());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"合法的用户登录(英文登录名)", jsonMapper.toJson(loginRequest),
jsonMapper.toJson(response));
}
@Test
public void testLoginWithNotExistUserFail1() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("notExistUser",
"password");
String message = "{\"loginName\":\"notExistUser\"}";
String response = sendPostMsg("notExistUser", "password", message, url);
String expected = "401 Unauthorized\r\nno user found";
assertEquals(expected, response.toString());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders, "不存在的用户登录",
message, jsonMapper.toJson(response));
}
@Test
public void testLoginWithUser2PasswordErrorFail() throws Exception {
String message = "{\"loginName\":\"user2\"}";
String response = sendPostMsg("user2", "password1", message, url);
String expected = "401 Unauthorized\r\npassword error";
assertEquals(expected, response.toString());
formatHttpInfoPrint(HttpMethod.POST, url, null, "密码错误", message,
jsonMapper.toJson(response));
}
@Test
public void testLoginWithNotExistUserFail() throws Exception {
LoginRequest loginRequest = new LoginRequest();
HttpHeaders requestHeaders = createHttpHeader("notExistUser",
"password");
try {
loginRequest.setLoginName("notExistUser");
HttpEntity<LoginRequest> entity = new HttpEntity<LoginRequest>(
loginRequest, requestHeaders);
restTemplate.postForObject(url, entity, LoginResponse.class);
} catch (Exception e) {
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"不存在的用户登录", jsonMapper.toJson(loginRequest), e.getMessage());
}
}
@Test
public void testLoginWithChineseSuccess() throws Exception {
HttpHeaders requestHeaders = createHttpHeader("用户4", "password");
LoginRequest loginRequest = new LoginRequest();
loginRequest.setLoginName("用户4");
HttpEntity<LoginRequest> entity = new HttpEntity<LoginRequest>(
loginRequest, requestHeaders);
LoginResponse response = restTemplate.postForObject(url, entity,
LoginResponse.class);
String expected = "LoginResponse [result=Result [msg=, value=0], user=UserAccountDTO [customerId=4, customerName=用户3, sex=0, mobile=13800138004, email=user4@gmail.com, username=用户4, credit=0]]";
assertEquals(expected, response.toString());
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"合法的用户登录(中文登录名)", jsonMapper.toJson(loginRequest),
jsonMapper.toJson(response));
}
@Test
public void testLoginWithBannedAccount() throws Exception {
LoginRequest loginRequest = new LoginRequest();
HttpHeaders requestHeaders = createHttpHeader("bannedUser", "password");
try {
loginRequest.setLoginName("bannedUser");
HttpEntity<LoginRequest> entity = new HttpEntity<LoginRequest>(
loginRequest, requestHeaders);
restTemplate.postForObject(url, entity, LoginResponse.class);
} catch (Exception e) {
formatHttpInfoPrint(HttpMethod.POST, url, requestHeaders,
"已冻结用户登录", jsonMapper.toJson(loginRequest), e.getMessage());
}
}
}