Skip to content

Commit ce74a1a

Browse files
authored
User agent format update (#195)
* Trivial update to user agent string to improve splunk boards visibility into react native * Added unit test of user agent string format --------- Co-authored-by: Evan Masseau <>
1 parent 798d03d commit ce74a1a

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

sdk/analytics/src/main/java/com/klaviyo/analytics/DeviceProperties.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ internal object DeviceProperties {
7171
}
7272

7373
val userAgent: String by lazy {
74-
"$applicationLabel/$appVersion ($applicationId; build:$appVersionCode; $platform $osVersion) klaviyo-android/$sdkVersion"
74+
val sdkAgent = "klaviyo-${sdkName.replace("_","-")}"
75+
"$applicationLabel/$appVersion ($applicationId; build:$appVersionCode; $platform $osVersion) $sdkAgent/$sdkVersion"
7576
}
7677

7778
private val packageInfo: PackageInfo by lazy {

sdk/analytics/src/test/java/com/klaviyo/analytics/DevicePropertiesTest.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import io.mockk.mockk
99
import io.mockk.mockkObject
1010
import io.mockk.unmockkObject
1111
import io.mockk.verify
12+
import org.junit.After
1213
import org.junit.Assert.assertEquals
1314
import org.junit.Test
1415

@@ -52,6 +53,12 @@ internal class DevicePropertiesTest : BaseTest() {
5253
versionCode = mockVersionCode
5354
}
5455

56+
@After
57+
override fun cleanup() {
58+
unmockDeviceProperties()
59+
super.cleanup()
60+
}
61+
5562
@Test
5663
fun `getVersionCodeCompat detects platform properly`() {
5764
setFinalStatic(Build.VERSION::class.java.getField("SDK_INT"), 23)
@@ -66,4 +73,24 @@ internal class DevicePropertiesTest : BaseTest() {
6673
mockPackageInfo.longVersionCode
6774
}
6875
}
76+
77+
@Test
78+
fun `User agent reflects SDK name override`() {
79+
mockDeviceProperties()
80+
// Use some more realistic values for this, so the expected user agent string actually matches our regexes
81+
every { DeviceProperties.applicationLabel } returns "MockApp"
82+
every { DeviceProperties.appVersion } returns "1.0.0"
83+
every { DeviceProperties.appVersionCode } returns "2"
84+
every { DeviceProperties.sdkVersion } returns "3.0.0"
85+
every { DeviceProperties.applicationId } returns "com.mock.app"
86+
every { DeviceProperties.platform } returns "Android"
87+
every { DeviceProperties.osVersion } returns "4"
88+
every { DeviceProperties.sdkName } returns "cross_platform"
89+
every { DeviceProperties.userAgent } answers { callOriginal() }
90+
91+
assertEquals(
92+
"MockApp/1.0.0 (com.mock.app; build:2; Android 4) klaviyo-cross-platform/3.0.0",
93+
DeviceProperties.userAgent
94+
)
95+
}
6996
}

0 commit comments

Comments
 (0)