Review: Cleaning / detekt / improve test
This commit is contained in:
parent
f3217efa3d
commit
6ec2b74982
2 changed files with 30 additions and 17 deletions
|
|
@ -38,8 +38,7 @@ import io.element.android.libraries.di.ApplicationContext
|
||||||
import io.element.android.libraries.di.SingleIn
|
import io.element.android.libraries.di.SingleIn
|
||||||
import io.element.android.libraries.matrix.api.MatrixClientProvider
|
import io.element.android.libraries.matrix.api.MatrixClientProvider
|
||||||
import io.element.android.libraries.matrix.api.SdkMetadata
|
import io.element.android.libraries.matrix.api.SdkMetadata
|
||||||
import io.element.android.libraries.matrix.api.core.MatrixPatterns
|
import io.element.android.libraries.matrix.api.core.UserId
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
|
||||||
import io.element.android.libraries.network.useragent.UserAgentProvider
|
import io.element.android.libraries.network.useragent.UserAgentProvider
|
||||||
import io.element.android.libraries.sessionstorage.api.SessionStore
|
import io.element.android.libraries.sessionstorage.api.SessionStore
|
||||||
import kotlinx.coroutines.CancellationException
|
import kotlinx.coroutines.CancellationException
|
||||||
|
|
@ -82,7 +81,7 @@ class DefaultBugReporter @Inject constructor(
|
||||||
private val buildMeta: BuildMeta,
|
private val buildMeta: BuildMeta,
|
||||||
private val bugReporterUrlProvider: BugReporterUrlProvider,
|
private val bugReporterUrlProvider: BugReporterUrlProvider,
|
||||||
private val sdkMetadata: SdkMetadata,
|
private val sdkMetadata: SdkMetadata,
|
||||||
private val matrixClientsProvider: MatrixClientProvider,
|
private val matrixClientProvider: MatrixClientProvider,
|
||||||
) : BugReporter {
|
) : BugReporter {
|
||||||
companion object {
|
companion object {
|
||||||
// filenames
|
// filenames
|
||||||
|
|
@ -149,7 +148,7 @@ class DefaultBugReporter @Inject constructor(
|
||||||
|
|
||||||
val sessionData = sessionStore.getLatestSession()
|
val sessionData = sessionStore.getLatestSession()
|
||||||
val deviceId = sessionData?.deviceId ?: "undefined"
|
val deviceId = sessionData?.deviceId ?: "undefined"
|
||||||
val userId = sessionData?.userId ?: "undefined"
|
val userId = sessionData?.userId?.let { UserId(it) }
|
||||||
|
|
||||||
if (!isCancelled) {
|
if (!isCancelled) {
|
||||||
// build the multi part request
|
// build the multi part request
|
||||||
|
|
@ -157,14 +156,12 @@ class DefaultBugReporter @Inject constructor(
|
||||||
.addFormDataPart("text", bugDescription)
|
.addFormDataPart("text", bugDescription)
|
||||||
.addFormDataPart("app", context.getString(R.string.bug_report_app_name))
|
.addFormDataPart("app", context.getString(R.string.bug_report_app_name))
|
||||||
.addFormDataPart("user_agent", userAgentProvider.provide())
|
.addFormDataPart("user_agent", userAgentProvider.provide())
|
||||||
.addFormDataPart("user_id", userId)
|
.addFormDataPart("user_id", userId?.toString() ?: "undefined")
|
||||||
.addFormDataPart("can_contact", canContact.toString())
|
.addFormDataPart("can_contact", canContact.toString())
|
||||||
.addFormDataPart("device_id", deviceId)
|
.addFormDataPart("device_id", deviceId)
|
||||||
.apply {
|
.apply {
|
||||||
userId.takeIf { MatrixPatterns.isUserId(it) }?.let {
|
userId?.let {
|
||||||
SessionId(it)
|
matrixClientProvider.getOrNull(it)?.let { client ->
|
||||||
}?.let { sessionId ->
|
|
||||||
matrixClientsProvider.getOrNull(sessionId)?.let { client ->
|
|
||||||
val curveKey = client.encryptionService().deviceCurve25519()
|
val curveKey = client.encryptionService().deviceCurve25519()
|
||||||
val edKey = client.encryptionService().deviceEd25519()
|
val edKey = client.encryptionService().deviceEd25519()
|
||||||
if (curveKey != null && edKey != null) {
|
if (curveKey != null && edKey != null) {
|
||||||
|
|
|
||||||
|
|
@ -135,16 +135,27 @@ class DefaultBugReporterTest {
|
||||||
buildMeta = buildMeta,
|
buildMeta = buildMeta,
|
||||||
bugReporterUrlProvider = { server.url("/") },
|
bugReporterUrlProvider = { server.url("/") },
|
||||||
sdkMetadata = FakeSdkMetadata("123456789"),
|
sdkMetadata = FakeSdkMetadata("123456789"),
|
||||||
matrixClientsProvider = FakeMatrixClientProvider(getClient = { Result.success(matrixClient) })
|
matrixClientProvider = FakeMatrixClientProvider(getClient = { Result.success(matrixClient) })
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val progressValues = mutableListOf<Int>()
|
||||||
sut.sendBugReport(
|
sut.sendBugReport(
|
||||||
withDevicesLogs = true,
|
withDevicesLogs = true,
|
||||||
withCrashLogs = true,
|
withCrashLogs = true,
|
||||||
withScreenshot = true,
|
withScreenshot = true,
|
||||||
theBugDescription = "a bug occurred",
|
theBugDescription = "a bug occurred",
|
||||||
canContact = true,
|
canContact = true,
|
||||||
listener = null
|
listener = object : BugReporterListener {
|
||||||
|
override fun onUploadCancelled() {}
|
||||||
|
|
||||||
|
override fun onUploadFailed(reason: String?) {}
|
||||||
|
|
||||||
|
override fun onProgress(progress: Int) {
|
||||||
|
progressValues.add(progress)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onUploadSucceed() {}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
val request = server.takeRequest()
|
val request = server.takeRequest()
|
||||||
|
|
||||||
|
|
@ -155,12 +166,14 @@ class DefaultBugReporterTest {
|
||||||
// Just use simple parsing to detect basic properties
|
// Just use simple parsing to detect basic properties
|
||||||
val regex = "form-data; name=\"(\\w*)\".*".toRegex()
|
val regex = "form-data; name=\"(\\w*)\".*".toRegex()
|
||||||
multipartReader.use {
|
multipartReader.use {
|
||||||
while (true) {
|
var part = multipartReader.nextPart()
|
||||||
val part = multipartReader.nextPart() ?: break
|
while (part != null) {
|
||||||
val contentDisposition = part.headers["Content-Disposition"] ?: continue
|
part.headers["Content-Disposition"]?.let { contentDisposition ->
|
||||||
regex.find(contentDisposition)?.groupValues?.get(1)?.let { name ->
|
regex.find(contentDisposition)?.groupValues?.get(1)?.let { name ->
|
||||||
foundValues.put(name, part.body.readUtf8())
|
foundValues.put(name, part!!.body.readUtf8())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
part = multipartReader.nextPart()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -173,6 +186,9 @@ class DefaultBugReporterTest {
|
||||||
assertThat(foundValues["text"]).isEqualTo("a bug occurred")
|
assertThat(foundValues["text"]).isEqualTo("a bug occurred")
|
||||||
assertThat(foundValues["device_keys"]).isEqualTo("curve25519:CURVECURVECURVE, ed25519:EDKEYEDKEYEDKY")
|
assertThat(foundValues["device_keys"]).isEqualTo("curve25519:CURVECURVECURVE, ed25519:EDKEYEDKEYEDKY")
|
||||||
|
|
||||||
|
// device_key now added given they are not null
|
||||||
|
assertThat(progressValues.size).isEqualTo(EXPECTED_NUMBER_OF_PROGRESS_VALUE + 1)
|
||||||
|
|
||||||
server.shutdown()
|
server.shutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -242,7 +258,7 @@ class DefaultBugReporterTest {
|
||||||
buildMeta = buildMeta,
|
buildMeta = buildMeta,
|
||||||
bugReporterUrlProvider = { server.url("/") },
|
bugReporterUrlProvider = { server.url("/") },
|
||||||
sdkMetadata = FakeSdkMetadata("123456789"),
|
sdkMetadata = FakeSdkMetadata("123456789"),
|
||||||
matrixClientsProvider = FakeMatrixClientProvider()
|
matrixClientProvider = FakeMatrixClientProvider()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue