Skip to content

Commit 72d74e0

Browse files
Add error field to file result and set on decrypt error (#161)
* Add error field to file result and set on decrypt error * PubNub SDK v7.7.4 release. --------- Co-authored-by: PubNub Release Bot <[email protected]>
1 parent 19a4a75 commit 72d74e0

File tree

11 files changed

+50
-14
lines changed

11 files changed

+50
-14
lines changed

.pubnub.yml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
name: kotlin
2-
version: 7.7.3
2+
version: 7.7.4
33
schema: 1
44
scm: github.com/pubnub/kotlin
55
files:
6-
- build/libs/pubnub-kotlin-7.7.3-all.jar
6+
- build/libs/pubnub-kotlin-7.7.4-all.jar
77
sdks:
88
-
99
type: library
@@ -23,8 +23,8 @@ sdks:
2323
-
2424
distribution-type: library
2525
distribution-repository: maven
26-
package-name: pubnub-kotlin-7.7.3
27-
location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/7.7.3/pubnub-kotlin-7.7.3.jar
26+
package-name: pubnub-kotlin-7.7.4
27+
location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/7.7.4/pubnub-kotlin-7.7.4.jar
2828
supported-platforms:
2929
supported-operating-systems:
3030
Android:
@@ -114,6 +114,11 @@ sdks:
114114
license-url: https://www.apache.org/licenses/LICENSE-2.0.txt
115115
is-required: Required
116116
changelog:
117+
- date: 2023-11-28
118+
version: v7.7.4
119+
changes:
120+
- type: feature
121+
text: "Add `error` field to `PNFileEventResult` and set it in case of decryption failure."
117122
- date: 2023-11-23
118123
version: v7.7.3
119124
changes:

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## v7.7.4
2+
November 28 2023
3+
4+
#### Added
5+
- Add `error` field to `PNFileEventResult` and set it in case of decryption failure.
6+
17
## v7.7.3
28
November 23 2023
39

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ You will need the publish and subscribe keys to authenticate your app. Get your
2020
<dependency>
2121
<groupId>com.pubnub</groupId>
2222
<artifactId>pubnub-kotlin</artifactId>
23-
<version>7.7.3</version>
23+
<version>7.7.4</version>
2424
</dependency>
2525
```
2626

2727
* for Gradle, add the following dependency in your `gradle.build`:
2828
```groovy
29-
implementation 'com.pubnub:pubnub-kotlin:7.7.3'
29+
implementation 'com.pubnub:pubnub-kotlin:7.7.4'
3030
```
3131

3232
2. Configure your keys:

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ SONATYPE_HOST=DEFAULT
2121
SONATYPE_AUTOMATIC_RELEASE=true
2222
GROUP=com.pubnub
2323
POM_ARTIFACT_ID=pubnub-kotlin
24-
VERSION_NAME=7.7.3
24+
VERSION_NAME=7.7.4
2525
POM_PACKAGING=jar
2626

2727
POM_NAME=PubNub Kotlin SDK

src/main/kotlin/com/pubnub/api/PubNub.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ class PubNub internal constructor(
106106

107107
companion object {
108108
private const val TIMESTAMP_DIVIDER = 1000
109-
private const val SDK_VERSION = "7.7.3"
109+
private const val SDK_VERSION = "7.7.4"
110110
private const val MAX_SEQUENCE = 65535
111111

112112
/**

src/main/kotlin/com/pubnub/api/PubNubError.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ enum class PubNubError(private val code: Int, val message: String) {
228228

229229
CRYPTO_IS_CONFIGURED_BUT_MESSAGE_IS_NOT_ENCRYPTED(
230230
177,
231-
"Crypto is configured but message is not encrypted."
231+
"Message decryption failed using the current crypto configuration."
232232
),
233233

234234
;

src/main/kotlin/com/pubnub/api/models/consumer/pubsub/files/PNFileEventResult.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.pubnub.api.models.consumer.pubsub.files
22

33
import com.google.gson.JsonElement
4+
import com.pubnub.api.PubNubError
45
import com.pubnub.api.models.consumer.files.PNDownloadableFile
56
import com.pubnub.api.models.consumer.pubsub.PNEvent
67

@@ -10,5 +11,6 @@ data class PNFileEventResult(
1011
val publisher: String?,
1112
val message: Any?,
1213
val file: PNDownloadableFile,
13-
val jsonMessage: JsonElement
14+
val jsonMessage: JsonElement,
15+
val error: PubNubError? = null
1416
) : PNEvent

src/main/kotlin/com/pubnub/api/workers/SubscribeMessageProcessor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,8 @@ internal class SubscribeMessageProcessor(
153153
publisher = message.issuingClientId,
154154
timetoken = result.timetoken,
155155
jsonMessage = fileUploadNotification.message?.let { pubnub.mapper.toJsonTree(it) }
156-
?: JsonNull.INSTANCE
156+
?: JsonNull.INSTANCE,
157+
error = error
157158
)
158159
}
159160

src/test/kotlin/com/pubnub/api/legacy/PubNubTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class PubNubTest : BaseTest() {
7171
fun getVersionAndTimeStamp() {
7272
val version = pubnub.version
7373
val timeStamp = pubnub.timestamp()
74-
assertEquals("7.7.3", version)
74+
assertEquals("7.7.4", version)
7575
assertTrue(timeStamp > 0)
7676
}
7777
}

src/test/kotlin/com/pubnub/api/workers/SubscribeMessageProcessorTest.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.google.gson.JsonObject
88
import com.google.gson.JsonPrimitive
99
import com.pubnub.api.PNConfiguration
1010
import com.pubnub.api.PubNub
11+
import com.pubnub.api.PubNubError
1112
import com.pubnub.api.PubNubException
1213
import com.pubnub.api.UserId
1314
import com.pubnub.api.crypto.CryptoModule
@@ -81,6 +82,26 @@ class SubscribeMessageProcessorTest(
8182
assertThat((result as PNFileEventResult).jsonMessage, iz(messageJson))
8283
}
8384

85+
@Test
86+
fun testProcessFileUnencryptedWithCrypto() {
87+
val gson = Gson()
88+
val configuration = config()
89+
configuration.cryptoModule = CryptoModule.createAesCbcCryptoModule("enigma", false)
90+
91+
val messageProcessor = messageProcessor(configuration)
92+
93+
val result = messageProcessor.processIncomingPayload(
94+
gson.fromJson(
95+
fileMessage(messageJson.toString()),
96+
SubscribeMessage::class.java
97+
)
98+
)
99+
100+
assertThat(result, isA(PNFileEventResult::class.java))
101+
assertThat((result as PNFileEventResult).jsonMessage, iz(messageJson))
102+
assertThat((result as PNFileEventResult).error, iz(PubNubError.CRYPTO_IS_CONFIGURED_BUT_MESSAGE_IS_NOT_ENCRYPTED))
103+
}
104+
84105
@Test
85106
fun testProcessMessageEncryptedWithCrypto() {
86107
// given

src/test/kotlin/com/pubnub/extension/JsonElementTest.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.google.gson.JsonArray
55
import com.google.gson.JsonElement
66
import com.google.gson.JsonObject
77
import com.google.gson.JsonPrimitive
8+
import com.pubnub.api.PubNubError
89
import com.pubnub.api.crypto.CryptoModule
910
import com.pubnub.api.managers.MapperManager
1011
import org.junit.jupiter.api.Assertions.assertEquals
@@ -94,7 +95,7 @@ class JsonElementTest {
9495

9596
// then
9697
assertEquals(objectUnderTest, jsonElement)
97-
assertEquals("Crypto is configured but message is not encrypted.", errorMessage?.message)
98+
assertEquals(PubNubError.CRYPTO_IS_CONFIGURED_BUT_MESSAGE_IS_NOT_ENCRYPTED, errorMessage)
9899
}
99100

100101
@ParameterizedTest
@@ -137,7 +138,7 @@ class JsonElementTest {
137138

138139
// then
139140
assertEquals(objectUnderTest, jsonElement)
140-
assertEquals("Crypto is configured but message is not encrypted.", errorMessage?.message)
141+
assertEquals(PubNubError.CRYPTO_IS_CONFIGURED_BUT_MESSAGE_IS_NOT_ENCRYPTED, errorMessage)
141142
}
142143

143144
@ParameterizedTest

0 commit comments

Comments
 (0)