From 9ec10a667412d82d8142dfa7c1cee20639016b37 Mon Sep 17 00:00:00 2001 From: Eyre_S Date: Wed, 11 Oct 2023 16:56:54 +0800 Subject: [PATCH] complete some encrypt test and InputCommand test --- gradle.properties | 2 +- .../morny/test/utils/CommonEncryptTest.scala | 78 ++++++++++++++++--- .../test/utils/tgapi/InputCommandTest.scala | 67 ++++++++++++++-- 3 files changed, 128 insertions(+), 19 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5394b14..dbf4ffa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ MORNY_ARCHIVE_NAME = morny-coeur MORNY_CODE_STORE = https://github.com/Eyre-S/Coeur-Morny-Cono MORNY_COMMIT_PATH = https://github.com/Eyre-S/Coeur-Morny-Cono/commit/%s -VERSION = 1.1.1-alpha4 +VERSION = 1.1.1-alpha5 USE_DELTA = false VERSION_DELTA = diff --git a/src/test/scala/cc/sukazyo/cono/morny/test/utils/CommonEncryptTest.scala b/src/test/scala/cc/sukazyo/cono/morny/test/utils/CommonEncryptTest.scala index 8557661..9bd4a9d 100644 --- a/src/test/scala/cc/sukazyo/cono/morny/test/utils/CommonEncryptTest.scala +++ b/src/test/scala/cc/sukazyo/cono/morny/test/utils/CommonEncryptTest.scala @@ -7,26 +7,84 @@ class CommonEncryptTest extends MornyTests with TableDrivenPropertyChecks { "while doing hash :" - { + import cc.sukazyo.cono.morny.util.CommonEncrypt.{MD5, SHA1, SHA256, SHA512} + import cc.sukazyo.cono.morny.util.ConvertByteHex.toHex + val examples = Table( - ("md5" , "text"), - ("28be57d368b75051da76c068a6733284", "莲子"), - ("9644c5cbae223013228cd528817ba4f5", "莲子\n"), - ("d41d8cd98f00b204e9800998ecf8427e", "") + ( + "text", + "md5", + "sha1", + "sha256", + "sha512" + ), + ( + "莲子", + "28be57d368b75051da76c068a6733284", + "556f7cadfcbffdcbf41b4aa1843528b4406e62e6", + "f7d6f172cb4a8d1a8f7513ee94c7b6bbf1cf5c8c643182ebbb1b9ab472704e9b", + "4be6cf5dc44582d913d4d716ef4528f04e08d94a45eee0f27395003d3c83be535d5b9a40f510625bc6fee3481f6a1de600057ceff6488c5953f6172641f4768d" + ), + ( + "莲子\n", + "9644c5cbae223013228cd528817ba4f5", + "86329fc40e4bab2c410e35ddbec7ab8a7b6574d6", + "3372ca6821832bebd681c705862c01d137cba9cf288f95465ee7876affc90ba0", + "bedf1c61330c0f945fa4f84aaccf2778b5c77926916689e8b8e4c3d1d567dc8b9d91643ff3451365e4fd04f789ca229e0b2ca61dd4976ad6f866f5600617430c" + ), + ( + "", + "d41d8cd98f00b204e9800998ecf8427e", + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e" + ) ) - import cc.sukazyo.cono.morny.util.CommonEncrypt.MD5 - import cc.sukazyo.cono.morny.util.ConvertByteHex.toHex - forAll (examples) { (md5, text) => + forAll (examples) { (text, md5, sha1, sha256, sha512) => s"while hashing text \"$text\" :" - { s"the MD5 value should be $md5" in { MD5(text).toHex shouldEqual md5 } - - "other algorithms" in pending + s"the SHA1 should be $sha1" in { SHA1(text).toHex shouldEqual sha1 } + s"the SHA256 should be $sha256" in { SHA256(text).toHex shouldEqual sha256 } + s"the SHA512 should be $sha512" in { SHA512(text).toHex shouldEqual sha512 } } } - s"while hashing binary file $pending_val" in pending + // todo: binary file source + case class ExampleHashValue ( + md5: String, + sha1: String, + sha256: String, + sha512: String + ) + val examples_binary = Table[String|Null, ExampleHashValue]( + ("file", "hashes"), + ( + null, ExampleHashValue( + "d41d8cd98f00b204e9800998ecf8427e", + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e" + ) + ) + ) + + forAll(examples_binary) { (file, hashes) => + val _name = if file == null then "empty file" else s"file $file" + val _data = if file == null then Array.empty[Byte] else throw NotImplementedError("does not applied file get yet") + + s"while hashing binary $_name :" - { + + s"the MD5 value should be ${hashes.md5}" in { MD5(_data).toHex shouldEqual hashes.md5 } + s"the SHA1 should be $hashes.sha1" in { SHA1(_data).toHex shouldEqual hashes.sha1 } + s"the SHA256 should be $hashes.sha256" in { SHA256(_data).toHex shouldEqual hashes.sha256 } + s"the SHA512 should be $hashes.sha512" in { SHA512(_data).toHex shouldEqual hashes.sha512 } + + } + + } } diff --git a/src/test/scala/cc/sukazyo/cono/morny/test/utils/tgapi/InputCommandTest.scala b/src/test/scala/cc/sukazyo/cono/morny/test/utils/tgapi/InputCommandTest.scala index 3baa038..0b9149d 100644 --- a/src/test/scala/cc/sukazyo/cono/morny/test/utils/tgapi/InputCommandTest.scala +++ b/src/test/scala/cc/sukazyo/cono/morny/test/utils/tgapi/InputCommandTest.scala @@ -1,19 +1,70 @@ package cc.sukazyo.cono.morny.test.utils.tgapi import cc.sukazyo.cono.morny.test.MornyTests +import cc.sukazyo.cono.morny.util.tgapi.InputCommand +import org.scalatest.prop.TableDrivenPropertyChecks -class InputCommandTest extends MornyTests { +class InputCommandTest extends MornyTests with TableDrivenPropertyChecks { "while create new InputCommand :" - { - s"while input is $pending_val:" - { + val examples = Table[String|Array[String], String, String|Null, Array[String]]( + ( + "source", + "command", + "target", + "args" + ), + ( + "/exit@sukazyo_deving_bot", + "/exit", + "sukazyo_deving_bot", + Array.empty[String] + ), + ( + "/test@a@b", + "/test", + "a@b", + Array.empty[String] + ), + ( + "/test-data@random#user", + "/test-data", + "random#user", + Array.empty[String] + ), + ( + "/info@sukazyo_deving_bot stickers.ID_403", + "/info", + "sukazyo_deving_bot", + Array("stickers.ID_403") + ), + ( + "/info some extra info", + "/info", + null, + Array("some", "extra", "info") + ), + ) + + examples forEvery { (source, command, target, args) => - s"command should be $pending_val" in pending - s"target should be $pending_val" in pending - - "args array should always exists" in pending - - s"args should parsed to array $pending_val" in pending + val _source_describe = source match + case s: String => s + case r: Array[String] => r.mkString + s"while input is $_source_describe:" - { + + val _ic: InputCommand = source match + case s: String => InputCommand(s) + case r: Array[String] => InputCommand(r) + + s"command should be '$command'" in { _ic.command shouldEqual command } + s"target should be '$target'" in {_ic.target shouldEqual target} + + "args array should always exists" in { _ic.args shouldNot equal (null) } + s"args should parsed to array ${args.mkString}" in { _ic.args shouldEqual args } + + } }