From 7988a3d4ed68d6fa533f4656b96a0a23f6774804 Mon Sep 17 00:00:00 2001 From: Niall Brennan Date: Mon, 15 Feb 2021 17:27:38 +0000 Subject: [PATCH 1/2] logic for dot and dash --- .../integrations/firebase/FirebaseIntegration.java | 12 ++++++------ .../android/integration/firebase/FirebaseTest.java | 6 ++++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java index ee1e40a..2a50488 100644 --- a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java +++ b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java @@ -213,13 +213,13 @@ && isNullOrEmpty(properties.currency())) { } public static String makeKey(String key) { - if (key.contains(".")) { - key = key.trim().replace(".", "_"); - } else if (key.contains("-")) { - key = key.trim().replace("-", "_"); - } else { - key = key.trim().replaceAll(" ", "_"); + String[] forbiddenChars = {".", "-", " "}; + for (String forbidden : forbiddenChars) { + if (key.contains(forbidden)) { + key = key.trim().replace(forbidden, "_"); + } } + return key.substring(0, Math.min(key.length(), 40)); } } diff --git a/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java b/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java index 4703662..9eaaee4 100644 --- a/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java +++ b/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java @@ -169,6 +169,12 @@ public void makeKeyWithDot() { verify(firebase).logEvent(eq("test_event"), bundleEq(new Bundle())); } + @Test + public void makeKeyWithDashAndDot() { + integration.track(new TrackPayload.Builder().anonymousId("12345").event("test-event-dashed-and.dotted").build()); + verify(firebase).logEvent(eq("test_event_dashed_and_dotted"), bundleEq(new Bundle())); + } + /** * Uses the string representation of the object. Useful for JSON objects. * @param expected Expected object From 97071b7140901ca046876277b306bf7daed0fd6c Mon Sep 17 00:00:00 2001 From: Niall Brennan Date: Mon, 15 Feb 2021 17:33:46 +0000 Subject: [PATCH 2/2] logic for dot and dash --- .../android/integration/firebase/FirebaseTest.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java b/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java index 9eaaee4..bc4f783 100644 --- a/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java +++ b/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java @@ -169,6 +169,12 @@ public void makeKeyWithDot() { verify(firebase).logEvent(eq("test_event"), bundleEq(new Bundle())); } + @Test + public void makeKeyWithSpace() { + integration.track(new TrackPayload.Builder().anonymousId("12345").event("test event").build()); + verify(firebase).logEvent(eq("test_event"), bundleEq(new Bundle())); + } + @Test public void makeKeyWithDashAndDot() { integration.track(new TrackPayload.Builder().anonymousId("12345").event("test-event-dashed-and.dotted").build());