chore: Improve tests
This commit is contained in:
		
					parent
					
						
							
								6e1d5dcb0d
							
						
					
				
			
			
				commit
				
					
						b2710bb18c
					
				
			
		
					 12 changed files with 88 additions and 37 deletions
				
			
		
							
								
								
									
										1
									
								
								.idea/.name
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.idea/.name
									
										
									
										generated
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| auth | ||||
|  | @ -50,8 +50,10 @@ kotlin { | |||
|     } | ||||
| } | ||||
| 
 | ||||
| // note the documentation said "temporarily" so idk https://kotest.io/docs/framework/project-setup.html#re-running-tests | ||||
| tasks.withType<Test>().configureEach { | ||||
|     logger.lifecycle("UP-TO-DATE check for $name is disabled, forcing it to run.") | ||||
|     outputs.upToDateWhen { false } | ||||
| } | ||||
| tasks.register<Copy>("copyNativeTestResources") { | ||||
|     from("src/nativeTest/resources") | ||||
|     into("build/bin/native/debugTest/resources") | ||||
| } | ||||
| 
 | ||||
| tasks.findByName("nativeTest")!! | ||||
|     .dependsOn("copyNativeTestResources") | ||||
|  | @ -0,0 +1,4 @@ | |||
| package dn42.m724.auth.registry | ||||
| 
 | ||||
| class RegistryLoader { | ||||
| } | ||||
							
								
								
									
										30
									
								
								src/nativeTest/kotlin/dn42/m724/auth/TestUtils.kt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/nativeTest/kotlin/dn42/m724/auth/TestUtils.kt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,30 @@ | |||
| package dn42.m724.auth | ||||
| 
 | ||||
| import io.kotest.core.spec.style.ShouldSpec | ||||
| import io.kotest.matchers.shouldBe | ||||
| import nl.adaptivity.xmlutil.core.impl.multiplatform.FileInputStream | ||||
| import nl.adaptivity.xmlutil.core.impl.multiplatform.use | ||||
| 
 | ||||
| private const val RESOURCES_PATH_PREFIX = "build/bin/native/debugTest/resources/" // ...awe TODO don't | ||||
| 
 | ||||
| fun getResource(path: String): String { | ||||
|     return FileInputStream(RESOURCES_PATH_PREFIX + path).use { inputStream -> | ||||
|         val buffer = ByteArray(1024) | ||||
|         val result = StringBuilder() | ||||
| 
 | ||||
|         var charsRead: Int | ||||
|         while (inputStream.read(buffer).also { charsRead = it } != -1) { | ||||
|             result.append(buffer.decodeToString(0, charsRead)) | ||||
|         } | ||||
| 
 | ||||
|         result.toString() | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| class TestUtilsTest: ShouldSpec({ | ||||
|     context("getResource") { | ||||
|         should("return the content of test/test_resource.txt") { | ||||
|             getResource("test/test_resource.txt") shouldBe "This is a test resource" | ||||
|         } | ||||
|     } | ||||
| }) | ||||
|  | @ -1,43 +1,20 @@ | |||
| package dn42.m724.auth.checker.pgp | ||||
| 
 | ||||
| import dn42.m724.auth.checker.SignatureChecker | ||||
| import dn42.m724.auth.getResource | ||||
| import io.kotest.assertions.throwables.shouldNotThrowAny | ||||
| import io.kotest.assertions.throwables.shouldThrow | ||||
| import io.kotest.core.spec.style.FunSpec | ||||
| import io.kotest.datatest.withData | ||||
| 
 | ||||
| private const val fingerprint = "2DE81640E41DD84A9ED9B8F8FD4D7C6652E72E7B" | ||||
| private const val invalidFingerprint = "139F1460BC66A19A2F880D8D47BA020D8EBCC05E" | ||||
| 
 | ||||
| private val clearTextSignature = """ | ||||
|     -----BEGIN PGP SIGNED MESSAGE----- | ||||
|     Hash: SHA512 | ||||
| 
 | ||||
|     simple message | ||||
|     -----BEGIN PGP SIGNATURE----- | ||||
| 
 | ||||
|     iJEEARYKADkWIQQt6BZA5B3YSp7ZuPj9TXxmUucuewUCaP4wchsUgAAAAAAEAA5t | ||||
|     YW51MiwyLjUrMS4xMSwyLDIACgkQ/U18ZlLnLnuM3AD+L0QBrn2pnGAemcJZDh+p | ||||
|     6oJnuTgeSMiMRkkbMgTOMFMBAPzhLKgyzx4YJcgrIinvZsgPowR9Pf0ryzxwQ5mo | ||||
|     qUwJ | ||||
|     =FYVj | ||||
|     -----END PGP SIGNATURE----- | ||||
|     """.trimIndent() | ||||
| 
 | ||||
| val detachedSignature = """ | ||||
|     -----BEGIN PGP SIGNATURE----- | ||||
| 
 | ||||
|     iJEEABYKADkWIQQt6BZA5B3YSp7ZuPj9TXxmUucuewUCaP4wWxsUgAAAAAAEAA5t | ||||
|     YW51MiwyLjUrMS4xMSwyLDIACgkQ/U18ZlLnLnsaEgEA15uncZNWN6zV952vO6rG | ||||
|     mMIAG9X54X9Cfp5DEfG3hPcBAJypNGnlyHivk+ZKYDlKSZB2S53vKrA3q3J2yDqb | ||||
|     0SUF | ||||
|     =12FC | ||||
|     -----END PGP SIGNATURE----- | ||||
| """.trimIndent() | ||||
| 
 | ||||
| class PgpSignatureVerificationTest: FunSpec({ | ||||
|     val checker: SignatureChecker  = PgpSignatureChecker() // stateless (for now?) | ||||
| 
 | ||||
|     val fingerprint = getResource("pgp/fingerprint.txt") | ||||
|     val invalidFingerprint = getResource("pgp/fingerprint_invalid.txt") | ||||
|     val clearTextSignature = getResource("pgp/clear_text_signature.txt") | ||||
|     val detachedSignature = getResource("pgp/detached_signature.txt") | ||||
| 
 | ||||
|     val successfulCases = listOf( | ||||
|         TestCase( | ||||
|             description = "valid clear-text signature", | ||||
|  |  | |||
|  | @ -1,16 +1,19 @@ | |||
| package dn42.m724.auth.model | ||||
| 
 | ||||
| import dn42.m724.auth.getResource | ||||
| import io.kotest.assertions.throwables.shouldThrow | ||||
| import io.kotest.core.spec.style.FunSpec | ||||
| import io.kotest.datatest.withData | ||||
| import kotlin.test.assertEquals | ||||
| 
 | ||||
| class AuthenticationMethodTest: FunSpec({ | ||||
|     val fingerprint = getResource("pgp/fingerprint.txt") | ||||
| 
 | ||||
|     withData( | ||||
|         nameFn = { authenticationMethodString -> "fromString should throw for invalid input: $authenticationMethodString" }, | ||||
|         "pgp-fingerprint 2DE81640E41D", | ||||
|         "pgp 2DE81640E41DD84A9ED9B8F8FD4D7C6652E72E7B", | ||||
|         "pgp-fingerprint 2DE81640E41DD84A9ED9B8F8FD4xveTes7C6652E72E7B", | ||||
|         "pgp-fingerprint 2DE81640E41DD84A9ED9B8F8FD4xD7C6652E72E7B", | ||||
|         "pgp-fingerprint" | ||||
|     ) { authenticationMethodString -> | ||||
|         shouldThrow<Exception> { | ||||
|  | @ -20,8 +23,8 @@ class AuthenticationMethodTest: FunSpec({ | |||
| 
 | ||||
|     withData( | ||||
|         nameFn = { (authenticationMethodString, expected) -> "fromString should return $expected for input: $authenticationMethodString" }, | ||||
|         Pair("pgp-fingerprint 2DE81640E41DD84A9ED9B8F8FD4D7C6652E72E7B", AuthenticationMethod.Pgp("2DE81640E41DD84A9ED9B8F8FD4D7C6652E72E7B")), | ||||
|         Pair("pgp-fingerprint 2DE81640E41DD84A9ED9B8F8FD4D7C6652E72E7B this is ignored", AuthenticationMethod.Pgp("2DE81640E41DD84A9ED9B8F8FD4D7C6652E72E7B")) | ||||
|         Pair("pgp-fingerprint $fingerprint", AuthenticationMethod.Pgp(fingerprint)), | ||||
|         Pair("pgp-fingerprint $fingerprint this is ignored", AuthenticationMethod.Pgp(fingerprint)) | ||||
|     ) { (authenticationMethodString, expected) -> | ||||
|         assertEquals( | ||||
|             expected = expected, | ||||
|  |  | |||
|  | @ -0,0 +1,11 @@ | |||
| package dn42.m724.auth.registry | ||||
| 
 | ||||
| import dn42.m724.auth.getResource | ||||
| import io.kotest.core.spec.style.FunSpec | ||||
| import io.kotest.matchers.shouldBe | ||||
| 
 | ||||
| class RegistryLoaderTest: FunSpec({ | ||||
|     test("Test Test utils") { | ||||
|         getResource("test/test_resource.txt") shouldBe "This is a test resource" | ||||
|     } | ||||
| }) | ||||
							
								
								
									
										12
									
								
								src/nativeTest/resources/pgp/clear_text_signature.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/nativeTest/resources/pgp/clear_text_signature.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | |||
| -----BEGIN PGP SIGNED MESSAGE----- | ||||
| Hash: SHA512 | ||||
| 
 | ||||
| simple message | ||||
| -----BEGIN PGP SIGNATURE----- | ||||
| 
 | ||||
| iJEEARYKADkWIQQt6BZA5B3YSp7ZuPj9TXxmUucuewUCaP4wchsUgAAAAAAEAA5t | ||||
| YW51MiwyLjUrMS4xMSwyLDIACgkQ/U18ZlLnLnuM3AD+L0QBrn2pnGAemcJZDh+p | ||||
| 6oJnuTgeSMiMRkkbMgTOMFMBAPzhLKgyzx4YJcgrIinvZsgPowR9Pf0ryzxwQ5mo | ||||
| qUwJ | ||||
| =FYVj | ||||
| -----END PGP SIGNATURE----- | ||||
							
								
								
									
										8
									
								
								src/nativeTest/resources/pgp/detached_signature.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/nativeTest/resources/pgp/detached_signature.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| -----BEGIN PGP SIGNATURE----- | ||||
| 
 | ||||
| iJEEABYKADkWIQQt6BZA5B3YSp7ZuPj9TXxmUucuewUCaP4wWxsUgAAAAAAEAA5t | ||||
| YW51MiwyLjUrMS4xMSwyLDIACgkQ/U18ZlLnLnsaEgEA15uncZNWN6zV952vO6rG | ||||
| mMIAG9X54X9Cfp5DEfG3hPcBAJypNGnlyHivk+ZKYDlKSZB2S53vKrA3q3J2yDqb | ||||
| 0SUF | ||||
| =12FC | ||||
| -----END PGP SIGNATURE----- | ||||
							
								
								
									
										1
									
								
								src/nativeTest/resources/pgp/fingerprint.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/nativeTest/resources/pgp/fingerprint.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 2DE81640E41DD84A9ED9B8F8FD4D7C6652E72E7B | ||||
							
								
								
									
										1
									
								
								src/nativeTest/resources/pgp/fingerprint_invalid.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/nativeTest/resources/pgp/fingerprint_invalid.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| 139F1460BC66A19A2F880D8D47BA020D8EBCC05E | ||||
							
								
								
									
										1
									
								
								src/nativeTest/resources/test/test_resource.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/nativeTest/resources/test/test_resource.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| This is a test resource | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Minecon724
				Minecon724