2
0

ImageUploadTest.kt 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * Copyright 2019-2022 Mamoe Technologies and contributors.
  3. *
  4. * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
  5. * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
  6. *
  7. * https://github.com/mamoe/mirai/blob/dev/LICENSE
  8. */
  9. package net.mamoe.mirai.mock.test
  10. import kotlinx.coroutines.runBlocking
  11. import net.mamoe.mirai.message.data.Image
  12. import net.mamoe.mirai.message.data.Image.Key.isUploaded
  13. import net.mamoe.mirai.message.data.Image.Key.queryUrl
  14. import net.mamoe.mirai.mock.MockBotFactory
  15. import net.mamoe.mirai.mock.utils.randomImageContent
  16. import net.mamoe.mirai.utils.ExternalResource.Companion.toExternalResource
  17. import net.mamoe.mirai.utils.getRandomByteArray
  18. import org.junit.jupiter.api.AfterEach
  19. import org.junit.jupiter.api.Test
  20. import org.junit.jupiter.api.TestInstance
  21. import java.net.URL
  22. import kotlin.test.assertEquals
  23. import kotlin.test.assertFalse
  24. import kotlin.test.assertNotEquals
  25. import kotlin.test.assertTrue
  26. @TestInstance(TestInstance.Lifecycle.PER_METHOD)
  27. internal class ImageUploadTest {
  28. internal val bot = MockBotFactory.newMockBotBuilder()
  29. .id(1234567890)
  30. .nick("Sakura")
  31. .create()
  32. @AfterEach
  33. internal fun botDestroy() {
  34. bot.close()
  35. }
  36. @Test
  37. fun testImageUpload() = runBlocking<Unit> {
  38. val data = Image.randomImageContent()
  39. val img = bot.asFriend.uploadImage(
  40. data.toExternalResource().toAutoCloseable()
  41. )
  42. println(img.imageId)
  43. assertTrue {
  44. data.contentEquals(URL(img.queryUrl()).readBytes())
  45. }
  46. assertNotEquals(0, img.size)
  47. }
  48. @Test
  49. fun testSameImageMultiUpload() = runBlocking<Unit> {
  50. Image.randomImageContent().toExternalResource().use { imgData ->
  51. val img1 = bot.asFriend.uploadImage(imgData)
  52. val img2 = bot.asFriend.uploadImage(imgData)
  53. assertEquals(img1, img2)
  54. }
  55. }
  56. @Test
  57. fun testImageIsUploaded(): Unit = runBlocking {
  58. val img = Image.randomImageContent().toExternalResource().use { imgData ->
  59. bot.asFriend.uploadImage(imgData)
  60. }
  61. assertTrue { img.isUploaded(bot) }
  62. }
  63. @Test
  64. @Suppress("RemoveRedundantQualifierName")
  65. fun testImageIsUploadedNotTrue(): Unit = runBlocking {
  66. assertFalse { Image.isUploaded(bot, getRandomByteArray(16), 10) }
  67. val img = Image.randomImageContent().toExternalResource().use { imgData ->
  68. bot.asFriend.uploadImage(imgData)
  69. }
  70. assertFalse { Image.isUploaded(bot, img.md5, img.size + 5) }
  71. }
  72. }