From f93f4debeefbd66ca43fca60bf5fc1113a900d2e Mon Sep 17 00:00:00 2001 From: Christoph Deppisch Date: Mon, 16 Dec 2024 11:19:32 +0100 Subject: [PATCH] chore: Add LogSink SSL test (#53) --- .../connector/ssl/LogSinkSSLTest.java | 80 ++++++++++++++++++ .../src/test/resources/keystore/server.crt | 20 +++++ .../src/test/resources/keystore/server.jks | Bin 0 -> 2654 bytes .../src/test/resources/keystore/server.key | 28 ++++++ .../test/resources/keystore/truststore.jks | Bin 0 -> 891 bytes 5 files changed, 128 insertions(+) create mode 100644 log-sink/src/test/java/dev/knative/eventing/connector/ssl/LogSinkSSLTest.java create mode 100644 log-sink/src/test/resources/keystore/server.crt create mode 100644 log-sink/src/test/resources/keystore/server.jks create mode 100644 log-sink/src/test/resources/keystore/server.key create mode 100644 log-sink/src/test/resources/keystore/truststore.jks diff --git a/log-sink/src/test/java/dev/knative/eventing/connector/ssl/LogSinkSSLTest.java b/log-sink/src/test/java/dev/knative/eventing/connector/ssl/LogSinkSSLTest.java new file mode 100644 index 0000000..ad1f6f4 --- /dev/null +++ b/log-sink/src/test/java/dev/knative/eventing/connector/ssl/LogSinkSSLTest.java @@ -0,0 +1,80 @@ +/* + * Copyright the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package dev.knative.eventing.connector.ssl; + +import java.util.HashMap; +import java.util.Map; + +import io.quarkus.test.junit.QuarkusTest; +import org.citrusframework.TestCaseRunner; +import org.citrusframework.annotations.CitrusResource; +import org.citrusframework.http.client.HttpClient; +import org.citrusframework.http.endpoint.builder.HttpEndpoints; +import org.citrusframework.http.security.HttpSecureConnection; +import org.citrusframework.quarkus.ApplicationPropertiesSupplier; +import org.citrusframework.quarkus.CitrusSupport; +import org.citrusframework.spi.BindToRegistry; +import org.junit.jupiter.api.Test; +import org.springframework.http.HttpStatus; + +import static org.citrusframework.http.actions.HttpActionBuilder.http; + +@QuarkusTest +@CitrusSupport(applicationPropertiesSupplier = LogSinkSSLTest.class) +public class LogSinkSSLTest implements ApplicationPropertiesSupplier { + + @CitrusResource + private TestCaseRunner tc; + + @BindToRegistry + public HttpClient knativeTrigger = HttpEndpoints.http() + .client() + .requestUrl("https://localhost:8444") + .secured(HttpSecureConnection.ssl() + .keyStore("classpath:keystore/server.jks", "changeit") + .trustStore("classpath:keystore/truststore.jks", "changeit")) + .build(); + + @Test + public void shouldConsumeEvents() { + tc.when( + http().client(knativeTrigger) + .send() + .post("/") + .message() + .body("Secure timer source event!") + .header("ce-id", "@matches([0-9A-Z]{15}-[0-9]{16})@") + .header("ce-type", "dev.knative.eventing.timer") + .header("ce-source", "dev.knative.eventing.timer-source") + .header("ce-subject", "secure-timer-source") + ); + + tc.then( + http().client(knativeTrigger) + .receive() + .response(HttpStatus.NO_CONTENT) + ); + } + + @Override + public Map get() { + Map conf = new HashMap<>(); + conf.put("quarkus.http.ssl.certificate.files", "keystore/server.crt"); + conf.put("quarkus.http.ssl.certificate.key-files", "keystore/server.key"); + return conf; + } +} diff --git a/log-sink/src/test/resources/keystore/server.crt b/log-sink/src/test/resources/keystore/server.crt new file mode 100644 index 0000000..23db559 --- /dev/null +++ b/log-sink/src/test/resources/keystore/server.crt @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDOTCCAiGgAwIBAgIUNxr4lmSJ5ffRc4U0LtcUcKikqY8wDQYJKoZIhvcNAQEL +BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM +GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNDEyMTMxNDA2MTFaFw0yNTEy +MTMxNDA2MTFaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw +HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCd6me4LD8b7v6hGgwrQ0LE6GvZeJVlBLePLWI5e82r +wz8BdP7IyduNP/AnYr01aD/kIK5DZfBNa1YZ3epQdhslRkNqRpuMzvZ+jlJqTXxj +PNthSSFL+i2FQlVAHRj7vfd5ttejBfbCdrFEcvwcSahf1mQUIdtYR43Res99I67Z +2Z26Yx2LEZP8vyX6TZhbCnxWnkHsVEa+Uz/va1TgibFJk8ca3Y0m+ADWDA/tOTy2 +qCikhf+KoykjGC0B+wU/fQSVaI1ZY23V3icxPMAqusNmxzQIBesvohz5LLr2pyN9 +t93CPj4Txhqj/GlG6uzHQxt95lF9+USLtkPZQ+uX2LeXAgMBAAGjITAfMB0GA1Ud +DgQWBBQCAwfofUKkgx7VerAGTb+LUFjozjANBgkqhkiG9w0BAQsFAAOCAQEAM4GI +KTxKto/ZAuBc16MOPlH1gjISi7f+Ur8DBW/Rr2yIjERd+uxzrg7lVGHPRY7MVnHE +jL/OCFdqnZ5NTW70gVOKmNn8+gkDS66xLS7iz7xMEtC2AFg7TT+OJYWI6JpV19M8 +eJUANMvI8MMbGzZM5p8yxwqLjnpgqoseJh45J1x6LJRQeUNlSLkip//CiLTdezn0 +H3C7X+AOldcFOo2RNXcGYOoZGIApjo4PTTqsbODm2UFJo8FmfjpdtR9dtSo/Z+N3 +QsAqX5ItNpiVNSQBYQ78QEOIf8z7PRZUfqqabF8NbFX+szvJhwsPwlrwm9XeD6ti +dx069Thegj/2s3G39A== +-----END CERTIFICATE----- diff --git a/log-sink/src/test/resources/keystore/server.jks b/log-sink/src/test/resources/keystore/server.jks new file mode 100644 index 0000000000000000000000000000000000000000..e512356338a5e6eb39bd6c297a6d5c78efd65216 GIT binary patch literal 2654 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 literal 0 HcmV?d00001 diff --git a/log-sink/src/test/resources/keystore/server.key b/log-sink/src/test/resources/keystore/server.key new file mode 100644 index 0000000..7f4eb62 --- /dev/null +++ b/log-sink/src/test/resources/keystore/server.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCd6me4LD8b7v6h +GgwrQ0LE6GvZeJVlBLePLWI5e82rwz8BdP7IyduNP/AnYr01aD/kIK5DZfBNa1YZ +3epQdhslRkNqRpuMzvZ+jlJqTXxjPNthSSFL+i2FQlVAHRj7vfd5ttejBfbCdrFE +cvwcSahf1mQUIdtYR43Res99I67Z2Z26Yx2LEZP8vyX6TZhbCnxWnkHsVEa+Uz/v +a1TgibFJk8ca3Y0m+ADWDA/tOTy2qCikhf+KoykjGC0B+wU/fQSVaI1ZY23V3icx +PMAqusNmxzQIBesvohz5LLr2pyN9t93CPj4Txhqj/GlG6uzHQxt95lF9+USLtkPZ +Q+uX2LeXAgMBAAECggEADq4mY0A1w7aFlFt0CyePEvgaYparqL72A4jwCzD/rzqQ +5mVGdEsTrn9lp3ut5EOjQOVq3dghrUjPscroB//ayS3NgZk7x6zLzHsVnU1DxYP4 +TwR55HLG/Y7rlvC9jFWeJoIBbOXWiUB4fUkFN+n/DZ3EIvz8w6mvPOyiUltZW2YS +meewcWpNxHgQpby57k9nyMZuKFFftWQwfSisE85QK2xpeWM052v4OadjRjUGIxAf +iC5BcgeW+Nt5ZIN84AhEOgYw/RZnfFm6QuLQD0DtW/QVEYKTVCbvyp/aPSF+gcvS +3fswWuFWf0hCsIkSIVuTanFtxtXLP+0fzFcawOjDkQKBgQDaOj6Nn6GIeYrIjcPb +doa7mZ1nlk0hikQT9PtUfdmMnTKoWpnN4XgNZ3lsq0syBkS5eFqhjskr2RIxFY/V +DB4iCcQ/O43scNleWIELVWDU9qIh4gRrGoIoV9UUIJu650iPlUKeG3MixVCPxW1k +s2sLQ67gHpQMkRIezfTRvfkQxwKBgQC5P7c25fcAffrw9ecuR28YvT8V7ezBoOR2 +8kIQoHB8VfbREQnP17BUV+C7mn48b4rYD1UWKVtCqh9v4Ac1g+TUin1fxhUDjvHO +70CSha8es6aNF4DYZYmtbTuhgBsuS5XUbykIfTNgDPG6a6Etd4ENQ6gF8Lb2e7/e +I4l2FPjysQKBgF55YKNHPFMs6xwv416bTXDh6/bwZqvig95v7G6DnS72zvt7XaJ3 +vdVvum2FKqSZeh8hL3tJqWXGL834G7CL8m+h8se9LI/zuubRQex6JdWMgFxS0L7d +VwPIIoL4KvMbNZqTb6erEok3Cs1zFwzFb84MmySDmGxoUYPsfdRffff5AoGADmSo +85cCjgM70CULBUl/lEh/8lA+KP07QxKnl2sf0klLmAre3EtB5Au/5lOmo0N3Yjou +vj4QXSmir6qUZNAOo4TvINXfJBujJhToy3mflZ8XvbapyCZ7gAIQtAekFQDCb3MD +mSlBKKFY1scuCr5SRJmRIIUHcjdDPRs9vvL6NMECgYBJdbC+BSqY8HSEIiwlZiPr +1siiq8jOESCu528kTh/NLWrz6CfnXDa8o+jtS8YvTLtzdupPtCQiTMnGFWvmnAQO +FHS89mDebS8EsEdCOydfAAyENTZIUSOqZNXVhs1hBbP3C7IB1ZS4C87zi4y83MtD +MkY1gMZWnzaf0Egv1e4fhg== +-----END PRIVATE KEY----- diff --git a/log-sink/src/test/resources/keystore/truststore.jks b/log-sink/src/test/resources/keystore/truststore.jks new file mode 100644 index 0000000000000000000000000000000000000000..9c9a4c66cf330356b67b9003e10dc87248dfc342 GIT binary patch literal 891 zcmezO_TO6u1_mY|W(3o$xs}mmg!maObI;AP{~YV&CO&dbQi&B|clYRGNC$;KSY!Y0h* z7-}eNAPC}c@Nfm^=ceigmn4>?8Y&vdg9N#FBs}v6C)$T+*j#4 zbnKP0BV@#HhMT|v+iJARHt<#cbxvNzh*nIbQ2SmI$ha8B&Q~(S_ zMh4@?4ow@cZT&Zy9>iQ<%x4$)waG}Rd;7nj{miWS7uV->^tihXtbOhKR9ib<%nH4J z*`{JDgURU=9}Y`PoB2GOZ*-iiyRRx?Rkxg)oTYk9mClraO6OFMol499AL`h0x7zZH ze8KMc2Ygenvs(2|G%aUKcqJ*(pxM{Q?`yRt=fSg^j-HDTrqx-+Zk3PSs%4-4xZLT0 zR{SJgvl&xORTvZb{x~>y)SvlnD;83>YF17>Z%*jH&DJN|x%m%8eVBdq9{=j3a#^dd j7I97X-!>O+|Drm) literal 0 HcmV?d00001