mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-04 13:40:37 +08:00
add implement of md5 and sha1 for MockAbsoluteFile (#2436)
* add impl of md5 and sha1 * add tests * modify as required
This commit is contained in:
parent
cc7f35519e
commit
0a7ebb7b4a
@ -47,16 +47,29 @@ private fun MockServerRemoteFile.toMockAbsFile(
|
||||
sha1: ByteArray = byteArrayOf()
|
||||
): AbsoluteFile {
|
||||
val parent = this.parent.toMockAbsFolder(files)
|
||||
// todo md5 and sha
|
||||
return MockAbsoluteFile(
|
||||
sha1,
|
||||
md5,
|
||||
files,
|
||||
parent,
|
||||
this.id,
|
||||
this.name,
|
||||
parent.absolutePath.removeSuffix("/") + "/" + this.name
|
||||
)
|
||||
return if (md5.isEmpty() || sha1.isEmpty()) {
|
||||
asExternalResource().use { res ->
|
||||
MockAbsoluteFile(
|
||||
if (sha1.isEmpty()) res.sha1 else sha1,
|
||||
if (md5.isEmpty()) res.md5 else md5,
|
||||
files,
|
||||
parent,
|
||||
this.id,
|
||||
this.name,
|
||||
parent.absolutePath.removeSuffix("/") + "/" + this.name
|
||||
)
|
||||
}
|
||||
} else {
|
||||
MockAbsoluteFile(
|
||||
sha1,
|
||||
md5,
|
||||
files,
|
||||
parent,
|
||||
this.id,
|
||||
this.name,
|
||||
parent.absolutePath.removeSuffix("/") + "/" + this.name
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
internal open class MockAbsoluteFolder(
|
||||
|
@ -22,9 +22,11 @@ import net.mamoe.mirai.mock.internal.serverfs.MockServerFileSystemImpl
|
||||
import net.mamoe.mirai.mock.utils.simpleMemberInfo
|
||||
import net.mamoe.mirai.utils.ExternalResource.Companion.toExternalResource
|
||||
import net.mamoe.mirai.utils.cast
|
||||
import net.mamoe.mirai.utils.md5
|
||||
import org.junit.jupiter.api.AfterEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import java.nio.file.FileSystem
|
||||
import kotlin.test.assertContentEquals
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNotEquals
|
||||
|
||||
@ -97,4 +99,34 @@ internal class AbsoluteFileTest : MockBotTestBase() {
|
||||
assertEquals(true, file.exists())
|
||||
assertNotEquals(null, folder.resolveFiles("test.txt").firstOrNull())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMD5() = runTest {
|
||||
val bytes = "test".toByteArray()
|
||||
val file = bytes.toExternalResource().use { res ->
|
||||
files.root.uploadNewFile("/test.txt", res)
|
||||
}
|
||||
assertContentEquals(bytes.md5(), file.md5)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMD5WithResolve() = runTest {
|
||||
val bytes = "test".toByteArray()
|
||||
bytes.toExternalResource().use { res ->
|
||||
files.root.uploadNewFile("/test.txt", res)
|
||||
}
|
||||
val file = files.root.resolveFiles("/test.txt").toList()
|
||||
assertEquals(1, file.size)
|
||||
assertContentEquals(bytes.md5(), file[0].md5)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMD5WithIDResolve() = runTest {
|
||||
val bytes = "test".toByteArray()
|
||||
val absFile = bytes.toExternalResource().use { res ->
|
||||
files.root.uploadNewFile("/test.txt", res)
|
||||
}
|
||||
val file = files.root.resolveFileById(absFile.id, true)!!
|
||||
assertContentEquals(bytes.md5(), file.md5)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user