Commit 456b72f7 by Li Yongyu

xiugai 框架和新增服务接口

parent 047a211c
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<classes> <classes>
<class name="com.puhui.test.RenMai_APITest"> <class name="com.puhui.test.RenMai_APITest">
<methods> <methods>
<include name="f" invocation-numbers="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 "/> <include name="f" invocation-numbers="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 "/>
</methods> </methods>
</class> </class>
</classes> </classes>
......
...@@ -14,15 +14,18 @@ import net.sf.json.JSONObject; ...@@ -14,15 +14,18 @@ import net.sf.json.JSONObject;
public class MapUtil { public class MapUtil {
public static void main(String[] args) { public static void main(String[] args) {
HashMap<String, Object> hm=new HashMap<String, Object>(); //"id":code,"status":"0"
hm.put("1", "a1"); String string=getParameter("\"id\":code,\"status\":\"0\"","id");
hm.put("statusCode", "a2"); System.out.println(string);
hm.put("3", "a3"); // HashMap<String, Object> hm=new HashMap<String, Object>();
hm.put("errcode", "a4"); // hm.put("1", "a1");
hm.put("5", "a5"); // hm.put("statusCode", "a2");
hm.put("errmsg", "a6"); // hm.put("3", "a3");
HashMap<String, Object> newhm=Expect(hm); // hm.put("errcode", "a4");
System.out.println("@AfterClass_data_ext="+JSONObject.fromObject(newhm).toString()); // hm.put("5", "a5");
// hm.put("errmsg", "a6");
// HashMap<String, Object> newhm=Expect(hm);
// System.out.println("@AfterClass_data_ext="+JSONObject.fromObject(newhm).toString());
} }
//马洪亮 //马洪亮
// 生成数组格式的json串 // 生成数组格式的json串
...@@ -211,6 +214,10 @@ public class MapUtil { ...@@ -211,6 +214,10 @@ public class MapUtil {
for(int k=0;k<comma;k++){ for(int k=0;k<comma;k++){
//此时是多个,,, //此时是多个,,,
String[] str=strcomma[k].split("\":\""); String[] str=strcomma[k].split("\":\"");
if(str.length==1){
str=strcomma[k].split(":");
}
String str_strcomma=Arrays.toString(str); String str_strcomma=Arrays.toString(str);
// System.out.println("str="+Arrays.toString(str)); // System.out.println("str="+Arrays.toString(str));
//按参数传过来的字符串做为子串,在以逗号为节点的串中分别查找子串的关键字, //按参数传过来的字符串做为子串,在以逗号为节点的串中分别查找子串的关键字,
......
...@@ -47,7 +47,7 @@ public class changeStatus extends NWN implements API { ...@@ -47,7 +47,7 @@ public class changeStatus extends NWN implements API {
// 获取parameter对应的内容 // 获取parameter对应的内容
parameter = MapUtil.getValue("parameter", data); parameter = MapUtil.getValue("parameter", data);
id = MapUtil.getParameter(parameter, "id").trim(); id = MapUtil.getParameter(parameter, "id").trim();
System.out.println(id);
if ((!id.equals("")) && id.equals("code")) { if ((!id.equals("")) && id.equals("code")) {
id=ListUtil.getListValue(n_admin_id_List, 0); id=ListUtil.getListValue(n_admin_id_List, 0);
parameter = parameter.replace("\"id\":code", "\"id\":\""+ id + "\""); parameter = parameter.replace("\"id\":code", "\"id\":\""+ id + "\"");
......
package com.offcn.api.nwn.md5;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class LMFMD5 {
//����һ����LMFMD5
public static String MD5(String sourceStr) {
String result = "";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
// ����һ��MD5���ܼ���ժҪ
md.update(sourceStr.getBytes());
// ʹ��ָ����byte�������ժҪ
byte b[] = md.digest();
// ������ת����ʮ�����Ƶ��ַ�����ʽ
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
result = buf.toString();
System.out.println("MD5(" + sourceStr + ",32) = " + result);
// System.out.println("MD5(" + sourceStr + ",16) = " + buf.toString().substring(8, 24));
// ע�͵���md5��16λȡֵ
} catch (NoSuchAlgorithmException e) {
System.out.println(e);
}
return result;
}
}
package com.offcn.api.nwn.md5;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import com.offcn.process.NWN;
public class nwngetsign {
public static String nwnGetSign (String parameter) {
StringBuffer sb=new StringBuffer();
//方法1
//parameter = "appid=jiaowu&template_id=[473,475]&timestamp="+NWN.timestamp;
String arr[]=parameter.split("&");
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
//System.out.println(arr[i].substring(arr[i].indexOf("=")+1));
arr[i]=arr[i].substring(arr[i].indexOf("=")+1);
sb.append(arr[i]);
}
sb.toString();
System.out.println("sb====" + sb);
String str = sb.toString();
str = str + "bf2h3%^j?ljkj3706kji88697"; //教务的加密,规则固定需要加
System.out.println("str===" + str);
//String str1 = "appid=tiku&avatar=http://thirdqq.qlogo.cn/qqapp/1106773681/5B50BBF83A00DC46B16B708F720A5D46/100&device_id=861837034477409&login_type=qq&nickname=hobo&open_id=1&platform=Android&version=1"+"&123456";
String res = new LMFMD5().MD5(str);
System.out.println("res===" +res);
return res;
}
public static void getstr(){
String str="access_token=7BBFBDAE62CA6B9EC0F4B4E810F1C38C&expires_in=7776000&refresh_token=579B4051EF86407B82CC5E2AF9434F8B";
System.out.println(str.substring(str.indexOf("=")+1, str.indexOf("&")));
}
public static String killQuotes(String parameter,char s){
StringBuffer sb=new StringBuffer();
for(int k=0;k<parameter.length();k++){
if(parameter.charAt(k)!= s){
sb.append(parameter.charAt(k));
}
}
return sb.toString();
}
public static String GetSign(String parameter){
parameter=parameter+",\"sign\":\""+GetSignValue(parameter)+"\"";
return parameter;
}
//��ǩֵ
public static String GetSignValue(String parameter){
parameter=parameter.replace("\"", "");
parameter=parameter.replace(":", "=");
String arr[]=parameter.split(",");
Arrays.sort(arr);
parameter=Arrays.toString(arr);
parameter=parameter.toString().replace(", ", "&");
parameter=(parameter.substring(1,parameter.length()-1))+"&123456";
return LMFMD5.MD5(parameter);
}
}
package com.offcn.api.nwn.service; package com.offcn.api.nwn.service;
import io.restassured.path.json.JsonPath; import io.restassured.path.json.JsonPath;
import io.restassured.response.Response; import io.restassured.response.Response;
...@@ -9,6 +10,7 @@ import java.sql.Statement; ...@@ -9,6 +10,7 @@ import java.sql.Statement;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import java.util.Random; import java.util.Random;
import org.json.simple.JSONArray; import org.json.simple.JSONArray;
...@@ -27,42 +29,42 @@ import net.sf.json.JSONObject; ...@@ -27,42 +29,42 @@ import net.sf.json.JSONObject;
/** /**
* 添加用户 * 添加母版层级
* *
* @author puhui * @author liyy
* *
*/ */
public class checkTemplate extends NWN implements API { public class checkTemplate extends NWN implements API {
public String parameter;//参数集合 public String parameter;//参数集合
public String card_no;//sso正常用户 public String template_id_1;//母板ID
public String username;//昵称
public String phone;//电话
// public String phone;//层级包id
@Override @Override
public void initialize(HashMap<String, Object> data) { public void initialize(HashMap<String, Object> data) {
if (!isProduct && data.get("CleanDB").toString().contains("Y")) {
this.cleann_n_admin_card_no_List_FromDB();
} }
}
@Override @Override
public HashMap<String, Object> handleInput(HashMap<String, Object> data) { public HashMap<String, Object> handleInput(HashMap<String, Object> data) {
// 获取parameter对应的内容 // 获取parameter对应的内容
parameter = MapUtil.getValue("parameter", data); parameter = MapUtil.getValue("parameter", data);
card_no = MapUtil.getParameter(parameter, "card_no").trim(); template_id_1 = MapUtil.getParameter_get(parameter, "template_id").trim();
username = MapUtil.getParameter(parameter, "username").trim(); timestamp = MapUtil.getParameter_get(parameter, "timestamp").trim();
if ((!card_no.equals("")) && card_no.equals("code")) { if ((!template_id_1.equals("")) && template_id_1.equals("template_id")) {
card_no="lgd58408";//从sso数据库中查询的已激活账户,作为备用账户使用 template_id_1 = "["+ template_id +","+(Integer.parseInt(template_id)-1)+"]";
parameter = parameter.replace("\"card_no\":code", "\"card_no\":\""+ card_no + "\""); parameter = parameter.replace("template_id=template_id", "template_id="+ template_id_1 );
} }
if ((!username.equals("")) && username.equals("random")) {
username="1391"+(new Random().nextInt(9000000)+ 1000000); if ((!timestamp.equals("")) && timestamp.equals("timestamp")) {
parameter = parameter.replace("\"username\":random", "\"username\":\""+ username + "\""); Long timeString= System.currentTimeMillis();
timestamp = timeString.toString().substring(0, 10);
parameter = parameter.replace("timestamp=timestamp", "timestamp="+ timestamp );
} }
data.put("parameter", parameter); data.put("parameter", parameter);
return data; return data;
} }
...@@ -70,17 +72,24 @@ public class checkTemplate extends NWN implements API { ...@@ -70,17 +72,24 @@ public class checkTemplate extends NWN implements API {
@Override @Override
public Response SendRequest(HashMap<String, Object> data, String Url, public Response SendRequest(HashMap<String, Object> data, String Url,
String Request) { String Request) {
Response re = RequestDataUtils.Post_cooike(data, Url,"PHPSESSID",PHPSESSID); // Map<String,String> m=new HashMap<String,String>();
// m.put("user_info", parameter);
//Response re = RequestDataUtils.Post_cooike_form_data(data, Url,"PHPSESSID",PHPSESSID,m);
Response re = RequestDataUtils.Get_one_cookie_pre(data, Url, "PHPSESSID",PHPSESSID);
//Response re = RequestDataUtils.Get_one_cookie(data, serviceURL, cookie1Name, cookie1value) //只能无参
// Response re = RequestDataUtils.Get_token(data, Url, "");
return re; return re;
} }
@Override @Override
public String handleOutput(Response re, HashMap<String, Object> data) { public String handleOutput(Response re, HashMap<String, Object> data) {
JsonPath jp = re.body().jsonPath(); JsonPath jp = re.body().jsonPath();
System.out.println( "jp===="+ jp);
boolean result = true; boolean result = true;
String failReason = ""; String failReason = "";
String json = re.asString(); String json = re.asString();
System.out.println("response=========="+StringUtils.decodeUnicode(json));
if ((data.get("statusCode") != null) if ((data.get("statusCode") != null)
&& (!data.get("statusCode").toString() && (!data.get("statusCode").toString()
...@@ -94,15 +103,20 @@ public class checkTemplate extends NWN implements API { ...@@ -94,15 +103,20 @@ public class checkTemplate extends NWN implements API {
if (json.length() != 0) { if (json.length() != 0) {
String msg=StringUtils.decodeUnicode(getMsg(re)); String msg=StringUtils.decodeUnicode(getMsg(re));
String retcode=getCode(re); String code=getCode(re);
if ((data.get("code") != null ) && (retcode != null) && (!retcode.equals(data.get("code").toString()))) { if ((data.get("code") != null ) && (code != null) && (!code.equals(data.get("code").toString()))) {
result = result && false; result = result && false;
failReason = failReason + "code is expected " failReason = failReason + "code is expected "
+ data.get("code").toString() + " but actually " + data.get("code").toString() + " but actually "
+ jp.getString("retcode") + "."; + jp.getString("retcode") + ".";
} }
/*System.out.println((data.get("msg") != null));
System.out.println((msg != null));
System.out.println(data.get("msg").toString().length());
System.out.println(msg.length());
*/
if ((data.get("msg") != null) && (msg != null) && (!msg.equals(data.get("msg").toString()))) { if ((data.get("msg") != null) && (msg != null) && (!msg.equals(data.get("msg").toString()))) {
result = result && false; result = result && false;
failReason = failReason + "msg is expected " failReason = failReason + "msg is expected "
...@@ -110,73 +124,74 @@ public class checkTemplate extends NWN implements API { ...@@ -110,73 +124,74 @@ public class checkTemplate extends NWN implements API {
+ jp.getString("msg") + "."; + jp.getString("msg") + ".";
} }
if(data.get("custom") != null && jp.getString("data")!=null){ if(data.get("custom") != null && json!=null){
String custom=data.get("custom").toString(); //如果自定义结果包含多个希望结果,也就是有逗号,那么就切割,包含比较。
String[] ArrayString=StringUtils.getArrayString(custom,","); if(data.get("custom").toString().contains(",")){
if(!StringUtils.VerificationString(jp.getString("data"),ArrayString)){ String [] strCustomStrings=data.get("custom").toString().split(",");
System.out.println(strCustomStrings.length);
for(int i=0;i<strCustomStrings.length;i++){
if(!json.contains(strCustomStrings[i])){
result = result && false; result = result && false;
failReason = failReason + "custom is expected " failReason = failReason + "custom is expected "
+ data.get("custom").toString() + " but actually " + data.get("custom").toString() + " but actually "
+ jp.getString("data") + "."; + strCustomStrings[i] + ".";
break;
}
}
}else{//如果只有一个希望结果,就直接包含比较。
if(!json.contains(data.get("custom").toString())){
result = result && false;
failReason = failReason + "custom is expected "
+ data.get("custom").toString() + " but actually "
+ data.get("custom").toString() + ".";
}
} }
} }
if("0".equals(retcode)){
//是否验证数据库
if (!isProduct) {
parameter = MapUtil.getValue("parameter", data); if("0".equals(code)){
card_no = MapUtil.getParameter(parameter, "card_no").trim();
card_no = MapUtil.killQuotes(card_no, "\"");
username = MapUtil.getParameter(parameter, "username").trim();
username = MapUtil.killQuotes(username, "\"");
phone = MapUtil.getParameter(parameter, "phone").trim(); /*//是否验证数据库
phone = MapUtil.killQuotes(phone, "\""); if (!isProduct) {
n_admin_card_no_List.add(card_no); template_id=jp.getString("data.id").substring(0,jp.getString("data.id").length());
System.out.println("template_id====="+ template_id );
try { try {
String sql="SELECT MAX(id) AS id FROM n_template ";
String sql="select * from n_admin where card_no='"+card_no+"'"; //SELECT id FROM n_template ORDER BY id DESC LIMIT 1
ResultSet rs_bankcard = this.sqlFromDB(sql); ResultSet rs_bankcard = this.sqlFromDB(sql);
rs_bankcard.last(); rs_bankcard.last();
System.out.println("after db_templateid============"+ rs_bankcard.getString("id"));
if(Integer.parseInt(rs_bankcard.getString("id")) > Integer.parseInt("1") )
{
if(!template_id.equals(rs_bankcard.getString("id")))
if(rs_bankcard.getRow()>=1){ {
String act_username=rs_bankcard.getString("username").equals("null ")?"null":rs_bankcard.getString("username");
String act_phone=rs_bankcard.getString("phone").equals("null ")?"null":rs_bankcard.getString("phone");
String act_id=rs_bankcard.getString("id").equals("null ")?"null":rs_bankcard.getString("id");
n_admin_id_List.add(act_id);//保存地区,以后需要删除的必须参数
n_admin_phone_List.add(act_phone);
n_admin_username_List.add(act_username);
if(!(username.equals(act_username))){
result = result && false; result = result && false;
failReason = failReason + "n_admin info username is not in DB;"; failReason = failReason + "template_id info in DB is wrong;";
}else {
Log.logInfo("template_id info in DB is correct;");
} }
if(!(phone.equals(act_phone))){ }else {
result = result && false; result = result && false;
failReason = failReason + "n_admin info phone is not in DB;"; failReason = failReason + "template_id info in DB is wrong;";
}
} }
} catch (Exception e) { } catch (Exception e) {
result = result && false; result = result && false;
failReason = failReason + "cannot verify n_admin info in DB;"; failReason = failReason + "cannot verify template_id info in DB;";
e.printStackTrace(); e.printStackTrace();
} }
} }
} */
} }
}
if (result) if (result)
return "Pass"; return "Pass";
else else
......
...@@ -46,6 +46,7 @@ public class NWN extends BasicsGM{ ...@@ -46,6 +46,7 @@ public class NWN extends BasicsGM{
public static String level_id_List = "";//层级的id public static String level_id_List = "";//层级的id
public static List<String> user_id_List = new ArrayList<String>();//user_id public static List<String> user_id_List = new ArrayList<String>();//user_id
public static String template_id = ""; public static String template_id = "";
public static String timestamp;//时间戳
// public static String phone_code = "";//手机号验证码 // public static String phone_code = "";//手机号验证码
// //
// //
......
...@@ -19,6 +19,7 @@ import com.offcn.TestUnti.Reflect_api; ...@@ -19,6 +19,7 @@ import com.offcn.TestUnti.Reflect_api;
import com.offcn.TestUnti.SheetUtils; import com.offcn.TestUnti.SheetUtils;
import com.offcn.TestUnti.StringUtils; import com.offcn.TestUnti.StringUtils;
import com.offcn.TestUnti.XMLread; import com.offcn.TestUnti.XMLread;
import com.offcn.api.nwn.md5.nwngetsign;
import com.offcn.interfaces.API; import com.offcn.interfaces.API;
import com.offcn.listener.ProcessTestng; import com.offcn.listener.ProcessTestng;
import com.offcn.listener.ResultTestng; import com.offcn.listener.ResultTestng;
...@@ -59,6 +60,17 @@ public class APITest_nwn extends NWN{ ...@@ -59,6 +60,17 @@ public class APITest_nwn extends NWN{
data = obj.handleInput(data); data = obj.handleInput(data);
String parameter = MapUtil.getValue("parameter", data); String parameter = MapUtil.getValue("parameter", data);
// System.out.println(!data.get("Request").toString().contains("get"));
// System.out.println(data.get("system").toString().equals("nwn_service"));
if(data.get("system").toString().equals("nwn_service") ){
String serviceUrl = MapUtil.getValue("serviceUrl", data);
//url后面获取sign值
serviceUrl = serviceUrl + "/sign/" + nwngetsign.nwnGetSign(parameter);
data.put("serviceUrl", serviceUrl);
}
Long startTime=System.currentTimeMillis(); Long startTime=System.currentTimeMillis();
Response re = obj.SendRequest(data, data.get("serviceUrl").toString(), data.get("Request").toString()); Response re = obj.SendRequest(data, data.get("serviceUrl").toString(), data.get("Request").toString());
Long endTime=System.currentTimeMillis(); Long endTime=System.currentTimeMillis();
...@@ -135,7 +147,7 @@ public class APITest_nwn extends NWN{ ...@@ -135,7 +147,7 @@ public class APITest_nwn extends NWN{
//测试结束删除测试所用的数据 //测试结束删除测试所用的数据
if (!isClearMysql) { if (!isClearMysql) {
this.cleann_n_admin_card_no_List_FromDB(); this.cleann_n_admin_card_no_List_FromDB();
this.cleann_n_package_List_FromDB(); //this.cleann_n_package_List_FromDB();
this.cleann_user_id_List_FromDB(); this.cleann_user_id_List_FromDB();
this.cleann_getcode_id_List_FromDB(); this.cleann_getcode_id_List_FromDB();
try { try {
......
xyzb=com.offcn.api.xyzb. xyzb=com.offcn.api.xyzb.
tk=com.offcn.api.tk. tk=com.offcn.api.tk.
nwn=com.offcn.api.nwn. nwn=com.offcn.api.nwn.
nwn_service=com.offcn.api.nwn.service.
nwnht=com.offcn.api.nwn. nwnht=com.offcn.api.nwn.
nwngg=com.offcn.api.nwn. nwngg=com.offcn.api.nwn.
tkapp=com.offcn.api.tk.app tkapp=com.offcn.api.tk.app
......
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