Skip to content

Commit 0a0fc35

Browse files
authored
Merge pull request #65 from Flagsmith/fix/exclude-transient-false
fix: Exclude transient query parameter from identities request when false
2 parents c4453cc + 846c3ba commit 0a0fc35

File tree

4 files changed

+39
-3
lines changed

4 files changed

+39
-3
lines changed

FlagsmithClient/src/main/java/com/flagsmith/Flagsmith.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class Flagsmith constructor(
116116
result(it.map { response -> response.flags })
117117
}).also { lastUsedIdentity = identity }
118118
} else {
119-
retrofit.getIdentityFlagsAndTraits(identity, transient).enqueueWithResult { res ->
119+
retrofit.getIdentityFlagsAndTraits(identity, if (transient) true else null).enqueueWithResult { res ->
120120
flagUpdateFlow.tryEmit(res.getOrNull()?.flags ?: emptyList())
121121
result(res.map { it.flags })
122122
}
@@ -182,7 +182,7 @@ class Flagsmith constructor(
182182
}
183183

184184
fun getIdentity(identity: String, transient: Boolean = false, result: (Result<IdentityFlagsAndTraits>) -> Unit) =
185-
retrofit.getIdentityFlagsAndTraits(identity, transient).enqueueWithResult(defaults = null, result = result)
185+
retrofit.getIdentityFlagsAndTraits(identity, if (transient) true else null).enqueueWithResult(defaults = null, result = result)
186186
.also { lastUsedIdentity = identity }
187187

188188
fun clearCache() {

FlagsmithClient/src/main/java/com/flagsmith/internal/FlagsmithRetrofitService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import com.google.gson.GsonBuilder
2323
interface FlagsmithRetrofitService {
2424

2525
@GET("identities/")
26-
fun getIdentityFlagsAndTraits(@Query("identifier") identity: String, @Query("transient") transient: Boolean = false) : Call<IdentityFlagsAndTraits>
26+
fun getIdentityFlagsAndTraits(@Query("identifier") identity: String, @Query("transient") transient: Boolean? = null) : Call<IdentityFlagsAndTraits>
2727

2828
@GET("flags/")
2929
fun getFlags() : Call<List<Flag>>

FlagsmithClient/src/test/java/com/flagsmith/FeatureFlagTests.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,4 +240,23 @@ class FeatureFlagTests {
240240
assertTrue(result.isSuccess)
241241
}
242242
}
243+
244+
@Test
245+
fun testGetFeatureFlagsWithNullTraitsHasNoTransientParam() {
246+
mockServer.mockResponseFor(MockEndpoint.GET_IDENTITIES)
247+
248+
runBlocking {
249+
flagsmith.getFeatureFlagsSync("", null, false)
250+
val requests = mockServer.retrieveRecordedRequests(
251+
request()
252+
.withPath("/identities/")
253+
.withMethod("GET")
254+
)
255+
assertEquals(1, requests.size)
256+
val request = requests[0]
257+
val transientParam = request.queryStringParameterList.find { it.name.toString() == "transient" }
258+
assertNull("transient parameter should not be present", transientParam)
259+
}
260+
}
261+
243262
}

FlagsmithClient/src/test/java/com/flagsmith/IdentityTests.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,23 @@ class IdentityTests {
5858
}
5959
}
6060

61+
@Test
62+
fun testGetIdentityWithoutTransientParameter() {
63+
mockServer.mockResponseFor(MockEndpoint.GET_IDENTITIES)
64+
runBlocking {
65+
flagsmith.getIdentitySync("person")
66+
val requests = mockServer.retrieveRecordedRequests(
67+
request()
68+
.withPath("/identities/")
69+
.withMethod("GET")
70+
)
71+
assertEquals(1, requests.size)
72+
val request = requests[0]
73+
val transientParam = request.queryStringParameterList.find { it.name.toString() == "transient" }
74+
assertNull("transient parameter should not be present", transientParam)
75+
}
76+
}
77+
6178
@Test
6279
fun testGetTransientIdentity() {
6380
mockServer.mockResponseFor(MockEndpoint.GET_TRANSIENT_IDENTITIES)

0 commit comments

Comments
 (0)