diff --git a/FlagsmithClient/src/main/java/com/flagsmith/Flagsmith.kt b/FlagsmithClient/src/main/java/com/flagsmith/Flagsmith.kt index 6101f27..7a38439 100644 --- a/FlagsmithClient/src/main/java/com/flagsmith/Flagsmith.kt +++ b/FlagsmithClient/src/main/java/com/flagsmith/Flagsmith.kt @@ -182,7 +182,7 @@ class Flagsmith constructor( } fun getIdentity(identity: String, transient: Boolean = false, result: (Result) -> Unit) = - retrofit.getIdentityFlagsAndTraits(identity, transient).enqueueWithResult(defaults = null, result = result) + retrofit.getIdentityFlagsAndTraits(identity, if (transient) true else null).enqueueWithResult(defaults = null, result = result) .also { lastUsedIdentity = identity } fun clearCache() { diff --git a/FlagsmithClient/src/main/java/com/flagsmith/internal/FlagsmithRetrofitService.kt b/FlagsmithClient/src/main/java/com/flagsmith/internal/FlagsmithRetrofitService.kt index 9753b0a..60e9eab 100644 --- a/FlagsmithClient/src/main/java/com/flagsmith/internal/FlagsmithRetrofitService.kt +++ b/FlagsmithClient/src/main/java/com/flagsmith/internal/FlagsmithRetrofitService.kt @@ -23,7 +23,7 @@ import com.google.gson.GsonBuilder interface FlagsmithRetrofitService { @GET("identities/") - fun getIdentityFlagsAndTraits(@Query("identifier") identity: String, @Query("transient") transient: Boolean = false) : Call + fun getIdentityFlagsAndTraits(@Query("identifier") identity: String, @Query("transient") transient: Boolean? = null) : Call @GET("flags/") fun getFlags() : Call> diff --git a/FlagsmithClient/src/test/java/com/flagsmith/IdentityTests.kt b/FlagsmithClient/src/test/java/com/flagsmith/IdentityTests.kt index 7a6c9c4..dedacdd 100644 --- a/FlagsmithClient/src/test/java/com/flagsmith/IdentityTests.kt +++ b/FlagsmithClient/src/test/java/com/flagsmith/IdentityTests.kt @@ -58,6 +58,38 @@ class IdentityTests { } } + @Test(expected = AssertionError::class) + fun testGetIdentityWithExpectedParameterMissing() { + mockServer.mockResponseFor(MockEndpoint.GET_IDENTITIES) + runBlocking { + flagsmith.getIdentitySync("person") + + mockServer.verify( + request() + .withPath("/identities/") + .withMethod("GET") + .withQueryStringParameter("transient") + ) + } + } + + @Test + fun testGetIdentityWithoutTransientParameter() { + mockServer.mockResponseFor(MockEndpoint.GET_IDENTITIES) + runBlocking { + flagsmith.getIdentitySync("person") + val requests = mockServer.retrieveRecordedRequests( + request() + .withPath("/identities/") + .withMethod("GET") + ) + assertEquals(1, requests.size) + val request = requests[0] + val transientParam = request.queryStringParameterList.find { it.name.toString() == "transient" } + assertNull("transient parameter should not be present", transientParam) + } + } + @Test fun testGetTransientIdentity() { mockServer.mockResponseFor(MockEndpoint.GET_TRANSIENT_IDENTITIES)