Commit 6c2735f3 by IBM

add im

parent b070bff6
package com.offcn.TestUnti;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.DigestInputStream;
import java.security.DigestOutputStream;
import java.security.MessageDigest;
import java.util.Arrays;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
public class SHA {
public static void main(String[] args) throws Exception {
sendmsg();
adduser();
/*//encodeByMAC("中国oP……&*()…&802134…");
Long timeString= System.currentTimeMillis();
String timestamp = timeString.toString().substring(0, 10);
System.out.println("timestamp=" + timestamp);
encodeBySHA("offcn_imcdacadscadscdsa" + timestamp);
//encodeBySHA("offcn_imb20ddff95f8278f203caacaf48fa9cfe1600833478");
*/
//shaFile();
}
public static void sendmsg() throws Exception{
//encodeByMAC("中国oP……&*()…&802134…");
Long timeString= System.currentTimeMillis();
String timestamp = timeString.toString().substring(0, 10);
System.out.println("timestamp=" + timestamp);
encodeBySHA("303843fe1b79"+"cdacadscadscdsa" + timestamp);
//encodeBySHA("offcn_imb20ddff95f8278f203caacaf48fa9cfe1600833478");
}
public static void adduser() throws Exception{
//encodeByMAC("中国oP……&*()…&802134…");
Long timeString= System.currentTimeMillis();
String timestamp = timeString.toString().substring(0, 10);
System.out.println("timestamp=" + timestamp);
encodeBySHA("303843fe1b79cdacadscadscdsa" + timestamp);
//encodeBySHA("offcn_imb20ddff95f8278f203caacaf48fa9cfe1600833478");
}
/**
* 使用MAC 算法的 消息摘要
* @param data
* @throws Exception
*/
public static void encodeByMAC(String data) throws Exception{
// KeyGenerator keyGen = KeyGenerator.getInstance("HmacSHA1");
// SecretKey key = keyGen.generateKey(); //这个每次生成的key不一样, 此处不能使用
PBEKeySpec keySpec = new PBEKeySpec("randomkey^(^&*^%$".toCharArray());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey key = keyFactory.generateSecret(keySpec);
/*
* 此类提供“消息验证码”(Message Authentication Code,MAC)算法的功能。
* MAC 基于秘密密钥提供一种方式来检查在不可靠介质上进行传输或存储的信息的完整性。
* 通常,消息验证码在共享秘密密钥的两个参与者之间使用,以验证这两者之间传输的信息。
* 基于加密哈希函数的 MAC 机制也叫作 HMAC。结合秘密共享密钥,
* HMAC 可以用于任何加密哈希函数(如 MD5 或 SHA-1)
*/
Mac mac = Mac.getInstance("HmacSHA1");
//以下三种都可用
// Mac mac = Mac.getInstance("HmacSHA256");
// Mac mac = Mac.getInstance("HmacSHA384");
// Mac mac = Mac.getInstance("HmacSHA512");
mac.init(key);
byte[] dest = mac.doFinal(data.getBytes());
System.out.println(dest.length);
System.out.println("MAC摘要:" + Arrays.toString(dest));
}
/**
* SHA1加密 使用消息摘要MessageDigest 处理
* @throws Exception
*/
public static String encodeBySHA(String str) throws Exception{
MessageDigest sha1;
sha1 = MessageDigest.getInstance("SHA1");
//以下三种不可用
// sha1 = MessageDigest.getInstance("SHA256");
// sha1 = MessageDigest.getInstance("SHA384");
// sha1 = MessageDigest.getInstance("SHA512");
// System.out.println(str.getBytes());
sha1.update(str.getBytes()); //先更新摘要
byte[] digest = sha1.digest(); //再通过执行诸如填充之类的最终操作完成哈希计算。在调用此方法之后,摘要被重置。
/*
* 使用指定的 byte 数组对摘要进行最后更新,然后完成摘要计算。
* 也就是说,此方法首先调用 update(input),
* 向 update 方法传递 input 数组,然后调用 digest()。
*/
// byte[] digest = sha1.digest(str.getBytes());
String hex = toHex(digest);
System.out.println("SHA1 哈西算法值:" + hex);
return hex;
}
/**
* 文件数据摘要
* @throws Exception
*/
public static void shaFile() throws Exception {
MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
DigestOutputStream dos = new DigestOutputStream(new FileOutputStream(new File("abc.txt")), messageDigest);
dos.write("中华人民……&())f*(214)admin*".getBytes());
dos.close();
byte[] digest = messageDigest.digest();
System.out.println("使用流写文件,该文件的摘要为:" + toHex(digest));
DigestInputStream dis = new DigestInputStream(new FileInputStream(new File("abc.txt")), messageDigest);
byte[] buf = new byte[100];
int len;
while ((len = dis.read(buf)) != -1) {
System.out.println("读取到的数据为:" + new String(buf, 0, len));
}
dis.close();
byte[] digest2 = messageDigest.digest();
//当流读取完毕,即将文件读完了, 这时的摘要 才与 写入时的 一样
System.out.println("使用流读文件,该文件的摘要为:" + toHex(digest2));
}
/**
* sha1 摘要转16进制
* @param digest
* @return
*/
private static String toHex(byte[] digest) {
StringBuilder sb = new StringBuilder();
int len = digest.length;
String out = null;
for (int i = 0; i < len; i++) {
// out = Integer.toHexString(0xFF & digest[i] + 0xABCDEF); //加任意 salt
out = Integer.toHexString(0xFF & digest[i]);//原始方法
if (out.length() == 1) {
sb.append("0");//如果为1位 前面补个0
}
sb.append(out);
}
return sb.toString();
}
}
...@@ -21,11 +21,11 @@ public class XMLread { ...@@ -21,11 +21,11 @@ public class XMLread {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String,Object> map=(Map<String, Object>) xml.getSystem(); Map<String,Object> map=(Map<String, Object>) xml.getSystem();
system ysx=(system) map.get("Gm_ysx"); system ysx=(system) map.get("study");
system dd=(system) map.get("Gm_dd"); System.out.println(ysx.getRM_URI());
System.out.println(ysx.getRM_port());
System.out.println(dd.getRM_port());
} }
@SuppressWarnings({ "rawtypes", "unchecked" }) @SuppressWarnings({ "rawtypes", "unchecked" })
......
package com.offcn.api.study.im;
import io.restassured.path.json.JsonPath;
import io.restassured.response.Response;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Random;
import org.json.simple.JSONArray;
import sun.security.krb5.internal.Ticket;
import com.offcn.TestUnti.Log;
import com.offcn.TestUnti.MapUtil;
import com.offcn.TestUnti.RequestDataUtils;
import com.offcn.TestUnti.StringUtils;
import com.offcn.interfaces.API;
import com.offcn.process.STUDY;
import com.offcn.system.MyRequest;
import com.offcn.system.system;
import com.offcn.TestUnti.ListUtil;
import net.sf.json.JSONObject;
import net.sf.json.JSONObject;
import com.offcn.TestUnti.SHA;
/**
* IM 发送消息
*
* @author liyy
*
*/
public class sendMsg extends STUDY implements API {
public String parameter;//参数集合
public String checksum;
// public String phone;//层级包id
@Override
public void initialize(HashMap<String, Object> data) {
}
@Override
public HashMap<String, Object> handleInput(HashMap<String, Object> data) {
// 获取parameter对应的内容
parameter = MapUtil.getValue("parameter", data);
//data.put("parameter", parameter);
return data;
}
@Override
public Response SendRequest(HashMap<String, Object> data, String Url,
String Request) {
// 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);
parameter = MapUtil.getValue("parameter", data);
Long timeString= System.currentTimeMillis();
String timestamp = timeString.toString().substring(0, 10);
System.out.println("timestamp=" + timestamp);
System.out.println("parameter=" + parameter);
try {
checksum = SHA.encodeBySHA("303843fe1b79"+"cdacadscadscdsa" + timestamp);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Map<String,String> header=new HashMap<String,String>();
header.put("appkey", "b1dfe60a9c1e6394ee8b092139db679d");
header.put("nonce", "cdacadscadscdsa");
header.put("curtime", timestamp);
header.put("checksum", checksum);
header.put("Content-Type", "application/json");
MyRequest myRequest=new MyRequest();
myRequest.setParameter(parameter);
//myRequest.setFormParameter(formParameter);
//myRequest.setUrl("http://test-im.offcncloud.com:8080/v1/sendMsg");
myRequest.setUrl(Url);
myRequest.setRequest(Request);
myRequest.setHeaders(header);
//myRequest.setCookies(cookies);
Response re = RequestDataUtils.RestAssuredApi(data, myRequest);
return re;
}
@Override
public String handleOutput(Response re, HashMap<String, Object> data) {
JsonPath jp = re.body().jsonPath();
System.out.println( "jp===="+ jp);
boolean result = true;
String failReason = "";
String json = re.asString();
System.out.println("response=========="+StringUtils.decodeUnicode(json));
if ((data.get("statusCode") != null)
&& (!data.get("statusCode").toString()
.equals(String.valueOf(re.getStatusCode())))) {
result = result && false;
failReason = failReason + "statusCode is expected "
+ data.get("statusCode").toString() + " but actually "
+ String.valueOf(re.getStatusCode()) + ". ";
}
if (json.length() != 0) {
String msg=StringUtils.decodeUnicode(getMsg(re));
String code=getCode(re);
if ((data.get("code") != null ) && (code != null) && (!code.equals(data.get("code").toString()))) {
result = result && false;
failReason = failReason + "code is expected "
+ data.get("code").toString() + " but actually "
+ jp.getString("code") + ".";
}
/*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()))) {
result = result && false;
failReason = failReason + "msg is expected "
+ data.get("msg").toString() + " but actually "
+ jp.getString("msg") + ".";
}
if(data.get("custom") != null && json!=null){
//如果自定义结果包含多个希望结果,也就是有逗号,那么就切割,包含比较。
if(data.get("custom").toString().contains(",")){
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;
failReason = failReason + "custom is expected "
+ data.get("custom").toString() + " but actually "
+ 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(code)){
//创建后数据库在哪个表
//是否验证数据库
/*if (!isProduct) {
Token = jp.getString("data.user_info.token");
System.out.println( "Token=========" + Token);
// System.out.println("datavalue=======" + jp.getString("data.moment[0].tag_name"));
try {
stmt=StatementsMap.get("nwn"); //切库
String sql="SELECT username FROM `n_admin` WHERE id = " + 118;
ResultSet rs_bankcard = this.sqlFromDB(sql);
stmt=StatementsMap.get("zxkt"); //切回默认
rs_bankcard.last();
System.out.println(rs_bankcard.getString("username"));
if(rs_bankcard.getString("username").contains("马增礼"))
{
System.out.println("db select successful ");
}else {
result = result && false;
failReason = failReason + "deleted_packate is wrong;";
}
} catch (Exception e) {
result = result && false;
failReason = failReason + "cannot verify template_id info in DB;";
e.printStackTrace();
}
}*/
}
}
if (result)
return "Pass";
else
return "Fail:" + failReason;
}
public static void main(String[] args) {
System.out.println(DateFormat.getDateTimeInstance(2, 2, Locale.CHINESE).format(new java.util.Date()));
}
}
package com.offcn.api.study.im;
import io.restassured.path.json.JsonPath;
import io.restassured.response.Response;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Random;
import org.json.simple.JSONArray;
import sun.security.krb5.internal.Ticket;
import com.offcn.TestUnti.Log;
import com.offcn.TestUnti.MapUtil;
import com.offcn.TestUnti.RequestDataUtils;
import com.offcn.TestUnti.StringUtils;
import com.offcn.interfaces.API;
import com.offcn.process.STUDY;
import com.offcn.system.MyRequest;
import com.offcn.system.system;
import com.offcn.TestUnti.ListUtil;
import net.sf.json.JSONObject;
import net.sf.json.JSONObject;
import com.offcn.TestUnti.SHA;
/**
* IM 导入用户
*
* @author liyy
*
*/
public class user extends STUDY implements API {
public String parameter;//参数集合
public String checksum;
// public String phone;//层级包id
@Override
public void initialize(HashMap<String, Object> data) {
}
@Override
public HashMap<String, Object> handleInput(HashMap<String, Object> data) {
// 获取parameter对应的内容
parameter = MapUtil.getValue("parameter", data);
//data.put("parameter", parameter);
return data;
}
@Override
public Response SendRequest(HashMap<String, Object> data, String Url,
String Request) {
// 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);
parameter = MapUtil.getValue("parameter", data);
Long timeString= System.currentTimeMillis();
String timestamp = timeString.toString().substring(0, 10);
System.out.println("timestamp=" + timestamp);
System.out.println("parameter=" + parameter);
try {
checksum = SHA.encodeBySHA("303843fe1b79"+"cdacadscadscdsa" + timestamp);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Map<String,String> header=new HashMap<String,String>();
header.put("appkey", "b1dfe60a9c1e6394ee8b092139db679d");
header.put("nonce", "cdacadscadscdsa");
header.put("curtime", timestamp);
header.put("checksum", checksum);
header.put("Content-Type", "application/json");
MyRequest myRequest=new MyRequest();
myRequest.setParameter(parameter);
//myRequest.setFormParameter(formParameter);
System.out.println("user url==" + Url);
myRequest.setUrl(Url);
myRequest.setRequest(Request);
myRequest.setHeaders(header);
//myRequest.setCookies(cookies);
Response re = RequestDataUtils.RestAssuredApi(data, myRequest);
return re;
}
@Override
public String handleOutput(Response re, HashMap<String, Object> data) {
JsonPath jp = re.body().jsonPath();
System.out.println( "jp===="+ jp);
boolean result = true;
String failReason = "";
String json = re.asString();
System.out.println("response=========="+StringUtils.decodeUnicode(json));
if ((data.get("statusCode") != null)
&& (!data.get("statusCode").toString()
.equals(String.valueOf(re.getStatusCode())))) {
result = result && false;
failReason = failReason + "statusCode is expected "
+ data.get("statusCode").toString() + " but actually "
+ String.valueOf(re.getStatusCode()) + ". ";
}
if (json.length() != 0) {
String msg=StringUtils.decodeUnicode(getMsg(re));
String code=getCode(re);
if ((data.get("code") != null ) && (code != null) && (!code.equals(data.get("code").toString()))) {
result = result && false;
failReason = failReason + "code is expected "
+ data.get("code").toString() + " but actually "
+ jp.getString("code") + ".";
}
/*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()))) {
result = result && false;
failReason = failReason + "msg is expected "
+ data.get("msg").toString() + " but actually "
+ jp.getString("msg") + ".";
}
if(data.get("custom") != null && json!=null){
//如果自定义结果包含多个希望结果,也就是有逗号,那么就切割,包含比较。
if(data.get("custom").toString().contains(",")){
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;
failReason = failReason + "custom is expected "
+ data.get("custom").toString() + " but actually "
+ 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(code)){
//创建后数据库在哪个表
//是否验证数据库
/*if (!isProduct) {
Token = jp.getString("data.user_info.token");
System.out.println( "Token=========" + Token);
// System.out.println("datavalue=======" + jp.getString("data.moment[0].tag_name"));
try {
stmt=StatementsMap.get("nwn"); //切库
String sql="SELECT username FROM `n_admin` WHERE id = " + 118;
ResultSet rs_bankcard = this.sqlFromDB(sql);
stmt=StatementsMap.get("zxkt"); //切回默认
rs_bankcard.last();
System.out.println(rs_bankcard.getString("username"));
if(rs_bankcard.getString("username").contains("马增礼"))
{
System.out.println("db select successful ");
}else {
result = result && false;
failReason = failReason + "deleted_packate is wrong;";
}
} catch (Exception e) {
result = result && false;
failReason = failReason + "cannot verify template_id info in DB;";
e.printStackTrace();
}
}*/
}
}
if (result)
return "Pass";
else
return "Fail:" + failReason;
}
public static void main(String[] args) {
System.out.println(DateFormat.getDateTimeInstance(2, 2, Locale.CHINESE).format(new java.util.Date()));
}
}
package com.offcn.api.study.study_l; package com.offcn.api.study.studyl;
import io.restassured.path.json.JsonPath; import io.restassured.path.json.JsonPath;
......
package com.offcn.api.study.study_l; package com.offcn.api.study.studyl;
import io.restassured.path.json.JsonPath; import io.restassured.path.json.JsonPath;
......
package com.offcn.api.study.study_l; package com.offcn.api.study.studyl;
import io.restassured.path.json.JsonPath; import io.restassured.path.json.JsonPath;
......
...@@ -38,7 +38,7 @@ public class STUDY extends BasicsGM{ ...@@ -38,7 +38,7 @@ public class STUDY extends BasicsGM{
public void Connectionsa(){ public void Connectionsa(){
//================设置数据库连接池===================== //================设置数据库连接池=====================
ConnectionsMap=getConnections(new String[]{"zxkt","nwn"}); ConnectionsMap=getConnections(new String[]{"zxkt"});
StatementsMap=getStatements(ConnectionsMap); StatementsMap=getStatements(ConnectionsMap);
conn=ConnectionsMap.get("zxkt");//设置默认的连接对象 conn=ConnectionsMap.get("zxkt");//设置默认的连接对象
stmt=StatementsMap.get("zxkt");//设置默认的连接对象 stmt=StatementsMap.get("zxkt");//设置默认的连接对象
......
...@@ -62,7 +62,6 @@ public class APITest_study extends BasicsGM{ ...@@ -62,7 +62,6 @@ public class APITest_study extends BasicsGM{
API obj = (API)object; API obj = (API)object;
setDelSystemSql(c, object);//保存曾经操作过的系统 setDelSystemSql(c, object);//保存曾经操作过的系统
BasicsGM.map=new XMLread().getSystem(); BasicsGM.map=new XMLread().getSystem();
obj.initialize(data); obj.initialize(data);
...@@ -72,7 +71,8 @@ public class APITest_study extends BasicsGM{ ...@@ -72,7 +71,8 @@ public class APITest_study extends BasicsGM{
//静态和动态参数自动添加 //静态和动态参数自动添加
// data = setPublicParameter(data); // data = setPublicParameter(data);
// data = setDynamicParameter(data); // data = setDynamicParameter(data);
if (data.get("serviceUrl").toString().contains("needsetPublicParameter")) { if(data.get("system").toString().equals("study_needparameter") ){
data=setPublicParameter(c,object,data);//静态公共参数 data=setPublicParameter(c,object,data);//静态公共参数
data=setDynamicParameter(c,object,data);//动态公共参数 data=setDynamicParameter(c,object,data);//动态公共参数
} }
......
study_ticket=com.offcn.api.study. study_ticket=com.offcn.api.study.
study_api=com.offcn.api.study.studyapi. study_api=com.offcn.api.study.studyapi.
studyl=com.offcn.api.study.study_l. study_l=com.offcn.api.study.studyl.
\ No newline at end of file im=com.offcn.api.study.im.
\ No newline at end of file
...@@ -27,5 +27,18 @@ ...@@ -27,5 +27,18 @@
<redis_db_index>5</redis_db_index> <redis_db_index>5</redis_db_index>
</system> </system>
<system name="im"><!-- 学习中心 -->
<access_token_uri>http://106.75.5.205:8082/uaa/oauth/token</access_token_uri>
<client_id>bestbuy-acceptance</client_id>
<client_secret>bestbuy-acceptance</client_secret>
<grant_type>client_credentials</grant_type>
<isProduct>N</isProduct>
<RM_URI>http://test-im.offcncloud.com:8080</RM_URI>
<RM_port></RM_port>
<RM_basePath></RM_basePath>
<redis_URI>10.10.229.48</redis_URI>
<redis_db_index>5</redis_db_index>
</system>
</systems> </systems>
\ No newline at end of file
xls=DataAll.xls xls=DataAll.xls
sheet=try sheet=Sheet1
mysql_local_Online=local mysql_local_Online=local
Percentage=10 Percentage=10
\ No newline at end of file
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