• 闰2月,再见!


    有2个http协议的api接口,一个是sendSmsCode,提供发送手机验证码的;一个是login,提供手机号验证码登陆的。

    sendSmsCode这个api,内部逻辑是生成一个4位长度的随机码,以这个手机号为key,放入redis,然后触发短信服务。

    login这个api呢,首先要根据入参的手机号和验证码,来验证是否匹配,匹配后判断数据状态,并且返回一个token。后续业务交互涉及到的api都会带着这个token来请求。

    接下来,我写一个testcase来测试这2个接口。当然,很简单,用POSTMAN也很easy。模拟http请求即可。测通很容易。

    可是呢,测试login时,因为本地环境不会真正下发短信,所以不知道那个验证码,这时,随便上送一个验证码,得到的响应报文都是验证码不正确之类的提示。因为只有验证码正确才能测后续流程。所以,写一段利用jedis获取验证码的代码即可。

    package com.emaxcard.boss.modules.login.controller;
    
    import com.alibaba.fastjson.JSONObject;
    import com.emaxcard.boss.common.constant.CommonConstant;
    import com.emaxcard.boss.common.util.http.HttpUtil;
    import org.junit.Test;
    import redis.clients.jedis.Jedis;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class UserLoginControllerTest {
        static String requestUrl = "http://localhost:8902/api/user/";
        
        @Test
        public void loginReturnToken(){
    
            //step1. 调用sendSmsCode接口
            Map<String, String> params = new HashMap<>();
            params.put("phone", "18310636588");
            HttpUtil.post(JSONObject.toJSONString(params), requestUrl.concat("sendSmsCode"));
    
            //step2. 从redis获取验证码
            Jedis jedis = new Jedis("192.168.1.107", 6379);
            jedis.auth("Redisadmin@2019"); //password
            jedis.select(8); //database
            String smsCode = jedis.get(CommonConstant.VALIDATE_H5_USER_PREFIX.concat("18310636588"));
            System.out.println("redis里的smsCode=" + smsCode);
            
            //step3. 登陆
            params.put("smsCode", smsCode);
            params.put("source", "h5");
            String response = HttpUtil.post(JSONObject.toJSONString(params), requestUrl.concat("login"));
            /*响应报文示例:
            {"success":true,"message":"操作成功!","code":200,"result":{"url":"/register.html","token":"eyJ0eXAiOiJNiJ9"},"timestamp":1582981585614}
            * */
            JSONObject jsonResponse = JSONObject.parseObject(response);
            if (200 == jsonResponse.getIntValue("code")) {
                JSONObject result = JSONObject.parseObject(jsonResponse.getString("result"));
                String token = result.getString("token");
                String url = result.getString("url");
                System.out.println("token=" + token + "
    url=" + url);
            }
        }
    }
  • 相关阅读:
    什么是test-time argument(测试数据增强)
    在k3d上快速安装Istio,助你在本地灵活使用K8S!
    IoT设备实践丨如果你也在树莓派上部署了k3s,你也许需要这篇文章
    k3s原理分析丨如何搞定k3s node注册失败问题
    仅需60秒,使用k3s创建一个多节点K8S集群!
    手把手实操教程!使用k3s运行轻量级VM
    k3s首季在线培训来袭!本周四晚,线上见!
    k3s新版本发布!支持Helm3!还有其他重要更新Highlight!
    如何优雅地使用containerd?这里有一份必读的技巧攻略
    图解拥塞控制,这应该是把拥塞控制讲的最通俗易懂的文章了
  • 原文地址:https://www.cnblogs.com/buguge/p/12386435.html
Copyright © 2020-2023  润新知