Skip to content
This repository was archived by the owner on Apr 15, 2023. It is now read-only.

Commit fbcde08

Browse files
crash send also oauth token
1 parent 0833c4a commit fbcde08

File tree

5 files changed

+56
-12
lines changed

5 files changed

+56
-12
lines changed

src/main/java/com/tagmycode/sdk/authentication/OauthToken.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.tagmycode.sdk.authentication;
22

3+
import org.json.JSONException;
4+
import org.json.JSONObject;
35
import org.scribe.model.Token;
46

57
public class OauthToken implements Comparable<OauthToken> {
@@ -43,4 +45,15 @@ public boolean equals(Object object) {
4345

4446
return compareTo((OauthToken) object) == 0;
4547
}
48+
49+
public String toJson() {
50+
JSONObject jo = new JSONObject();
51+
try {
52+
jo.put("access_token", accessToken.getToken());
53+
jo.put("refresh_token", refreshToken.getToken());
54+
} catch (JSONException ignore) {
55+
}
56+
57+
return jo.toString();
58+
}
4659
}

src/main/java/com/tagmycode/sdk/crash/Crash.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.tagmycode.sdk.crash;
22

3+
import com.tagmycode.sdk.authentication.OauthToken;
34
import com.tagmycode.sdk.model.User;
45
import org.json.JSONException;
56

@@ -14,6 +15,7 @@ public class Crash {
1415
public static final String APP_ID = "app_id";
1516
public static final String APP_VERSION = "app_version";
1617
public static final String USER = "user";
18+
public static final String OAUTH_TOKEN = "oauth_token";
1719
public static final String THROWABLE = "throwable";
1820
public static final String THROWABLE_MESSAGE = "throwable_message";
1921
private String operatingSystem;
@@ -22,25 +24,27 @@ public class Crash {
2224
private User user;
2325
private Throwable throwable;
2426
private String appId;
27+
private OauthToken oauthToken;
2528

26-
public Crash(String operatingSystem, String javaVersion, String appId, String appVersion, User user, Throwable throwable) {
29+
public Crash(String operatingSystem, String javaVersion, String appId, String appVersion, User user, OauthToken oauthToken, Throwable throwable) {
2730
this.operatingSystem = operatingSystem;
2831
this.javaVersion = javaVersion;
2932
this.appId = appId;
3033
this.appVersion = appVersion;
3134
this.user = user;
35+
this.oauthToken = oauthToken;
3236
this.throwable = throwable;
3337
}
3438

35-
public static Crash create(String appId, String appVersion, User user, Throwable throwable) {
39+
public static Crash create(String appId, String appVersion, User user, OauthToken oauthToken, Throwable throwable) {
3640
String operatingSystem = String.format("%s %s %s %s",
3741
System.getProperty("os.name"),
3842
System.getProperty("os.version"),
3943
System.getProperty("os.arch"),
4044
System.getProperty("sun.desktop")
4145
);
4246

43-
return new Crash(operatingSystem, System.getProperty("java.version"), appId, appVersion, user, throwable);
47+
return new Crash(operatingSystem, System.getProperty("java.version"), appId, appVersion, user, oauthToken, throwable);
4448
}
4549

4650
private String extractStackTrace(Throwable throwable) {
@@ -73,6 +77,10 @@ public User getUser() {
7377
return user;
7478
}
7579

80+
public OauthToken getOauthToken() {
81+
return oauthToken;
82+
}
83+
7684
public Map<String, String> toMap() {
7785
Map<String, String> map = new HashMap<String, String>();
7886
map.put(OPERATING_SYSTEM, getOperatingSystem());
@@ -82,7 +90,10 @@ public Map<String, String> toMap() {
8290
try {
8391
map.put(USER, getUser().toJson());
8492
} catch (JSONException e) {
85-
map.put(USER, getUser().getUsername());
93+
map.put(USER, "");
94+
}
95+
if (getOauthToken() != null) {
96+
map.put(OAUTH_TOKEN, getOauthToken().toJson());
8697
}
8798
map.put(THROWABLE, extractStackTrace(getThrowable()));
8899
map.put(THROWABLE_MESSAGE, getThrowable().getMessage());

src/test/java/com/tagmycode/sdk/authentication/OauthTokenTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,10 @@ public void twoOauthTokensAreEquals() {
1111
OauthToken oauthToken2 = new OauthToken("123", "456");
1212
assertEquals(oauthToken1, oauthToken2);
1313
}
14+
15+
@Test
16+
public void toJson() {
17+
assertEquals("{\"access_token\":\"access_token_value\",\"refresh_token\":\"refresh_token_value\"}",
18+
new OauthToken("access_token_value", "refresh_token_value").toJson());
19+
}
1420
}

src/test/java/com/tagmycode/sdk/crash/CrashClientTest.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.tagmycode.sdk.crash;
22

3+
import com.tagmycode.sdk.authentication.OauthToken;
34
import com.tagmycode.sdk.model.User;
45
import org.junit.Before;
56
import org.junit.Test;
@@ -23,10 +24,12 @@ public void sendCrash() throws Exception {
2324
.withStatus(200)
2425
.withHeader("Content-Type", "application/json")
2526
));
26-
Crash crash = Crash.create("app_id", "1.0.0", new User(), new Throwable("throwable"));
27-
// TODO
28-
// verify(postRequestedFor(urlEqualTo(url))
29-
// .withRequestBody(equalTo("app_version=1.0.0&throwable=java.lang.Throwable%3A%20throwable%0A%09at%20com.tagmycode.sdk.crash.CrashClientTest.sendCrash%28CrashClientTest.java%3A27%29%0A%09at%20sun.reflect.NativeMethodAccessorImpl.invoke0%28Native%20Method%29%0A%09at%20sun.reflect.NativeMethodAccessorImpl.invoke%28NativeMethodAccessorImpl.java%3A62%29%0A%09at%20sun.reflect.DelegatingMethodAccessorImpl.invoke%28DelegatingMethodAccessorImpl.java%3A43%29%0A%09at%20java.lang.reflect.Method.invoke%28Method.java%3A498%29%0A%09at%20org.junit.runners.model.FrameworkMethod%241.runReflectiveCall%28FrameworkMethod.java%3A47%29%0A%09at%20org.junit.internal.runners.model.ReflectiveCallable.run%28ReflectiveCallable.java%3A12%29%0A%09at%20org.junit.runners.model.FrameworkMethod.invokeExplosively%28FrameworkMethod.java%3A44%29%0A%09at%20org.junit.internal.runners.statements.InvokeMethod.evaluate%28InvokeMethod.java%3A17%29%0A%09at%20org.junit.internal.runners.statements.RunBefores.evaluate%28RunBefores.java%3A26%29%0A%09at%20com.github.tomakehurst.wiremock.junit.WireMockRule%241.evaluate%28WireMockRule.java%3A74%29%0A%09at%20org.junit.rules.RunRules.evaluate%28RunRules.java%3A20%29%0A%09at%20org.junit.runners.ParentRunner.runLeaf%28ParentRunner.java%3A271%29%0A%09at%20org.junit.runners.BlockJUnit4ClassRunner.runChild%28BlockJUnit4ClassRunner.java%3A70%29%0A%09at%20org.junit.runners.BlockJUnit4ClassRunner.runChild%28BlockJUnit4ClassRunner.java%3A50%29%0A%09at%20org.junit.runners.ParentRunner%243.run%28ParentRunner.java%3A238%29%0A%09at%20org.junit.runners.ParentRunner%241.schedule%28ParentRunner.java%3A63%29%0A%09at%20org.junit.runners.ParentRunner.runChildren%28ParentRunner.java%3A236%29%0A%09at%20org.junit.runners.ParentRunner.access%24000%28ParentRunner.java%3A53%29%0A%09at%20org.junit.runners.ParentRunner%242.evaluate%28ParentRunner.java%3A229%29%0A%09at%20org.junit.runners.ParentRunner.run%28ParentRunner.java%3A309%29%0A%09at%20org.junit.runner.JUnitCore.run%28JUnitCore.java%3A160%29%0A%09at%20com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs%28JUnit4IdeaTestRunner.java%3A68%29%0A%09at%20com.intellij.rt.execution.junit.IdeaTestRunner%24Repeater.startRunnerWithArgs%28IdeaTestRunner.java%3A47%29%0A%09at%20com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart%28JUnitStarter.java%3A242%29%0A%09at%20com.intellij.rt.execution.junit.JUnitStarter.main%28JUnitStarter.java%3A70%29%0A&java_version=1.8.0_131&operating_system=Linux%204.8.0-59-generic%20amd64%20gnome&throwable_message=throwable&app_id=app_id&user=%7B%22id%22%3A0%7D")));
27+
Crash crash = Crash.create("app_id", "1.0.0", new User(), new OauthToken("access_token_value", "refresh_token_value"), new Throwable("throwable"));
28+
29+
new CrashClient(client).sendCrash(crash);
30+
31+
verify(postRequestedFor(urlMatching(url))
32+
.withRequestBody(equalTo("app_version=1.0.0&oauth_token=%7B%22access_token%22%3A%22access_token_value%22%2C%22refresh_token%22%3A%22refresh_token_value%22%7D&throwable=java.lang.Throwable%3A%20throwable%0A%09at%20com.tagmycode.sdk.crash.CrashClientTest.sendCrash%28CrashClientTest.java%3A27%29%0A%09at%20sun.reflect.NativeMethodAccessorImpl.invoke0%28Native%20Method%29%0A%09at%20sun.reflect.NativeMethodAccessorImpl.invoke%28NativeMethodAccessorImpl.java%3A62%29%0A%09at%20sun.reflect.DelegatingMethodAccessorImpl.invoke%28DelegatingMethodAccessorImpl.java%3A43%29%0A%09at%20java.lang.reflect.Method.invoke%28Method.java%3A498%29%0A%09at%20org.junit.runners.model.FrameworkMethod%241.runReflectiveCall%28FrameworkMethod.java%3A47%29%0A%09at%20org.junit.internal.runners.model.ReflectiveCallable.run%28ReflectiveCallable.java%3A12%29%0A%09at%20org.junit.runners.model.FrameworkMethod.invokeExplosively%28FrameworkMethod.java%3A44%29%0A%09at%20org.junit.internal.runners.statements.InvokeMethod.evaluate%28InvokeMethod.java%3A17%29%0A%09at%20org.junit.internal.runners.statements.RunBefores.evaluate%28RunBefores.java%3A26%29%0A%09at%20com.github.tomakehurst.wiremock.junit.WireMockRule%241.evaluate%28WireMockRule.java%3A74%29%0A%09at%20org.junit.rules.RunRules.evaluate%28RunRules.java%3A20%29%0A%09at%20org.junit.runners.ParentRunner.runLeaf%28ParentRunner.java%3A271%29%0A%09at%20org.junit.runners.BlockJUnit4ClassRunner.runChild%28BlockJUnit4ClassRunner.java%3A70%29%0A%09at%20org.junit.runners.BlockJUnit4ClassRunner.runChild%28BlockJUnit4ClassRunner.java%3A50%29%0A%09at%20org.junit.runners.ParentRunner%243.run%28ParentRunner.java%3A238%29%0A%09at%20org.junit.runners.ParentRunner%241.schedule%28ParentRunner.java%3A63%29%0A%09at%20org.junit.runners.ParentRunner.runChildren%28ParentRunner.java%3A236%29%0A%09at%20org.junit.runners.ParentRunner.access%24000%28ParentRunner.java%3A53%29%0A%09at%20org.junit.runners.ParentRunner%242.evaluate%28ParentRunner.java%3A229%29%0A%09at%20org.junit.runners.ParentRunner.run%28ParentRunner.java%3A309%29%0A%09at%20org.junit.runner.JUnitCore.run%28JUnitCore.java%3A160%29%0A%09at%20com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs%28JUnit4IdeaTestRunner.java%3A68%29%0A%09at%20com.intellij.rt.execution.junit.IdeaTestRunner%24Repeater.startRunnerWithArgs%28IdeaTestRunner.java%3A47%29%0A%09at%20com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart%28JUnitStarter.java%3A242%29%0A%09at%20com.intellij.rt.execution.junit.JUnitStarter.main%28JUnitStarter.java%3A70%29%0A&java_version=1.8.0_131&operating_system=Linux%204.8.0-59-generic%20amd64%20gnome&throwable_message=throwable&app_id=app_id&user=%7B%22id%22%3A0%7D")));
3033
crashClient.sendCrash(crash);
3134
}
3235
}
Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,54 @@
11
package com.tagmycode.sdk.crash;
22

3+
import com.tagmycode.sdk.authentication.OauthToken;
34
import com.tagmycode.sdk.model.User;
45
import org.json.JSONException;
56
import org.junit.Test;
67

78
import java.util.Map;
89

9-
import static org.junit.Assert.assertEquals;
10-
import static org.junit.Assert.assertTrue;
10+
import static org.junit.Assert.*;
1111

1212
public class CrashTest {
1313

14+
private OauthToken oauthToken = new OauthToken("access_token_value", "refresh_token_value");
15+
1416
@Test
1517
public void create() throws JSONException {
16-
Crash crash = Crash.create("0000", "1.1.1", new User(), new Exception("message"));
18+
Crash crash = Crash.create("0000", "1.1.1", new User(), oauthToken, new Exception("message"));
1719
assertTrue(crash.getOperatingSystem().length() > 0);
1820
assertTrue(crash.getJavaVersion().contains("1."));
1921
assertEquals("0000", crash.getAppId());
2022
assertEquals("1.1.1", crash.getAppVersion());
2123
assertEquals("{\"id\":0}", crash.getUser().toJson());
24+
assertEquals("{\"access_token\":\"access_token_value\",\"refresh_token\":\"refresh_token_value\"}", crash.getOauthToken().toJson());
2225
assertEquals("message", crash.getThrowable().getMessage());
2326
}
2427

2528
@Test
2629
public void toMap() throws JSONException {
2730
Crash crash = new Crash("OS", "1.8", "plugin_id",
28-
"2.0.0", new User().setUsername("username"), new Exception("Error message"));
31+
"2.0.0", new User().setUsername("username"), oauthToken, new Exception("Error message"));
2932

3033
Map<String, String> map = crash.toMap();
3134
assertEquals("OS", map.get(Crash.OPERATING_SYSTEM));
3235
assertEquals("1.8", map.get(Crash.JAVA_VERSION));
3336
assertEquals("2.0.0", map.get(Crash.APP_VERSION));
3437
assertEquals("plugin_id", map.get(Crash.APP_ID));
3538
assertEquals("{\"id\":0,\"username\":\"username\"}", map.get(Crash.USER));
39+
assertEquals("{\"access_token\":\"access_token_value\",\"refresh_token\":\"refresh_token_value\"}", map.get(Crash.OAUTH_TOKEN));
3640
String[] stackTrace = map.get(Crash.THROWABLE).split("\r\n|\r|\n");
3741
assertTrue(stackTrace.length > 10);
3842
assertEquals("java.lang.Exception: Error message", stackTrace[0]);
3943
assertEquals("java.lang.Exception: Error message", stackTrace[0]);
4044
assertEquals("Error message", map.get(Crash.THROWABLE_MESSAGE));
4145
}
4246

47+
@Test
48+
public void nullOauthToken() throws JSONException {
49+
oauthToken = null;
50+
Crash crash = Crash.create("0000", "1.1.1", new User(), oauthToken, new Exception("message"));
51+
assertNull(crash.toMap().get(Crash.OAUTH_TOKEN));
52+
}
53+
4354
}

0 commit comments

Comments
 (0)