From 6d911d1c8c5a2dba5d1b13d5e410663b59321b50 Mon Sep 17 00:00:00 2001 From: mikeplotean Date: Mon, 5 Aug 2024 20:25:41 +0300 Subject: [PATCH] fix: e2e key tests for optional defaults --- .../config/registration-defaults.conf | 43 +++++++++++++++++++ .../src/test/kotlin/E2ETest.kt | 3 +- .../src/test/kotlin/E2ETestWebService.kt | 2 - .../src/test/kotlin/KeyAssertions.kt | 11 +++++ .../src/test/kotlin/KeysApi.kt | 9 ++-- 5 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 waltid-services/waltid-e2e-tests/config/registration-defaults.conf diff --git a/waltid-services/waltid-e2e-tests/config/registration-defaults.conf b/waltid-services/waltid-e2e-tests/config/registration-defaults.conf new file mode 100644 index 000000000..918fb3aa8 --- /dev/null +++ b/waltid-services/waltid-e2e-tests/config/registration-defaults.conf @@ -0,0 +1,43 @@ +// Setup what key should be generated on registration +defaultKeyConfig: { + backend: jwk + keyType: Ed25519 +} + +// Setup what DID should be generated based on above above defined key on registration +defaultDidConfig: { + method: jwk +} + +// -- Hashicorp Vault TSE key example -- +// defaultKeyConfig: { +// backend: tse +// config: { +// server: "http://127.0.0.1:8200/v1/transit" +// accessKey: "" +// } +// keyType: Ed25519 +// } + +// -- Oracle Cloud Infrastructure Vault KMS key example -- +// defaultKeyConfig: { +// backend: oci +// config: { +// tenancyOcid: "ocid1.tenancy.oc1..", +// userOcid: "ocid1.user.oc1..", +// fingerprint: "aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99", +// cryptoEndpoint: "-crypto.kms..oraclecloud.com", +// managementEndpoint: "-management.kms..oraclecloud.com", +// signingKeyPem: "" +// } +// keyType: secp256r1 +// } + +// -- did:web example -- +// defaultDidConfig: { +// method: web +// config: { +// domain: "https://wallet.walt.id" +// path: "/wallet-api/registry/[random-uuid]" // automatically generates random UUID for path +// } +// } diff --git a/waltid-services/waltid-e2e-tests/src/test/kotlin/E2ETest.kt b/waltid-services/waltid-e2e-tests/src/test/kotlin/E2ETest.kt index 69244d786..355bebf28 100644 --- a/waltid-services/waltid-e2e-tests/src/test/kotlin/E2ETest.kt +++ b/waltid-services/waltid-e2e-tests/src/test/kotlin/E2ETest.kt @@ -2,8 +2,6 @@ import E2ETestWebService.loadResource import E2ETestWebService.testBlock import id.walt.commons.config.ConfigManager import id.walt.commons.web.plugins.httpJson -import id.walt.oid4vc.OpenID4VCI -import id.walt.oid4vc.data.OpenIDProviderMetadata import id.walt.crypto.keys.KeyGenerationRequest import id.walt.crypto.keys.KeyType import id.walt.issuer.issuance.IssuanceRequest @@ -83,6 +81,7 @@ class E2ETest { assert(it.first().default) did = it.first().did } + //todo: test for optional registration defaults didsApi.create(wallet, DidsApi.DidCreateRequest(method = "key", options = mapOf("useJwkJcsPub" to false))) { createdDids.add(it) } diff --git a/waltid-services/waltid-e2e-tests/src/test/kotlin/E2ETestWebService.kt b/waltid-services/waltid-e2e-tests/src/test/kotlin/E2ETestWebService.kt index 179ec14c3..928f24a5f 100644 --- a/waltid-services/waltid-e2e-tests/src/test/kotlin/E2ETestWebService.kt +++ b/waltid-services/waltid-e2e-tests/src/test/kotlin/E2ETestWebService.kt @@ -132,8 +132,6 @@ object E2ETestWebService { URLDecoder.decode(object {}.javaClass.getResource(relativePath)!!.path, "UTF-8").let { File(it).readText() } } -typealias TestFunctionType = (String, suspend() -> Any?) -> Unit - private fun Application.e2eTestModule() { webWalletModule(true) issuerModule(false) diff --git a/waltid-services/waltid-e2e-tests/src/test/kotlin/KeyAssertions.kt b/waltid-services/waltid-e2e-tests/src/test/kotlin/KeyAssertions.kt index 8b2959dfc..52d42794b 100644 --- a/waltid-services/waltid-e2e-tests/src/test/kotlin/KeyAssertions.kt +++ b/waltid-services/waltid-e2e-tests/src/test/kotlin/KeyAssertions.kt @@ -1,4 +1,6 @@ +import id.walt.crypto.keys.KeyGenerationRequest import id.walt.crypto.keys.KeyType +import id.walt.webwallet.service.keys.SingleKeyResponse import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.jsonPrimitive import kotlin.test.assertNotNull @@ -52,4 +54,13 @@ fun assertRSAKeyComponents(document: JsonElement, isPrivate: Boolean) { assertNotNull(document.tryGetData("dp")?.jsonPrimitive?.content) { "Missing _dp_ component!" } assertNotNull(document.tryGetData("dq")?.jsonPrimitive?.content) { "Missing _dq_ component!" } } +} + +fun assertDefaultKey(listing: List, default: KeyGenerationRequest) { + assert(listing.isNotEmpty()) { "No default key was created!" } + assert(KeyType.valueOf(listing[0].algorithm) == default.keyType) { "Default key type not ${default.keyType}" } +} + +fun assertNoDefaultKey(listing: List) { + assert(listing.isEmpty()) { "Expected no default key!" } } \ No newline at end of file diff --git a/waltid-services/waltid-e2e-tests/src/test/kotlin/KeysApi.kt b/waltid-services/waltid-e2e-tests/src/test/kotlin/KeysApi.kt index 317afb953..c30f4d8a2 100644 --- a/waltid-services/waltid-e2e-tests/src/test/kotlin/KeysApi.kt +++ b/waltid-services/waltid-e2e-tests/src/test/kotlin/KeysApi.kt @@ -1,6 +1,5 @@ import E2ETestWebService.test import id.walt.crypto.keys.KeyGenerationRequest -import id.walt.crypto.keys.KeyType import id.walt.webwallet.service.keys.SingleKeyResponse import io.ktor.client.* import io.ktor.client.call.* @@ -13,12 +12,14 @@ import kotlin.test.assertNotNull class KeysApi(private val client: HttpClient) { - suspend fun list(wallet: UUID, expected: KeyGenerationRequest) = + suspend fun list(wallet: UUID, expected: KeyGenerationRequest?) = test("/wallet-api/wallet/{wallet}/keys - get keys") { client.get("/wallet-api/wallet/$wallet/keys").expectSuccess().apply { val listing = body>() - assert(listing.isNotEmpty()) { "No default key was created!" } - assert(KeyType.valueOf(listing[0].algorithm) == expected.keyType) { "Default key type not ${expected.keyType}" } + when (expected) { + null -> assertNoDefaultKey(listing) + else -> assertDefaultKey(listing, expected) + } } }