Testing image uploads with Account info
This commit is contained in:
@@ -1,113 +1,78 @@
|
|||||||
package com.vitorpamplona.amethyst
|
package com.vitorpamplona.amethyst
|
||||||
|
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
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.ImageUploader
|
||||||
import com.vitorpamplona.amethyst.ui.actions.ImgurServer
|
import com.vitorpamplona.amethyst.ui.actions.ImgurServer
|
||||||
import com.vitorpamplona.amethyst.ui.actions.NostrBuildServer
|
import com.vitorpamplona.amethyst.ui.actions.NostrBuildServer
|
||||||
import com.vitorpamplona.amethyst.ui.actions.NostrFilesDevServer
|
import com.vitorpamplona.amethyst.ui.actions.NostrFilesDevServer
|
||||||
import com.vitorpamplona.amethyst.ui.actions.NostrImgServer
|
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 kotlinx.coroutines.runBlocking
|
||||||
|
import org.junit.Assert
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import java.util.Base64
|
import java.util.Base64
|
||||||
|
import java.util.concurrent.CountDownLatch
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
class ImageUploadTesting {
|
class ImageUploadTesting {
|
||||||
|
|
||||||
val image = "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"
|
val image = "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"
|
||||||
|
|
||||||
@Test()
|
fun testBase(server: FileServer) {
|
||||||
fun testImgurUpload() = runBlocking {
|
|
||||||
val bytes = Base64.getDecoder().decode(image)
|
val bytes = Base64.getDecoder().decode(image)
|
||||||
val inputStream = bytes.inputStream()
|
val inputStream = bytes.inputStream()
|
||||||
|
|
||||||
|
val countDownLatch = CountDownLatch(1)
|
||||||
|
var url: String? = null
|
||||||
|
var error: String? = null
|
||||||
|
|
||||||
|
ImageUploader.account = Account(
|
||||||
|
KeyPair()
|
||||||
|
)
|
||||||
|
|
||||||
ImageUploader.uploadImage(
|
ImageUploader.uploadImage(
|
||||||
inputStream,
|
inputStream,
|
||||||
bytes.size.toLong(),
|
bytes.size.toLong(),
|
||||||
"image/gif",
|
"image/gif",
|
||||||
ImgurServer(),
|
server,
|
||||||
onSuccess = { url, contentType ->
|
onSuccess = { newUrl, contentType ->
|
||||||
println("Uploaded to $url")
|
println("Uploaded to $url")
|
||||||
assertNotNull(url)
|
url = newUrl
|
||||||
|
countDownLatch.countDown()
|
||||||
},
|
},
|
||||||
onError = {
|
onError = {
|
||||||
println("Failed to Upload")
|
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()
|
@Test()
|
||||||
fun testNostrBuildUpload() = runBlocking {
|
fun testNostrBuildUpload() = runBlocking {
|
||||||
val bytes = Base64.getDecoder().decode(image)
|
testBase(NostrBuildServer())
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test()
|
@Test()
|
||||||
fun testNostrImgUpload() = runBlocking {
|
fun testNostrImgUpload() = runBlocking {
|
||||||
val bytes = Base64.getDecoder().decode(image)
|
testBase(NostrImgServer())
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test()
|
@Test()
|
||||||
fun testNostrFilesDevUpload() = runBlocking {
|
fun testNostrFilesDevUpload() = runBlocking {
|
||||||
val bytes = Base64.getDecoder().decode(image)
|
testBase(NostrFilesDevServer())
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ class Account(
|
|||||||
var hideBlockAlertDialog: Boolean = false,
|
var hideBlockAlertDialog: Boolean = false,
|
||||||
var hideNIP24WarningDialog: Boolean = false,
|
var hideNIP24WarningDialog: Boolean = false,
|
||||||
var backupContactList: ContactListEvent? = null,
|
var backupContactList: ContactListEvent? = null,
|
||||||
var proxy: Proxy?,
|
var proxy: Proxy? = null,
|
||||||
var proxyPort: Int,
|
var proxyPort: Int = 9050,
|
||||||
var showSensitiveContent: Boolean? = null,
|
var showSensitiveContent: Boolean? = null,
|
||||||
var warnAboutPostsWithReports: Boolean = true,
|
var warnAboutPostsWithReports: Boolean = true,
|
||||||
var filterSpamFromStrangers: Boolean = true,
|
var filterSpamFromStrangers: Boolean = true,
|
||||||
|
|||||||
@@ -140,9 +140,7 @@ object ImageUploader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun NIP98Header(url: String, method: String, body: String): String {
|
fun NIP98Header(url: String, method: String, body: String): String {
|
||||||
val noteJson = if (this::account.isInitialized) {
|
val noteJson = account.createHTTPAuthorization(url, method, body)?.toJson() ?: ""
|
||||||
account.createHTTPAuthorization(url, method, body)?.toJson() ?: ""
|
|
||||||
} else { "" }
|
|
||||||
|
|
||||||
val encodedNIP98Event: String = Base64.getEncoder().encodeToString(noteJson.toByteArray())
|
val encodedNIP98Event: String = Base64.getEncoder().encodeToString(noteJson.toByteArray())
|
||||||
return "Nostr " + encodedNIP98Event
|
return "Nostr " + encodedNIP98Event
|
||||||
|
|||||||
Reference in New Issue
Block a user