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 eff55eafce..2e84476482 100644 --- a/sdk/src/main/java/com/bugsnag/android/Configuration.java +++ b/sdk/src/main/java/com/bugsnag/android/Configuration.java @@ -33,7 +33,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; @@ -191,7 +190,7 @@ public void setBuildUUID(String buildUuid) { * @return Filters */ public String[] getFilters() { - return filters; + return metaData.getFilters(); } /** @@ -208,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); } diff --git a/sdk/src/main/java/com/bugsnag/android/MetaData.java b/sdk/src/main/java/com/bugsnag/android/MetaData.java index 45325b6d7a..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; @@ -118,6 +119,10 @@ void setFilters(String... filters) { notifyBugsnagObservers(NotifyType.FILTERS); } + String[] getFilters() { + return filters; + } + @NonNull static MetaData merge(@NonNull MetaData... metaDataList) { List> stores = new ArrayList<>();