-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
package io.embrace.android.embracesdk.internal.api.delegate | ||
|
||
import io.embrace.android.embracesdk.SessionApi | ||
import io.embrace.android.embracesdk.injection.ModuleInitBootstrapper | ||
import io.embrace.android.embracesdk.injection.embraceImplInject | ||
|
||
internal class SessionApiDelegate( | ||
bootstrapper: ModuleInitBootstrapper, | ||
private val sdkCallChecker: SdkCallChecker | ||
) : SessionApi { | ||
|
||
private val sessionPropertiesService by embraceImplInject(sdkCallChecker) { | ||
bootstrapper.sessionModule.sessionPropertiesService | ||
} | ||
private val sessionOrchestrator by embraceImplInject(sdkCallChecker) { bootstrapper.sessionModule.sessionOrchestrator } | ||
|
||
/** | ||
* Adds a property to the current session. | ||
*/ | ||
override fun addSessionProperty(key: String, value: String, permanent: Boolean): Boolean { | ||
if (sdkCallChecker.check("add_session_property")) { | ||
return sessionPropertiesService?.addProperty(key, value, permanent) ?: false | ||
} | ||
return false | ||
Check warning on line 24 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/api/delegate/SessionApiDelegate.kt
|
||
} | ||
|
||
/** | ||
* Removes a property from the current session. | ||
*/ | ||
override fun removeSessionProperty(key: String): Boolean { | ||
if (sdkCallChecker.check("remove_session_property")) { | ||
return sessionPropertiesService?.removeProperty(key) ?: false | ||
} | ||
return false | ||
Check warning on line 34 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/api/delegate/SessionApiDelegate.kt
|
||
} | ||
|
||
override fun getSessionProperties(): Map<String, String>? { | ||
if (sdkCallChecker.check("get_session_properties")) { | ||
return sessionPropertiesService?.getProperties() | ||
} | ||
return null | ||
Check warning on line 41 in embrace-android-sdk/src/main/java/io/embrace/android/embracesdk/internal/api/delegate/SessionApiDelegate.kt
|
||
} | ||
|
||
override fun endSession() = endSession(false) | ||
|
||
/** | ||
* Ends the current session and starts a new one. | ||
* | ||
* Cleans all the user info on the device. | ||
*/ | ||
override fun endSession(clearUserInfo: Boolean) { | ||
if (sdkCallChecker.check("end_session")) { | ||
sessionOrchestrator?.endSessionWithManual(clearUserInfo) | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
package io.embrace.android.embracesdk.internal.api.delegate | ||
|
||
import androidx.test.core.app.ApplicationProvider | ||
import androidx.test.ext.junit.runners.AndroidJUnit4 | ||
import io.embrace.android.embracesdk.Embrace | ||
import io.embrace.android.embracesdk.FakeSessionPropertiesService | ||
import io.embrace.android.embracesdk.fakes.FakeEmbLogger | ||
import io.embrace.android.embracesdk.fakes.FakeSessionOrchestrator | ||
import io.embrace.android.embracesdk.fakes.FakeTelemetryService | ||
import io.embrace.android.embracesdk.fakes.fakeModuleInitBootstrapper | ||
import org.junit.Assert.assertEquals | ||
import org.junit.Assert.assertNull | ||
import org.junit.Before | ||
import org.junit.Test | ||
import org.junit.runner.RunWith | ||
|
||
@RunWith(AndroidJUnit4::class) | ||
internal class SessionApiDelegateTest { | ||
|
||
private lateinit var delegate: SessionApiDelegate | ||
private lateinit var orchestrator: FakeSessionOrchestrator | ||
private lateinit var sessionPropertiesService: FakeSessionPropertiesService | ||
|
||
@Before | ||
fun setUp() { | ||
val moduleInitBootstrapper = fakeModuleInitBootstrapper() | ||
moduleInitBootstrapper.init(ApplicationProvider.getApplicationContext(), Embrace.AppFramework.NATIVE, 0) | ||
orchestrator = moduleInitBootstrapper.sessionModule.sessionOrchestrator as FakeSessionOrchestrator | ||
sessionPropertiesService = moduleInitBootstrapper.sessionModule.sessionPropertiesService as FakeSessionPropertiesService | ||
|
||
val sdkCallChecker = SdkCallChecker(FakeEmbLogger(), FakeTelemetryService()) | ||
sdkCallChecker.started.set(true) | ||
delegate = SessionApiDelegate(moduleInitBootstrapper, sdkCallChecker) | ||
} | ||
|
||
@Test | ||
fun `add session property`() { | ||
delegate.addSessionProperty("test", "value", false) | ||
assertEquals("value", sessionPropertiesService.props["test"]) | ||
} | ||
|
||
@Test | ||
fun `remove session property`() { | ||
delegate.addSessionProperty("test", "value", false) | ||
delegate.removeSessionProperty("test") | ||
assertNull(sessionPropertiesService.props["test"]) | ||
} | ||
|
||
@Test | ||
fun `get session properties`() { | ||
sessionPropertiesService.props["key"] = "value" | ||
assertEquals(mapOf("key" to "value"), delegate.getSessionProperties()) | ||
} | ||
|
||
@Test | ||
fun `end session`() { | ||
delegate.endSession() | ||
assertEquals(1, orchestrator.manualEndCount) | ||
} | ||
|
||
@Test | ||
fun `end session clear user info`() { | ||
delegate.endSession(true) | ||
assertEquals(1, orchestrator.manualEndCount) | ||
} | ||
} |