zoukankan      html  css  js  c++  java
  • spring boot使用TestRestTemplate集成测试 RESTful 接口

    这篇文章没什么技术含量,只是单纯的记录一下如何用TestRestTemplate访问受security保护的api,供以后查阅。

    @Slf4j
    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment =     SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class AccountControllerTests {
        @Autowired
        private TestRestTemplate restTemplate;
        private HttpEntity httpEntity;
    
        /**
         * 登录
         * @throws Exception
         */
        private void login() throws Exception {
            String expectStr = "{"code":0,"msg":"success"}";
            MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
            map.add("username", "183xxxxxxxx");
            map.add("password", "123456");
            ResponseEntity responseEntity = restTemplate.postForEntity("/api/account/sign_in", map, String.class);
            //添加cookie以保持状态
            HttpHeaders headers = new HttpHeaders();
            String headerValue = responseEntity.getHeaders().get("Set-Cookie").toString().replace("[", "");
            headerValue = headerValue.replace("]", "");
            headers.set("Cookie", headerValue);
            httpEntity = new HttpEntity(headers);
            assertThat(responseEntity.getBody()).isEqualTo(expectStr);
        }
    
        /**
         * 登出
         * @throws Exception
         */
        private void logout() throws Exception {
            String expectStr = "{"code":0,"msg":"success"}";
            String result = restTemplate.postForObject("/api/account/sign_out", null, String.class, httpEntity);
            httpEntity = null;
            assertThat(result).isEqualTo(expectStr);
        }
    
        /**
         * 获取信息
         * @throws Exception
         */
        private void getUserInfo() throws Exception {
            Detail detail = new Detail();
            detail.setNickname("疯狂的米老鼠");
            detail.setNicknamePinyin("fengkuangdemilaoshu");
            detail.setSex(1);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            detail.setCreatedAt(sdf.parse("2017-11-03 16:43:27"));
            detail.setUpdatedAt(sdf.parse("2017-11-03 16:43:27"));
            Role role = new Role();
            role.setName("ROLE_USER_NORMAL");
            Set<Role> roles = new HashSet<>();
            roles.add(role);
            User user = new User();
            user.setId(1L);
            user.setPhone("183xxxxxxxx");
            user.setEmail("xxxxxx@gmail.com");
            user.setDetail(detail);
            user.setRoles(roles);
            ResultBean<User> resultBean = new ResultBean<>();
            resultBean.setData(user);
            ObjectMapper om = new ObjectMapper();
            String expectStr = om.writeValueAsString(resultBean);
            ResponseEntity<String> responseEntity = restTemplate.exchange("/api/user/get_user_info", HttpMethod.GET, httpEntity, String.class);
            assertThat(responseEntity.getBody()).isEqualTo(expectStr);
        }
    
        @Test
        public void testAccount() throws Exception {
            login();
            getUserInfo();
            logout();
        }
    

      

  • 相关阅读:
    vs2013如何在C++中调用Lua(二)
    用vs2013编译lua源码方法(一)
    使用Sublime Text 直接运行Quick-cocos2d-x 项目
    SubmitText 中配置lua 运行环境
    在VS2012/2013上编辑和调试Quick-cocos2d-x的Lua代码
    Cocos2d-x 开发 v3.2 建立新项目并添加库文件
    计算一段函数的执行效率
    C++中嵌入Lua脚本环境搭建
    Android开发环境配置
    cocos2d-x-3.1.1 创建项目
  • 原文地址:https://www.cnblogs.com/pangguoming/p/10599762.html
Copyright © 2011-2022 走看看