Skip to content

Commit efa596f

Browse files
committed
Add: new test case for anonymous login with no create subscription and fix some other test cases
1 parent e842703 commit efa596f

File tree

1 file changed

+59
-5
lines changed

1 file changed

+59
-5
lines changed

OneSignalSDK/onesignal/core/src/test/java/com/onesignal/user/internal/operations/LoginUserOperationExecutorTests.kt

Lines changed: 59 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,16 @@ class LoginUserOperationExecutorTests : FunSpec({
3939
val localSubscriptionId2 = "local-subscriptionId2"
4040
val remoteSubscriptionId1 = "remote-subscriptionId1"
4141
val remoteSubscriptionId2 = "remote-subscriptionId2"
42+
val createSubscriptionOperation =
43+
CreateSubscriptionOperation(
44+
appId,
45+
localOneSignalId,
46+
"subscriptionId1",
47+
SubscriptionType.PUSH,
48+
true,
49+
"pushToken1",
50+
SubscriptionStatus.SUBSCRIBED,
51+
)
4252

4353
test("login anonymous user successfully creates user") {
4454
// Given
@@ -58,7 +68,7 @@ class LoginUserOperationExecutorTests : FunSpec({
5868
val loginUserOperationExecutor =
5969
LoginUserOperationExecutor(
6070
mockIdentityOperationExecutor,
61-
MockHelper.applicationService(),
71+
AndroidMockHelper.applicationService(),
6272
MockHelper.deviceService(),
6373
mockUserBackendService,
6474
mockIdentityModelStore,
@@ -67,7 +77,10 @@ class LoginUserOperationExecutorTests : FunSpec({
6777
MockHelper.configModelStore(),
6878
MockHelper.languageContext(),
6979
)
70-
val operations = listOf<Operation>(LoginUserOperation(appId, localOneSignalId, null, null))
80+
val operations = listOf<Operation>(
81+
LoginUserOperation(appId, localOneSignalId, null, null),
82+
createSubscriptionOperation,
83+
)
7184

7285
// When
7386
val response = loginUserOperationExecutor.execute(operations)
@@ -98,7 +111,7 @@ class LoginUserOperationExecutorTests : FunSpec({
98111
val loginUserOperationExecutor =
99112
LoginUserOperationExecutor(
100113
mockIdentityOperationExecutor,
101-
MockHelper.applicationService(),
114+
AndroidMockHelper.applicationService(),
102115
MockHelper.deviceService(),
103116
mockUserBackendService,
104117
mockIdentityModelStore,
@@ -107,7 +120,10 @@ class LoginUserOperationExecutorTests : FunSpec({
107120
MockHelper.configModelStore(),
108121
MockHelper.languageContext(),
109122
)
110-
val operations = listOf<Operation>(LoginUserOperation(appId, localOneSignalId, null, null))
123+
val operations = listOf<Operation>(
124+
LoginUserOperation(appId, localOneSignalId, null, null),
125+
createSubscriptionOperation,
126+
)
111127

112128
// When
113129
val response = loginUserOperationExecutor.execute(operations)
@@ -130,7 +146,7 @@ class LoginUserOperationExecutorTests : FunSpec({
130146
val mockSubscriptionsModelStore = mockk<SubscriptionModelStore>()
131147

132148
val loginUserOperationExecutor =
133-
LoginUserOperationExecutor(mockIdentityOperationExecutor, MockHelper.applicationService(), MockHelper.deviceService(), mockUserBackendService, mockIdentityModelStore, mockPropertiesModelStore, mockSubscriptionsModelStore, MockHelper.configModelStore(), MockHelper.languageContext())
149+
LoginUserOperationExecutor(mockIdentityOperationExecutor, AndroidMockHelper.applicationService(), MockHelper.deviceService(), mockUserBackendService, mockIdentityModelStore, mockPropertiesModelStore, mockSubscriptionsModelStore, MockHelper.configModelStore(), MockHelper.languageContext())
134150
val operations = listOf<Operation>(LoginUserOperation(appId, localOneSignalId, null, null))
135151

136152
// When
@@ -679,4 +695,42 @@ class LoginUserOperationExecutorTests : FunSpec({
679695
)
680696
}
681697
}
698+
699+
test("ensure anonymous login with no other operations will fail with FAIL_NORETRY to release the queue from a bad state") {
700+
// Given
701+
val mockUserBackendService = mockk<IUserBackendService>()
702+
coEvery { mockUserBackendService.createUser(any(), any(), any(), any()) } returns
703+
CreateUserResponse(mapOf(IdentityConstants.ONESIGNAL_ID to remoteOneSignalId), PropertiesObject(), listOf())
704+
705+
val mockIdentityOperationExecutor = mockk<IdentityOperationExecutor>()
706+
707+
val mockIdentityModelStore = MockHelper.identityModelStore()
708+
val mockPropertiesModelStore = MockHelper.propertiesModelStore()
709+
val mockSubscriptionsModelStore = mockk<SubscriptionModelStore>()
710+
711+
val loginUserOperationExecutor =
712+
LoginUserOperationExecutor(
713+
mockIdentityOperationExecutor,
714+
MockHelper.applicationService(),
715+
MockHelper.deviceService(),
716+
mockUserBackendService,
717+
mockIdentityModelStore,
718+
mockPropertiesModelStore,
719+
mockSubscriptionsModelStore,
720+
MockHelper.configModelStore(),
721+
MockHelper.languageContext(),
722+
)
723+
// anonymous Login request
724+
val operations = listOf<Operation>(LoginUserOperation(appId, localOneSignalId, null, null))
725+
726+
// When
727+
val response = loginUserOperationExecutor.execute(operations)
728+
729+
// Then
730+
response.result shouldBe ExecutionResult.FAIL_NORETRY
731+
// ensure user is not created by the bad request
732+
coVerify(
733+
exactly = 0,
734+
) { mockUserBackendService.createUser(appId, any(), any(), any()) }
735+
}
682736
})

0 commit comments

Comments
 (0)