import com.google.common.eventbus.EventBus
import freenet.clients.http.ToadletContext
+import freenet.support.SimpleReadOnlyArrayBucket
import freenet.support.api.HTTPRequest
+import freenet.support.api.HTTPUploadedFile
import net.pterodactylus.sone.core.Preferences
import net.pterodactylus.sone.data.Album
import net.pterodactylus.sone.data.Image
import net.pterodactylus.util.web.Method.GET
import net.pterodactylus.util.web.Response
import org.junit.Assert.fail
-import org.junit.Before
import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyLong
private val requestHeaders = mutableMapOf<String, String>()
private val getRequestParameters = mutableMapOf<String, MutableList<String>>()
private val postRequestParameters = mutableMapOf<String, ByteArray>()
+ private val uploadedFileNames = mutableMapOf<String, String>()
+ private val uploadedFileContentTypes = mutableMapOf<String, String>()
+ private val uploadedFileResources = mutableMapOf<String, String>()
private val ownIdentities = mutableSetOf<OwnIdentity>()
private val allSones = mutableMapOf<String, Sone>()
private val localSones = mutableMapOf<String, Sone>()
whenever(httpRequest.getMultipleIntParam(anyString())).then { getRequestParameters[it[0]]?.map { it.toIntOrNull() ?: 0 } ?: emptyArray<Int>() }
whenever(httpRequest.isPartSet(anyString())).then { it[0] in postRequestParameters }
whenever(httpRequest.getPartAsStringFailsafe(anyString(), anyInt())).then { postRequestParameters[it[0]]?.decode()?.take(it[1]) ?: "" }
+ whenever(httpRequest.getUploadedFile(anyString())).then {
+ it.get<String>(0).takeIf { it in uploadedFileNames }
+ ?.let { name -> UploadedFile(uploadedFileNames[name]!!, uploadedFileContentTypes[name]!!, uploadedFileResources[name]!!)
+ }
+ }
+ }
+
+ private class UploadedFile(private val filename: String, private val contentType: String, private val resourceName: String): HTTPUploadedFile {
+ override fun getFilename() = filename
+ override fun getContentType() = contentType
+ override fun getData() = javaClass.getResourceAsStream(resourceName).readBytes().let(::SimpleReadOnlyArrayBucket)
}
private fun ByteArray.decode(charset: Charset = UTF_8) = String(this, charset)
whenever(core.getTemporaryImage(id)).thenReturn(temporaryImage)
}
+ fun addUploadedFile(name: String, filename: String, contentType: String, resource: String) {
+ uploadedFileNames[name] = filename
+ uploadedFileContentTypes[name] = contentType
+ uploadedFileResources[name] = resource
+ }
+
fun verifyNoRedirect(assertions: () -> Unit) {
var caughtException: Exception? = null
try {