From f7e9898637f2e2a261b6dd1e272595fd4d953fa5 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 15 Aug 2023 11:57:28 -0400 Subject: [PATCH] Testing image uploads with Account info --- .../amethyst/ImageUploadTesting.kt | 99 ++++++------------- .../vitorpamplona/amethyst/model/Account.kt | 4 +- .../amethyst/ui/actions/ImageUploader.kt | 4 +- 3 files changed, 35 insertions(+), 72 deletions(-) diff --git a/app/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt b/app/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt index bb25fe513..48ea82a2b 100644 --- a/app/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt +++ b/app/src/androidTest/java/com/vitorpamplona/amethyst/ImageUploadTesting.kt @@ -1,113 +1,78 @@ package com.vitorpamplona.amethyst import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.vitorpamplona.amethyst.model.Account +import com.vitorpamplona.amethyst.service.KeyPair +import com.vitorpamplona.amethyst.ui.actions.FileServer import com.vitorpamplona.amethyst.ui.actions.ImageUploader import com.vitorpamplona.amethyst.ui.actions.ImgurServer import com.vitorpamplona.amethyst.ui.actions.NostrBuildServer import com.vitorpamplona.amethyst.ui.actions.NostrFilesDevServer import com.vitorpamplona.amethyst.ui.actions.NostrImgServer -import junit.framework.TestCase.assertNotNull -import junit.framework.TestCase.fail -import kotlinx.coroutines.delay import kotlinx.coroutines.runBlocking +import org.junit.Assert import org.junit.Test import org.junit.runner.RunWith import java.util.Base64 +import java.util.concurrent.CountDownLatch @RunWith(AndroidJUnit4::class) class ImageUploadTesting { val image = "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" - @Test() - fun testImgurUpload() = runBlocking { + fun testBase(server: FileServer) { val bytes = Base64.getDecoder().decode(image) val inputStream = bytes.inputStream() + val countDownLatch = CountDownLatch(1) + var url: String? = null + var error: String? = null + + ImageUploader.account = Account( + KeyPair() + ) + ImageUploader.uploadImage( inputStream, bytes.size.toLong(), "image/gif", - ImgurServer(), - onSuccess = { url, contentType -> + server, + onSuccess = { newUrl, contentType -> println("Uploaded to $url") - assertNotNull(url) + url = newUrl + countDownLatch.countDown() }, onError = { println("Failed to Upload") - fail("${it.message}") + error = it.message + countDownLatch.countDown() } ) - delay(5000) + countDownLatch.await() + + Assert.assertNull(error) + Assert.assertTrue(url?.startsWith("http") == true) + } + + @Test() + fun testImgurUpload() = runBlocking { + testBase(ImgurServer()) } @Test() fun testNostrBuildUpload() = runBlocking { - val bytes = Base64.getDecoder().decode(image) - val inputStream = bytes.inputStream() - - ImageUploader.uploadImage( - inputStream, - bytes.size.toLong(), - "image/gif", - NostrBuildServer(), - onSuccess = { url, contentType -> - println("Uploaded to $url") - assertNotNull(url) - }, - onError = { - println("Failed to Upload") - fail("${it.message}") - } - ) - - delay(1000) + testBase(NostrBuildServer()) } @Test() fun testNostrImgUpload() = runBlocking { - val bytes = Base64.getDecoder().decode(image) - val inputStream = bytes.inputStream() - - ImageUploader.uploadImage( - inputStream, - bytes.size.toLong(), - "image/gif", - NostrImgServer(), - onSuccess = { url, contentType -> - println("Uploaded to $url") - assertNotNull(url) - }, - onError = { - println("Failed to Upload") - fail("${it.message}") - } - ) - - delay(1000) + testBase(NostrImgServer()) } @Test() fun testNostrFilesDevUpload() = runBlocking { - val bytes = Base64.getDecoder().decode(image) - val inputStream = bytes.inputStream() - - ImageUploader.uploadImage( - inputStream, - bytes.size.toLong(), - "image/gif", - NostrFilesDevServer(), - onSuccess = { url, contentType -> - println("Uploaded to $url") - assertNotNull(url) - }, - onError = { - println("Failed to Upload") - fail("${it.message}") - } - ) - - delay(5000) + testBase(NostrFilesDevServer()) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index d3b78418a..e79020c3d 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -74,8 +74,8 @@ class Account( var hideBlockAlertDialog: Boolean = false, var hideNIP24WarningDialog: Boolean = false, var backupContactList: ContactListEvent? = null, - var proxy: Proxy?, - var proxyPort: Int, + var proxy: Proxy? = null, + var proxyPort: Int = 9050, var showSensitiveContent: Boolean? = null, var warnAboutPostsWithReports: Boolean = true, var filterSpamFromStrangers: Boolean = true, diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt index 4ead42398..f5198a016 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt @@ -140,9 +140,7 @@ object ImageUploader { } fun NIP98Header(url: String, method: String, body: String): String { - val noteJson = if (this::account.isInitialized) { - account.createHTTPAuthorization(url, method, body)?.toJson() ?: "" - } else { "" } + val noteJson = account.createHTTPAuthorization(url, method, body)?.toJson() ?: "" val encodedNIP98Event: String = Base64.getEncoder().encodeToString(noteJson.toByteArray()) return "Nostr " + encodedNIP98Event