From ffa0809c84199610bd91731584172a95ec089831 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 1 Mar 2018 14:52:51 +0000 Subject: [PATCH 1/2] add tests for setting metadata filters by default --- .../com/bugsnag/android/MetaDataTest.java | 41 +++++++++++++++++++ .../com/bugsnag/android/Configuration.java | 13 ++++-- .../java/com/bugsnag/android/MetaData.java | 4 ++ 3 files changed, 55 insertions(+), 3 deletions(-) diff --git a/sdk/src/androidTest/java/com/bugsnag/android/MetaDataTest.java b/sdk/src/androidTest/java/com/bugsnag/android/MetaDataTest.java index 6dea83eae4..a72b5ee2e1 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/MetaDataTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/MetaDataTest.java @@ -6,6 +6,7 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -17,6 +18,7 @@ import java.util.Map; import static com.bugsnag.android.BugsnagTestUtils.streamableToJson; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -24,6 +26,13 @@ @SmallTest public class MetaDataTest { + private Client client; + + @Before + public void setUp() throws Exception { + client = BugsnagTestUtils.generateClient(); + } + @Test public void testBasicSerialization() throws JSONException, IOException { MetaData metaData = new MetaData(); @@ -188,4 +197,36 @@ public void testNestedFiltering() throws JSONException, IOException { assertEquals("[FILTERED]", sensitiveMapJson.getString("confirm_password")); assertEquals("safe", sensitiveMapJson.getString("normal")); } + + @Test + public void testFilterConstructor() throws Exception { + MetaData metaData = client.getMetaData(); + metaData.addToTab("foo", "password", "abc123"); + JSONObject jsonObject = streamableToJson(metaData); + + assertArrayEquals(new String[]{"password"}, metaData.getFilters()); + assertEquals("[FILTERED]", jsonObject.getJSONObject("foo").get("password")); + } + + @Test + public void testFilterSetter() throws Exception { + MetaData metaData = new MetaData(); + client.setMetaData(metaData); + assertArrayEquals(new String[]{"password"}, metaData.getFilters()); + } + + @Test + public void testFilterOverride() throws Exception { + MetaData metaData = client.getMetaData(); + client.setFilters("test", "another"); + assertArrayEquals(new String[]{"test", "another"}, metaData.getFilters()); + } + + @Test + public void testFilterMetadataOverride() throws Exception { + MetaData data = new MetaData(); + data.setFilters("CUSTOM"); + client.setMetaData(data); + assertArrayEquals(new String[]{"CUSTOM"}, data.getFilters()); + } } diff --git a/sdk/src/main/java/com/bugsnag/android/Configuration.java b/sdk/src/main/java/com/bugsnag/android/Configuration.java index 2c9a9780d5..204adc8005 100644 --- a/sdk/src/main/java/com/bugsnag/android/Configuration.java +++ b/sdk/src/main/java/com/bugsnag/android/Configuration.java @@ -32,7 +32,6 @@ public class Configuration extends Observable implements Observer { private String endpoint = "https://notify.bugsnag.com"; private String sessionEndpoint = "https://sessions.bugsnag.com"; - private String[] filters = new String[]{"password"}; private String[] ignoreClasses; @Nullable private String[] notifyReleaseStages = null; @@ -64,6 +63,7 @@ public class Configuration extends Observable implements Observer { public Configuration(@NonNull String apiKey) { this.apiKey = apiKey; this.metaData = new MetaData(); + setDefaultMetaDataFilters(); this.metaData.addObserver(this); } @@ -190,7 +190,7 @@ public void setBuildUUID(String buildUuid) { * @return Filters */ public String[] getFilters() { - return filters; + return metaData.getFilters(); } /** @@ -207,7 +207,6 @@ public String[] getFilters() { * @param filters a list of keys to filter from metaData */ public void setFilters(String[] filters) { - this.filters = filters; this.metaData.setFilters(filters); } @@ -389,6 +388,10 @@ protected void setMetaData(@NonNull MetaData metaData) { this.metaData = metaData; } + if (this.metaData.getFilters() == null) { + setDefaultMetaDataFilters(); + } + this.metaData.addObserver(this); notifyBugsnagObservers(NotifyType.META); } @@ -577,6 +580,10 @@ protected boolean inProject(@NonNull String className) { return false; } + private void setDefaultMetaDataFilters() { + metaData.setFilters("password"); + } + private void notifyBugsnagObservers(@NonNull NotifyType type) { setChanged(); super.notifyObservers(type.getValue()); diff --git a/sdk/src/main/java/com/bugsnag/android/MetaData.java b/sdk/src/main/java/com/bugsnag/android/MetaData.java index 45325b6d7a..b32bd930a4 100644 --- a/sdk/src/main/java/com/bugsnag/android/MetaData.java +++ b/sdk/src/main/java/com/bugsnag/android/MetaData.java @@ -118,6 +118,10 @@ void setFilters(String... filters) { notifyBugsnagObservers(NotifyType.FILTERS); } + String[] getFilters() { + return filters; + } + @NonNull static MetaData merge(@NonNull MetaData... metaDataList) { List> stores = new ArrayList<>(); From 9c4005a143509173415c782c33b1d4387f3810ff Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 1 Mar 2018 16:37:26 +0000 Subject: [PATCH 2/2] set filters to default in metadata object --- sdk/src/main/java/com/bugsnag/android/Configuration.java | 9 --------- sdk/src/main/java/com/bugsnag/android/MetaData.java | 3 ++- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/sdk/src/main/java/com/bugsnag/android/Configuration.java b/sdk/src/main/java/com/bugsnag/android/Configuration.java index 204adc8005..d4c99a0dd6 100644 --- a/sdk/src/main/java/com/bugsnag/android/Configuration.java +++ b/sdk/src/main/java/com/bugsnag/android/Configuration.java @@ -63,7 +63,6 @@ public class Configuration extends Observable implements Observer { public Configuration(@NonNull String apiKey) { this.apiKey = apiKey; this.metaData = new MetaData(); - setDefaultMetaDataFilters(); this.metaData.addObserver(this); } @@ -388,10 +387,6 @@ protected void setMetaData(@NonNull MetaData metaData) { this.metaData = metaData; } - if (this.metaData.getFilters() == null) { - setDefaultMetaDataFilters(); - } - this.metaData.addObserver(this); notifyBugsnagObservers(NotifyType.META); } @@ -580,10 +575,6 @@ protected boolean inProject(@NonNull String className) { return false; } - private void setDefaultMetaDataFilters() { - metaData.setFilters("password"); - } - private void notifyBugsnagObservers(@NonNull NotifyType type) { setChanged(); super.notifyObservers(type.getValue()); diff --git a/sdk/src/main/java/com/bugsnag/android/MetaData.java b/sdk/src/main/java/com/bugsnag/android/MetaData.java index b32bd930a4..258aba7797 100644 --- a/sdk/src/main/java/com/bugsnag/android/MetaData.java +++ b/sdk/src/main/java/com/bugsnag/android/MetaData.java @@ -25,7 +25,8 @@ public class MetaData extends Observable implements JsonStream.Streamable { private static final String FILTERED_PLACEHOLDER = "[FILTERED]"; private static final String OBJECT_PLACEHOLDER = "[OBJECT]"; - private String[] filters; + private String[] filters = {"password"}; + @NonNull final Map store;