Skip to content

Commit 1a35341

Browse files
authored
Merge pull request #64 from sergeirr/fix/exclude-transient-query-false
Exclude transient query parameter from identities request when false
2 parents c4453cc + 0038652 commit 1a35341

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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/IdentityTests.kt

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

61+
@Test(expected = AssertionError::class)
62+
fun testGetIdentityWithExpectedParameterMissing() {
63+
mockServer.mockResponseFor(MockEndpoint.GET_IDENTITIES)
64+
runBlocking {
65+
flagsmith.getIdentitySync("person")
66+
67+
mockServer.verify(
68+
request()
69+
.withPath("/identities/")
70+
.withMethod("GET")
71+
.withQueryStringParameter("transient")
72+
)
73+
}
74+
}
75+
76+
@Test
77+
fun testGetIdentityWithoutTransientParameter() {
78+
mockServer.mockResponseFor(MockEndpoint.GET_IDENTITIES)
79+
runBlocking {
80+
flagsmith.getIdentitySync("person")
81+
val requests = mockServer.retrieveRecordedRequests(
82+
request()
83+
.withPath("/identities/")
84+
.withMethod("GET")
85+
)
86+
assertEquals(1, requests.size)
87+
val request = requests[0]
88+
val transientParam = request.queryStringParameterList.find { it.name.toString() == "transient" }
89+
assertNull("transient parameter should not be present", transientParam)
90+
}
91+
}
92+
6193
@Test
6294
fun testGetTransientIdentity() {
6395
mockServer.mockResponseFor(MockEndpoint.GET_TRANSIENT_IDENTITIES)

0 commit comments

Comments
 (0)