diff --git a/src/test/java/me/zhyd/oauth/utils/GlobalAuthUtilsTest.java b/src/test/java/me/zhyd/oauth/utils/GlobalAuthUtilsTest.java index 4ebc469d2af4c4e36fdffe7c414d8a8dcc645a0e..c6b071bb540519325f1a58c0edf9993f5817b187 100644 --- a/src/test/java/me/zhyd/oauth/utils/GlobalAuthUtilsTest.java +++ b/src/test/java/me/zhyd/oauth/utils/GlobalAuthUtilsTest.java @@ -1,5 +1,6 @@ package me.zhyd.oauth.utils; +import com.alibaba.fastjson.JSON; import me.zhyd.oauth.config.AuthConfig; import me.zhyd.oauth.model.AuthCallback; import me.zhyd.oauth.model.AuthToken; @@ -8,35 +9,35 @@ import org.junit.Test; import java.util.HashMap; import java.util.Map; +import java.util.TreeMap; import static me.zhyd.oauth.config.AuthDefaultSource.TWITTER; -import static me.zhyd.oauth.utils.GlobalAuthUtils.generateTwitterSignature; -import static me.zhyd.oauth.utils.GlobalAuthUtils.urlEncode; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; public class GlobalAuthUtilsTest { @Test - public void testGenerateDingTalkSignature() { + public void generateDingTalkSignature() { assertEquals("mLTZEMqIlpAA3xtJ43KcRT0EDLwgSamFe%2FNis5lq9ik%3D", GlobalAuthUtils.generateDingTalkSignature("SHA-256", "1562325753000 ")); } @Test - public void testUrlDecode() { + public void urlDecode() { assertEquals("", GlobalAuthUtils.urlDecode(null)); assertEquals("https://www.foo.bar", GlobalAuthUtils.urlDecode("https://www.foo.bar")); assertEquals("mLTZEMqIlpAA3xtJ43KcRT0EDLwgSamFe/Nis5lq9ik=", GlobalAuthUtils.urlDecode("mLTZEMqIlpAA3xtJ43KcRT0EDLwgSamFe%2FNis5lq9ik%3D")); } @Test - public void testParseStringToMap() { + public void parseStringToMap() { Map expected = new HashMap(); expected.put("bar", "baz"); assertEquals(expected, GlobalAuthUtils.parseStringToMap("foo&bar=baz")); } @Test - public void testIsHttpProtocol() { + public void isHttpProtocol() { Assert.assertFalse(GlobalAuthUtils.isHttpProtocol("")); Assert.assertFalse(GlobalAuthUtils.isHttpProtocol("foo")); @@ -44,7 +45,7 @@ public class GlobalAuthUtilsTest { } @Test - public void testIsHttpsProtocol() { + public void isHttpsProtocol() { Assert.assertFalse(GlobalAuthUtils.isHttpsProtocol("")); Assert.assertFalse(GlobalAuthUtils.isHttpsProtocol("foo")); @@ -52,7 +53,7 @@ public class GlobalAuthUtilsTest { } @Test - public void testIsLocalHost() { + public void isLocalHost() { Assert.assertFalse(GlobalAuthUtils.isLocalHost("foo")); Assert.assertTrue(GlobalAuthUtils.isLocalHost("")); @@ -76,9 +77,9 @@ public class GlobalAuthUtilsTest { params.put("oauth_version", "1.0"); String baseUrl = "https://api.twitter.com/oauth/request_token"; - params.put("oauth_signature", generateTwitterSignature(params, "POST", baseUrl, config.getClientSecret(), null)); + params.put("oauth_signature", GlobalAuthUtils.generateTwitterSignature(params, "POST", baseUrl, config.getClientSecret(), null)); - params.forEach((k, v) -> params.put(k, "\"" + urlEncode(v.toString()) + "\"")); + params.forEach((k, v) -> params.put(k, "\"" + GlobalAuthUtils.urlEncode(v) + "\"")); String actual = "OAuth " + GlobalAuthUtils.parseMapToString(params, false).replaceAll("&", ", "); assertEquals("OAuth oauth_nonce=\"sTj7Ivg73u052eXstpoS1AWQCynuDEPN\", oauth_signature=\"%2BL5Jq%2FTaKubge04cWw%2B4yfjFlaU%3D\", oauth_callback=\"https%3A%2F%2Fcodinglife.tech\", oauth_consumer_key=\"HD0XLqzi5Wz0G08rh45Cg8mgh\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1569750981\", oauth_version=\"1.0\"", actual); @@ -103,10 +104,10 @@ public class GlobalAuthUtilsTest { params.put("oauth_verifier", authCallback.getOauthVerifier()); params.put("oauth_version", "1.0"); - params.put("oauth_signature", generateTwitterSignature(params, "POST", TWITTER.accessToken(), config.getClientSecret(), authCallback + params.put("oauth_signature", GlobalAuthUtils.generateTwitterSignature(params, "POST", TWITTER.accessToken(), config.getClientSecret(), authCallback .getOauthToken())); - params.forEach((k, v) -> params.put(k, "\"" + urlEncode(v.toString()) + "\"")); + params.forEach((k, v) -> params.put(k, "\"" + GlobalAuthUtils.urlEncode(v) + "\"")); String actual = "OAuth " + GlobalAuthUtils.parseMapToString(params, false).replaceAll("&", ", "); assertEquals("OAuth oauth_verifier=\"lYou4gxfA6S5KioUa8VF8HCShzA2nSxp\", oauth_nonce=\"sTj7Ivg73u052eXstpoS1AWQCynuDEPN\", oauth_signature=\"9i0lmWgvphtkl2KcCO9VyZ3K2%2F0%3D\", oauth_token=\"W_KLmAAAAAAAxq5LAAABbXxJeD0\", oauth_consumer_key=\"HD0XLqzi5Wz0G08rh45Cg8mgh\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1569751082\", oauth_version=\"1.0\"", actual); @@ -139,11 +140,92 @@ public class GlobalAuthUtilsTest { queryParams.put("include_entities", Boolean.toString(true)); Map params = new HashMap<>(queryParams); - oauthParams.put("oauth_signature", generateTwitterSignature(params, "GET", TWITTER.userInfo(), config.getClientSecret(), authToken + oauthParams.put("oauth_signature", GlobalAuthUtils.generateTwitterSignature(params, "GET", TWITTER.userInfo(), config.getClientSecret(), authToken .getOauthTokenSecret())); - oauthParams.forEach((k, v) -> oauthParams.put(k, "\"" + urlEncode(v.toString()) + "\"")); + oauthParams.forEach((k, v) -> oauthParams.put(k, "\"" + GlobalAuthUtils.urlEncode(v) + "\"")); String actual = "OAuth " + GlobalAuthUtils.parseMapToString(oauthParams, false).replaceAll("&", ", "); assertEquals("OAuth oauth_nonce=\"sTj7Ivg73u052eXstpoS1AWQCynuDEPN\", oauth_signature=\"yHHq2J1W5QLAO8gGipnY1V%2Bzxqk%3D\", oauth_token=\"1961977975-PcFQaCnpN9h9xqtqHwHlpGBXFrHJ9bOLy7OtGAL\", oauth_consumer_key=\"HD0XLqzi5Wz0G08rh45Cg8mgh\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1569751082\", oauth_version=\"1.0\"", actual); } + + @Test + public void md5() { + String str = "helloworld,iamjustauth"; + String md5Str = GlobalAuthUtils.md5(str); + assertEquals("b0d923de4289b69976448cac718528b8", md5Str); + } + + @Test + public void treemap() { + Map parameters = new HashMap<>(); + parameters.put("user_id", "1"); + parameters.put("screen_name", "222"); + parameters.put("a", "222"); + parameters.put("include_entities", Boolean.toString(true)); + final Map sorted = new TreeMap<>(parameters); + assertEquals("{\"a\":\"222\",\"include_entities\":\"true\",\"screen_name\":\"222\",\"user_id\":\"1\"}", JSON.toJSONString(sorted)); + } + + @Test + public void urlEncode() { + assertEquals("", GlobalAuthUtils.urlEncode(null)); + assertEquals("https%3A%2F%2Fwww.foo.bar", GlobalAuthUtils.urlEncode("https://www.foo.bar")); + assertEquals("mLTZEMqIlpAA3xtJ43KcRT0EDLwgSamFe%252FNis5lq9ik%253D", GlobalAuthUtils.urlEncode("mLTZEMqIlpAA3xtJ43KcRT0EDLwgSamFe%2FNis5lq9ik%3D")); + } + + @Test + public void parseMapToString() { + Map parameters = new HashMap<>(); + parameters.put("user_id", "1"); + parameters.put("screen_name", "史上最全的第三方授权登录库"); + parameters.put("include_entities", Boolean.toString(true)); + assertEquals("user_id=1&screen_name=史上最全的第三方授权登录库&include_entities=true", GlobalAuthUtils.parseMapToString(parameters, false)); + assertEquals("user_id=1&screen_name=%E5%8F%B2%E4%B8%8A%E6%9C%80%E5%85%A8%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E6%8E%88%E6%9D%83%E7%99%BB%E5%BD%95%E5%BA%93&include_entities=true", GlobalAuthUtils.parseMapToString(parameters, true)); + assertEquals("", GlobalAuthUtils.parseMapToString(null, true)); + } + + @Test + public void generateNonce() { + assertEquals(10, GlobalAuthUtils.generateNonce(10).length()); + } + + @Test + public void getTimestamp() { + assertNotNull(GlobalAuthUtils.getTimestamp()); + } + + @Test + public void generateTwitterSignature() { + Map queryParams = new HashMap<>(); + queryParams.put("name", "你好"); + queryParams.put("gender", "male"); + + assertEquals("J6MAQH1kcgUdj2jmygN3rdfI4lo=", GlobalAuthUtils.generateTwitterSignature(queryParams, "GET", TWITTER.userInfo(), "xxxxx", "xxxxx")); + } + + @Test + public void generateElemeSignature() { + Map parameters = new HashMap<>(); + parameters.put("name", "你好"); + parameters.put("gender", "male"); + + String appKey = "appKey"; + String secret = "appKey"; + long timestamp = 1233456789; + String action = "appKey"; + String token = "appKey"; + + assertEquals("26FEB8BF7E84FED2619D9C5D97F421BD", GlobalAuthUtils.generateElemeSignature(appKey, secret, timestamp, action, token, parameters)); + } + + @Test + public void generateJdSignature() { + Map parameters = new HashMap<>(); + parameters.put("name", "你好"); + parameters.put("gender", "male"); + + String appSecret = "appKey"; + + assertEquals("FE04EC03BA8A619802CF309959C2B43F", GlobalAuthUtils.generateJdSignature(appSecret, parameters)); + } } diff --git a/src/test/java/me/zhyd/oauth/utils/JsonPathTest.java b/src/test/java/me/zhyd/oauth/utils/JsonPathTest.java index 0d4a98054cdb4296148885c855a7c9b2b5d01c61..64ba24148c359ff059be7c7368055d7ddb0ad2fc 100644 --- a/src/test/java/me/zhyd/oauth/utils/JsonPathTest.java +++ b/src/test/java/me/zhyd/oauth/utils/JsonPathTest.java @@ -3,6 +3,7 @@ package me.zhyd.oauth.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONPath; +import org.junit.Assert; import org.junit.Test; import java.util.ArrayList; @@ -29,9 +30,9 @@ public class JsonPathTest { Map master = new HashMap<>(); -// master.put("elements", list); + master.put("elements", list); JSONObject emailObj = JSONObject.parseObject(JSON.toJSONString(master)); Object object = JSONPath.eval(emailObj, "$['elements'][0]['handle~']['emailAddress']"); - System.out.println(object); + Assert.assertEquals("xxxx", object); } }