Commit fa65cadb authored by Java—红包—徐 然's avatar Java—红包—徐 然

Merge branch 'master' into feature/20180108

parents 2fce4508 182c5496
package cn.quantgroup.xyqb.controller.internal.user;
import cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller;
import cn.quantgroup.xyqb.entity.UserAuthorized;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.UserAuthorizedParam;
import cn.quantgroup.xyqb.service.auth.IUserAuthorizedService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author xufei on 2018/1/5.
*/
@RestController
@RequestMapping("/user/auth")
public class UserAuthorizedController {
private static final Logger LOGGER = LoggerFactory.getLogger(UserAuthorizedController.class);
@Resource
private IUserAuthorizedService userAuthorizedService;
@LogHttpCaller
@RequestMapping(value = "/hasUserAuthorized")
public JsonResult hasUserAuthorized(String idNo) {
LOGGER.info("[hasUserAuthorized]需要校验的用户的身份证号为idNo:{}", idNo);
if (userAuthorizedService.hasUserAuthorized(idNo)) {
return JsonResult.buildSuccessResult(null, true);
} else {
return JsonResult.buildErrorStateResult(null, false);
}
}
@LogHttpCaller
@RequestMapping(value = "/createUserAuthorized")
public JsonResult createUserAuthorized(UserAuthorizedParam userAuthorizedParam) {
LOGGER.info("[createUserAuthorized]创建实名账户,userAuthorizedParam:{},", userAuthorizedParam);
try {
if (userAuthorizedService.checkUserAuthorizedParam(userAuthorizedParam)) {
return JsonResult.buildErrorStateResult("参数异常", null);
}
} catch (Exception e) {
LOGGER.info("[createUserAuthorized]创建实名账户失败e:{}", e);
return JsonResult.buildErrorStateResult("参数异常", null);
}
UserAuthorized userAuthorized = userAuthorizedService.createUserAuthorized(userAuthorizedParam);
if (null == userAuthorized) {
return JsonResult.buildErrorStateResult("重复创建异常", null);
} else {
return JsonResult.buildSuccessResult("创建成功", userAuthorized.getId());
}
}
@LogHttpCaller
@RequestMapping(value = "/getUserAuthorizedId")
public JsonResult getUserAuthorizedId(String userUuid) {
LOGGER.info("[getUserAuthorizedId]获取实名账户的id,userUuid:{}", userUuid);
return JsonResult.buildSuccessResult(null, userAuthorizedService.getUserAuthorizedId(userUuid));
}
}
package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.model.AuthPattern;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* @author xufei on 2018/1/5.
*/
@Data
@Entity
@Table(name = "user_authorized")
public class UserAuthorized {
@Id
@Column(name = "id")
@GeneratedValue(generator = "uuid")
@GenericGenerator(name ="uuid" , strategy = "uuid")
private String id;
@Column(name = "user_uuid")
private String userUuid;
//证件号
@Column(name = "id_no")
private String idNo;
@Column(name = "name")
private String name;
@Column(name = "auth_pattern")
private AuthPattern authPattern;
@Column(name = "available")
private Boolean available;
//创建时间
@Column(name = "created_at")
private Timestamp createdAt;
//上一次修改时间
@Column(name = "updated_at")
private Timestamp updatedAt;
}
package cn.quantgroup.xyqb.model;
/**
* @author xufei on 2018/1/5.
*/
public enum AuthPattern {
ZMXY("芝麻分授权"),
FOUR_ELEMENTS_OF_BANK_CARD("银行卡四要素");
private String desc;
AuthPattern(String desc) {
this.desc = desc;
}
}
package cn.quantgroup.xyqb.model;
import lombok.Data;
import lombok.Getter;
/**
* @author xufei on 2018/1/10.
*/
@Getter
@Data
public class UserAuthorizedParam {
private String name;
private String idNo;
private Long userId;
private String authPattern;
private String userUuid;
}
package cn.quantgroup.xyqb.repository;
import cn.quantgroup.xyqb.entity.UserAuthorized;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @author xufei on 2018/1/5.
*/
public interface IUserAuthorizedRepository extends JpaRepository<UserAuthorized, Long>, JpaSpecificationExecutor<UserAuthorized> {
/**
* 通过身份证号查找实名账户
*
* @param idNo 身份证号
* @return 实体
*/
UserAuthorized findByIdNo(String idNo);
/**
* 通过userId查找实名账户
*
* @param userUuid 用户表的uuid
* @return 实体
*/
UserAuthorized findByUserUuid(String userUuid);
}
package cn.quantgroup.xyqb.service.auth;
import cn.quantgroup.xyqb.entity.UserAuthorized;
import cn.quantgroup.xyqb.model.UserAuthorizedParam;
/**
* @author xufei on 2018/1/5.
*/
public interface IUserAuthorizedService {
/**
* 该身份证是否有对应的实名账户
*
* @param idNo 身份证号
* @return
*/
Boolean hasUserAuthorized(String idNo);
/**
* 创建实名账户
*
* @param userAuthorizedParam
* @return
*/
UserAuthorized createUserAuthorized(UserAuthorizedParam userAuthorizedParam);
/**
* 通过userId获取实名账户表的id
*
* @param userUuid userUuid
* @return
*/
String getUserAuthorizedId(String userUuid);
/**
* 校验参数
*
* @param userAuthorizedParam
* @return
* @throws Exception
*/
Boolean checkUserAuthorizedParam(UserAuthorizedParam userAuthorizedParam) throws Exception;
}
package cn.quantgroup.xyqb.service.auth.impl;
import cn.quantgroup.xyqb.entity.UserAuthorized;
import cn.quantgroup.xyqb.model.AuthPattern;
import cn.quantgroup.xyqb.model.UserAuthorizedParam;
import cn.quantgroup.xyqb.repository.IUserAuthorizedRepository;
import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.auth.IUserAuthorizedService;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.sql.Timestamp;
import java.text.ParseException;
/**
* @author xufei on 2018/1/5.
*/
@Service
public class UserAuthorizedServiceImpl implements IUserAuthorizedService {
private static final Logger LOGGER = LoggerFactory.getLogger(UserAuthorizedServiceImpl.class);
@Resource
private IIdCardService iIdCardService;
@Resource
private IUserAuthorizedRepository userAuthorizedRepository;
@Override
public Boolean hasUserAuthorized(String idNo) {
try {
if (StringUtils.isBlank(idNo) || !iIdCardService.isIdCardValid(idNo)) {
return Boolean.FALSE;
}
} catch (ParseException e) {
LOGGER.error("[hasUserAuthorized]参数异常e:{}", e);
}
UserAuthorized userAuthorized = userAuthorizedRepository.findByIdNo(idNo);
LOGGER.info("[hasUserAuthorized]查询实名账户userAuthorized:{}", userAuthorized);
return null != userAuthorized;
}
@Override
public Boolean checkUserAuthorizedParam(UserAuthorizedParam userAuthorizedParam) throws Exception {
if (null == userAuthorizedParam) {
return Boolean.TRUE;
}
Long userId = userAuthorizedParam.getUserId();
String userUuid = userAuthorizedParam.getUserUuid();
if (userId == null || userId == 0L) {
if (StringUtils.isBlank(userUuid)) {
return Boolean.TRUE;
}
}
String name = userAuthorizedParam.getName();
String authPattern = userAuthorizedParam.getAuthPattern();
String idNo = userAuthorizedParam.getIdNo();
return (StringUtils.isBlank(name) || StringUtils.isBlank(authPattern) || !iIdCardService.isIdCardValid(idNo));
}
@Override
public UserAuthorized createUserAuthorized(UserAuthorizedParam userAuthorizedParam) {
AuthPattern authPatternEnum = AuthPattern.valueOf(userAuthorizedParam.getAuthPattern());
UserAuthorized userAuthorized = new UserAuthorized();
userAuthorized.setAuthPattern(authPatternEnum);
userAuthorized.setAvailable(Boolean.TRUE);
userAuthorized.setName(userAuthorizedParam.getName());
userAuthorized.setIdNo(userAuthorizedParam.getIdNo());
userAuthorized.setUserUuid(userAuthorizedParam.getUserUuid());
Timestamp now = new Timestamp(System.currentTimeMillis());
userAuthorized.setCreatedAt(now);
userAuthorized.setUpdatedAt(now);
try {
userAuthorized = userAuthorizedRepository.save(userAuthorized);
LOGGER.info("[createUserAuthorized]创建实名账户成功,userAuthorized:{}", userAuthorized);
return userAuthorized;
} catch (Exception e) {
LOGGER.error("[createUserAuthorized]创建实名账户异常e:{}", e);
return null;
}
}
@Override
public String getUserAuthorizedId(String userUuid) {
if (StringUtils.isBlank(userUuid)) {
return null;
}
UserAuthorized userAuthorized = userAuthorizedRepository.findByUserUuid(userUuid);
LOGGER.info("[getUserAuthorizedId]获取实名账户的id,userUuid:{},userAuthorized:{}", userUuid,userAuthorized);
if (null == userAuthorized) {
return null;
}
return userAuthorized.getId();
}
}
...@@ -12,6 +12,7 @@ import org.springframework.web.context.request.RequestContextHolder; ...@@ -12,6 +12,7 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Objects;
/** /**
* Created by Miraculous on 2016/12/29. * Created by Miraculous on 2016/12/29.
...@@ -23,63 +24,24 @@ public class XyqbSessionContextHolder { ...@@ -23,63 +24,24 @@ public class XyqbSessionContextHolder {
public static RedisTemplate<String, String> redisTemplate = null; public static RedisTemplate<String, String> redisTemplate = null;
public static SessionStruct getXSession() { public static SessionStruct getXSession() {
SessionStruct sessionStruct;
if (threadSession.get() != null) { if (threadSession.get() != null) {
return threadSession.get(); sessionStruct = threadSession.get();
} }else {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); sessionStruct = getXSessionFromRedis();
String token = request.getHeader(Constants.X_AUTH_TOKEN);
if (token == null || token.length() != 36) {
return null;
}
String result = redisTemplate.opsForValue().get(Constants.Session.USER_SESSION_CACHE + token);
if (StringUtils.isEmpty(result)) {
return null;
}
try {
SessionValue values = JSON.parseObject(result, SessionValue.class);
if (values == null) {
return null;
}
SessionStruct sessionStruct = new SessionStruct();
sessionStruct.setSid(token);
sessionStruct.setValues(values);
threadSession.set(sessionStruct); threadSession.set(sessionStruct);
return sessionStruct;
} catch (Exception ex) {
LOGGER.error("序列化session出错", ex);
return null;
} }
return sessionStruct;
} }
public static SessionStruct getXSessionFromRedis(){ public static SessionStruct getXSessionFromRedis(){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader(Constants.X_AUTH_TOKEN); String token = request.getHeader(Constants.X_AUTH_TOKEN);
if (token == null || token.length() != 36) { return getXSessionFromRedis(token);
return null;
}
String result = redisTemplate.opsForValue().get(Constants.Session.USER_SESSION_CACHE + token);
if (StringUtils.isEmpty(result)) {
return null;
}
try {
SessionValue values = JSON.parseObject(result, SessionValue.class);
if (values == null) {
return null;
}
SessionStruct sessionStruct = new SessionStruct();
sessionStruct.setSid(token);
sessionStruct.setValues(values);
return sessionStruct;
}catch (Exception ex){
LOGGER.error("序列化session出错", ex);
return null;
}
} }
public static SessionStruct getXSessionFromRedis(String token){ public static SessionStruct getXSessionFromRedis(String token){
if (token == null || token.length() != 36) { if (Objects.isNull(token) || token.length() != 36 || Objects.isNull(redisTemplate)) {
return null; return null;
} }
String result = redisTemplate.opsForValue().get(Constants.Session.USER_SESSION_CACHE + token); String result = redisTemplate.opsForValue().get(Constants.Session.USER_SESSION_CACHE + token);
......
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<springProperty name="spring.application.name" source="spring.application.name"/>
<property name="LOG_LEVEL_PATTERN" value="%clr(%5p) %clr([${spring.application.name:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]){yellow}"/>
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%10.10t]){faint} [%40.40file:%4.4line] %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 这里面定义了 CONSOLE_LOG_PATTERN, FILE_LOG_PATTERN 等日志格式, 还定义了一些日志级别 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<logger name="cn.quantgroup" level="DEBUG" />
<logger name="org.springframework" level="INFO" />
<!--<logger name="java.sql.Connection" level="DEBUG"/>-->
<!--<logger name="java.sql.Statement" level="DEBUG"/>-->
<!--<logger name="java.sql.PreparedStatement" level="DEBUG"/>-->
<logger name="org.hibernate" level="warn"/>
<logger name="org.apache" level="warn"/>
<logger name="ch.qos.logback" level="warn"/>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<springProperty name="spring.application.name" source="spring.application.name"/>
<property name="LOG_LEVEL_PATTERN" value="%5p [${spring.application.name:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]"/>
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} --- [%thread] [%file:%line] %logger - %msg%n}"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/home/quant_group/logs/${spring.application.name:-application}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/quant_group/logs/${spring.application.name:-application}.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<logger name="org.springframework" level="warn"/>
<logger name="org.hibernate" level="warn"/>
<logger name="org.apache" level="warn"/>
<logger name="ch.qos.logback" level="warn"/>
<root level="info">
<appender-ref ref="FILE"/>
</root>
</configuration>
\ No newline at end of file
package demo;
import org.junit.Before;
import org.springframework.test.context.TestContextManager;
/**
* @author renwc
* @date 2018-01-05
*/
public abstract class BaseParametersTests {
private TestContextManager testContextManager;
@Before
public void setUpContext() throws Exception {
//this is where the magic happens, we actually do "by hand" what the spring runner would do for us,
// read the JavaDoc for the class bellow to know exactly what it does, the method names are quite accurate though
this.testContextManager = new TestContextManager(getClass());
this.testContextManager.prepareTestInstance(this);
}
}
...@@ -7,14 +7,11 @@ import cn.quantgroup.xyqb.controller.internal.user.UserController; ...@@ -7,14 +7,11 @@ import cn.quantgroup.xyqb.controller.internal.user.UserController;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.service.user.IUserService; import cn.quantgroup.xyqb.service.user.IUserService;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer; import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import jdk.nashorn.internal.runtime.regexp.joni.Config;
import org.json.JSONObject; import org.json.JSONObject;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer;
import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
...@@ -23,6 +20,8 @@ import org.springframework.test.web.servlet.MockMvc; ...@@ -23,6 +20,8 @@ import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import javax.annotation.Resource;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
...@@ -33,7 +32,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. ...@@ -33,7 +32,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@WebMvcTest({UserController.class}) @WebMvcTest({UserController.class})
@ContextConfiguration(classes = {JpaConfig.class, RedisConfig.class}, initializers = ApolloPropertySourceInitializer.class) @ContextConfiguration(classes = {JpaConfig.class, RedisConfig.class}, initializers = ApolloPropertySourceInitializer.class)
public class MockMvcTests { public class MockMvcTests {
@Autowired @Resource
private MockMvc mvc; private MockMvc mvc;
@MockBean @MockBean
private IUserService userService; private IUserService userService;
......
...@@ -9,27 +9,26 @@ import org.junit.Assert; ...@@ -9,27 +9,26 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.WebApplicationContext;
import javax.annotation.Resource;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@SpringBootTest(classes = Bootstrap.class) @SpringBootTest(classes = Bootstrap.class)
@ContextConfiguration(initializers = ApolloPropertySourceInitializer.class) @ContextConfiguration(initializers = ApolloPropertySourceInitializer.class)
@WebAppConfiguration
public class MvcTests { public class MvcTests {
private MockMvc mvc; private MockMvc mvc;
@Autowired @Resource
WebApplicationContext webApplicationConnect; WebApplicationContext webApplicationConnect;
@Before @Before
......
...@@ -30,7 +30,6 @@ public class ParametersJunit5Tests { ...@@ -30,7 +30,6 @@ public class ParametersJunit5Tests {
System.out.println("Not Ready to Run"); System.out.println("Not Ready to Run");
} }
@Ignore("Not Ready to Run")
@DisplayName("My 1st JUnit 5 test! 😎") @DisplayName("My 1st JUnit 5 test! 😎")
@org.junit.jupiter.api.Test @org.junit.jupiter.api.Test
public void myFirstTest(TestInfo testInfo) { public void myFirstTest(TestInfo testInfo) {
......
package demo; package demo;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.config.data.JpaConfig; import cn.quantgroup.xyqb.config.data.JpaConfig;
import cn.quantgroup.xyqb.config.data.RedisConfig; import cn.quantgroup.xyqb.config.data.RedisConfig;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
...@@ -9,16 +8,15 @@ import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer; ...@@ -9,16 +8,15 @@ import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback; import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.persistence.PersistenceException; import javax.persistence.PersistenceException;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.Instant; import java.time.Instant;
...@@ -36,9 +34,9 @@ import java.time.Instant; ...@@ -36,9 +34,9 @@ import java.time.Instant;
@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE) @AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE)
public class RepsitoryJpaTests { public class RepsitoryJpaTests {
@Autowired @Resource
private TestEntityManager entityManager; private TestEntityManager entityManager;
@Autowired @Resource
private IUserRepository userRepository; private IUserRepository userRepository;
@Test(expected = PersistenceException.class) @Test(expected = PersistenceException.class)
......
...@@ -7,14 +7,13 @@ import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer; ...@@ -7,14 +7,13 @@ import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback; import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.persistence.PersistenceException; import javax.annotation.Resource;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.Instant; import java.time.Instant;
...@@ -31,7 +30,7 @@ import java.time.Instant; ...@@ -31,7 +30,7 @@ import java.time.Instant;
@ContextConfiguration(initializers = ApolloPropertySourceInitializer.class) @ContextConfiguration(initializers = ApolloPropertySourceInitializer.class)
public class RepsitoryTests { public class RepsitoryTests {
@Autowired @Resource
private IUserRepository userRepository; private IUserRepository userRepository;
@Test @Test
......
...@@ -7,14 +7,13 @@ import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer; ...@@ -7,14 +7,13 @@ import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback; import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.persistence.PersistenceException; import javax.annotation.Resource;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.Instant; import java.time.Instant;
...@@ -30,7 +29,7 @@ import java.time.Instant; ...@@ -30,7 +29,7 @@ import java.time.Instant;
@ContextConfiguration(initializers = ApolloPropertySourceInitializer.class) @ContextConfiguration(initializers = ApolloPropertySourceInitializer.class)
public class ServiceTests { public class ServiceTests {
@Autowired @Resource
private IUserService userService; private IUserService userService;
@Test @Test
......
...@@ -6,7 +6,6 @@ import lombok.extern.slf4j.Slf4j; ...@@ -6,7 +6,6 @@ import lombok.extern.slf4j.Slf4j;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.boot.test.web.client.TestRestTemplate;
...@@ -15,6 +14,8 @@ import org.springframework.http.ResponseEntity; ...@@ -15,6 +14,8 @@ import org.springframework.http.ResponseEntity;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
/** /**
* 控制层测试用例 * 控制层测试用例
...@@ -27,7 +28,7 @@ import org.springframework.test.context.junit4.SpringRunner; ...@@ -27,7 +28,7 @@ import org.springframework.test.context.junit4.SpringRunner;
@ContextConfiguration(initializers = ApolloPropertySourceInitializer.class) @ContextConfiguration(initializers = ApolloPropertySourceInitializer.class)
public class WebTests { public class WebTests {
@Autowired @Resource
private TestRestTemplate restTemplate; private TestRestTemplate restTemplate;
@Test @Test
...@@ -37,8 +38,8 @@ public class WebTests { ...@@ -37,8 +38,8 @@ public class WebTests {
@Test @Test
public void test() { public void test() {
ResponseEntity<String> phil = restTemplate.getForEntity("/{model}/list", String.class, "log"); ResponseEntity<String> phil = restTemplate.getForEntity("/{model}/test", String.class, "user");
Assert.assertEquals(phil.getStatusCode(), HttpStatus.OK); Assert.assertEquals(HttpStatus.OK, phil.getStatusCode());
} }
} }
......
...@@ -19,12 +19,12 @@ import org.apache.http.message.BasicNameValuePair; ...@@ -19,12 +19,12 @@ import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -39,10 +39,10 @@ public class TestUserLogin { ...@@ -39,10 +39,10 @@ public class TestUserLogin {
private MockHttpServletRequest request = new MockHttpServletRequest();; private MockHttpServletRequest request = new MockHttpServletRequest();;
@Autowired @Resource
private UserController userController; private UserController userController;
@Autowired @Resource
private InnerController innerController; private InnerController innerController;
@Test @Test
......
package repsitory;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.entity.UserAuthorized;
import cn.quantgroup.xyqb.model.AuthPattern;
import cn.quantgroup.xyqb.repository.IUserAuthorizedRepository;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import demo.BaseParametersTests;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Example;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collection;
/**
* 业务层测试用例
* @author renwc
* @date 2018-01-05
*/
@Slf4j
@Rollback
@Transactional
@RunWith(value = Parameterized.class)
@SpringBootTest(classes = Bootstrap.class)
@ContextConfiguration(initializers = ApolloPropertySourceInitializer.class)
public class UserAuthorizedRepsitoryTests extends BaseParametersTests {
@Resource
private IUserAuthorizedRepository userAuthorizedRepository;
UserAuthorized obj = new UserAuthorized();
public UserAuthorizedRepsitoryTests(String userUuid, String idNo, String name, AuthPattern authPattern, Boolean available) {
obj.setUserUuid(userUuid);
obj.setIdNo(idNo);
obj.setName(name);
obj.setAuthPattern(authPattern);
obj.setAvailable(available);
}
@Parameterized.Parameters
public static Collection<Object[]> data() {
Object[][] data = new Object[][]{
{1L,"350504198805144101","史书一", AuthPattern.ZMXY, true},
{10L,"350504198805144102","史书二", AuthPattern.ZMXY, true},
{20L,"350504198805144103","史书三", AuthPattern.FOUR_ELEMENTS_OF_BANK_CARD, true},
{1L, "IDNO-1", "王-1", AuthPattern.ZMXY, true}
};
return Arrays.asList(data);
}
@Test
public void testExist() throws Exception {
log.info("testExist: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
UserAuthorized obj = new UserAuthorized();
boolean exist = userAuthorizedRepository.exists(Example.of(obj));
Assert.assertNotNull(obj);
}
@Test
public void testSave() throws Exception {
log.info("testSave: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
UserAuthorized obj = new UserAuthorized();
obj = userAuthorizedRepository.save(obj);
Assert.assertNotNull(obj);
}
@Test
public void testQuery(){
log.info("testQuery: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
UserAuthorized obj = userAuthorizedRepository.findByIdNo(this.obj.getIdNo());
Assert.assertNotNull(obj);
}
}
...@@ -4,7 +4,6 @@ import cn.quantgroup.xyqb.Bootstrap; ...@@ -4,7 +4,6 @@ import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.entity.Address; import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.service.user.IAddressService; import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.IContactService; import cn.quantgroup.xyqb.service.user.IContactService;
import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer; import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -12,14 +11,13 @@ import org.junit.Before; ...@@ -12,14 +11,13 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.junit.runners.Parameterized; import org.junit.runners.Parameterized;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback; import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestContextManager; import org.springframework.test.context.TestContextManager;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
...@@ -39,9 +37,9 @@ public class TestUserService { ...@@ -39,9 +37,9 @@ public class TestUserService {
private TestContextManager testContextManager; private TestContextManager testContextManager;
@Autowired @Resource
private IAddressService addressService; private IAddressService addressService;
@Autowired @Resource
private IContactService contactService; private IContactService contactService;
private Address addressObj; private Address addressObj;
......
package service;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.model.AuthPattern;
import cn.quantgroup.xyqb.model.UserAuthorizedParam;
import cn.quantgroup.xyqb.service.auth.IUserAuthorizedService;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import demo.BaseParametersTests;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collection;
import java.util.Optional;
/**
* 业务层测试用例
* @author renwc
* @date 2018-01-05
*/
@Slf4j
@Rollback
@Transactional
@RunWith(value = Parameterized.class)
@SpringBootTest(classes = Bootstrap.class)
@ContextConfiguration(initializers = ApolloPropertySourceInitializer.class)
public class UserAuthorizedServiceTests extends BaseParametersTests {
@Resource
private IUserAuthorizedService userAuthorizedService;
UserAuthorizedParam obj = new UserAuthorizedParam();
public UserAuthorizedServiceTests(String userUuid, String idNo, String name, AuthPattern authPattern, Boolean available) {
obj.setUserUuid(userUuid);
obj.setIdNo(idNo);
obj.setName(name);
obj.setAuthPattern(Optional.ofNullable(authPattern).orElse(AuthPattern.ZMXY).name());
}
@Parameterized.Parameters
public static Collection<Object[]> data() {
Object[][] data = new Object[][]{
{1L,"350504198805144101","史书一", AuthPattern.ZMXY, true},
{10L,"350504198805144102","史书二", AuthPattern.ZMXY, true},
{20L,"350504198805144103","史书三", AuthPattern.FOUR_ELEMENTS_OF_BANK_CARD, true},
{1L, "IDNO-1", "王-1", AuthPattern.ZMXY, true}
};
return Arrays.asList(data);
}
@Test
public void testExist() throws Exception {
log.info("testExist: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
Object obj = userAuthorizedService.hasUserAuthorized(this.obj.getIdNo());
Assert.assertNotNull(obj);
}
@Test
public void testSave() throws Exception {
log.info("testSave: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
Object obj = userAuthorizedService.createUserAuthorized(this.obj);
Assert.assertNotNull(obj);
}
@Test
public void testQuery(){
log.info("testQuery: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserUuid(), obj.getAuthPattern());
Object obj = userAuthorizedService.getUserAuthorizedId(this.obj.getUserUuid());
Assert.assertNotNull(obj);
}
}
package web;
import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.model.AuthPattern;
import cn.quantgroup.xyqb.model.UserAuthorizedParam;
import com.ctrip.framework.apollo.spring.config.ApolloPropertySourceInitializer;
import demo.BaseParametersTests;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Optional;
/**
* 业务层测试用例
* @author renwc
* @date 2018-01-05
*/
@Slf4j
@Rollback
@Transactional
@RunWith(value = SpringRunner.class)
@SpringBootTest(classes = Bootstrap.class, webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
@ContextConfiguration(initializers = ApolloPropertySourceInitializer.class)
public class UserAuthorizedControllerTests extends BaseParametersTests {
@Resource
private TestRestTemplate restTemplate;
private UserAuthorizedParam obj = new UserAuthorizedParam();
{
Long userId = 1L;
String idNo = "350504198805144101";
String name = "史书一";
AuthPattern authPattern = AuthPattern.ZMXY;
Boolean available = true;
obj.setUserId(userId);
obj.setIdNo(idNo);
obj.setName(name);
obj.setAuthPattern(Optional.ofNullable(authPattern).orElse(AuthPattern.ZMXY).name());
}
@Test
public void testExist() throws Exception {
ResponseEntity<String> phil = restTemplate.getForEntity("/user/auth/{model}?idNo={idNo}", String.class, "hasUserAuthorized", obj.getIdNo());
log.info("testExist: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserId(), obj.getAuthPattern());
Assert.assertEquals(phil.getStatusCode(), HttpStatus.OK);
}
@Test
public void testSave() throws Exception {
ResponseEntity<String> phil = restTemplate.postForEntity("/user/auth/{model}", this.obj, String.class, "createUserAuthorized");
log.info("testSave: name:{}, idNo:{}, userId:{}, authPattern:{}", obj.getName(), obj.getIdNo(), obj.getUserId(), obj.getAuthPattern());
Assert.assertEquals(phil.getStatusCode(), HttpStatus.OK);
}
@Test
public void testQuery(){
ResponseEntity<String> phil = restTemplate.getForEntity("/user/auth/{model}?userId={userId}", String.class, "getUserAuthorizedId", obj.getUserId());
Assert.assertEquals(phil.getStatusCode(), HttpStatus.OK);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment