Skip to content
Snippets Groups Projects
Commit 6337f3ce authored by OZGCloud's avatar OZGCloud
Browse files

Merge remote-tracking branch 'origin/master' into OZG-5899-SchnittstelleEinzelnerBescheid

parents a142a24a 7b0ab0c5
No related branches found
No related tags found
No related merge requests found
Showing
with 988 additions and 17 deletions
...@@ -70,7 +70,7 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }} ...@@ -70,7 +70,7 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }}
{{- end -}} {{- end -}}
{{- define "app.ozgcloud_vorgangmanager_address" -}} {{- define "app.ozgcloud_vorgangmanager_address" -}}
{{ printf "dns://%s.%s:9090" .Values.vorgangmanagerName .Release.Namespace }} {{ printf "%s.%s:9090" .Values.vorgangmanagerName .Release.Namespace }}
{{- end -}} {{- end -}}
{{- define "app.databaseSecretName" -}} {{- define "app.databaseSecretName" -}}
...@@ -124,3 +124,6 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }} ...@@ -124,3 +124,6 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{- define "app.elsterTransferOperatorNamespace" -}}
{{- required "elsterTransferOperator.namespace must be set" (.Values.elsterTransferOperator).namespace -}}
{{- end -}}
\ No newline at end of file
...@@ -190,6 +190,18 @@ spec: ...@@ -190,6 +190,18 @@ spec:
value: {{ quote (required "ozgcloud.muk.sender must be set if ozgcloud.muk is enabled" ((.Values.ozgcloud).muk).sender) }} value: {{ quote (required "ozgcloud.muk.sender must be set if ozgcloud.muk is enabled" ((.Values.ozgcloud).muk).sender) }}
- name: ozgcloud_muk_server - name: ozgcloud_muk_server
value: {{ quote (required "ozgcloud.muk.server must be set if ozgcloud.muk is enabled" ((.Values.ozgcloud).muk).server) }} value: {{ quote (required "ozgcloud.muk.server must be set if ozgcloud.muk is enabled" ((.Values.ozgcloud).muk).server) }}
- name: ozgcloud_muk_password
valueFrom:
secretKeyRef:
name: muk-user-secret
key: password
optional: false
- name: ozgcloud_muk_userName
valueFrom:
secretKeyRef:
name: muk-user-secret
key: login
optional: false
{{- end }} {{- end }}
...@@ -201,11 +213,13 @@ spec: ...@@ -201,11 +213,13 @@ spec:
- name: ozgcloud_antragraum_url - name: ozgcloud_antragraum_url
value: {{ quote (required "ozgcloud.antragraum.url must be set if ozgcloud.antragraum is enabled" ((.Values.ozgcloud).antragraum).url) }} value: {{ quote (required "ozgcloud.antragraum.url must be set if ozgcloud.antragraum is enabled" ((.Values.ozgcloud).antragraum).url) }}
- name: ozgcloud_antragraum_metadataUri - name: ozgcloud_antragraum_metadataUri
value: {{ quote (required "ozgcloud.antragraum.metadataUri must be set if ozgcloud.antragraum is enabled" ((.Values.ozgcloud).antragraum).metadataUri) }} value: "file:/keystore/bayernid/metadata.xml"
- name: ozgcloud_antragraum_decryptionPrivateKey - name: ozgcloud_antragraum_decryptionPrivateKey
value: "file:/keystore/bayernid/bayern-id.key" value: "file:/keystore/bayernid/bayern-id.key"
- name: ozgcloud_antragraum_decryptionCertificate - name: ozgcloud_antragraum_decryptionCertificate
value: "file:/keystore/bayernid/bayern-id.crt" value: "file:/keystore/bayernid/bayern-id.crt"
- name: ozgcloud_antragraum_entityId
value: {{ quote (required "ozgcloud.antragraum.entityId must be set if ozgcloud.antragraum is enabled" ((.Values.ozgcloud).antragraum).entityId) }}
{{- end }} {{- end }}
{{- if (((.Values.ozgcloud).feature).bescheid).enableDummyDocumentProcessor }} {{- if (((.Values.ozgcloud).feature).bescheid).enableDummyDocumentProcessor }}
- name: ozgcloud_feature_bescheid_enableDummyDocumentProcessor - name: ozgcloud_feature_bescheid_enableDummyDocumentProcessor
......
#
# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
# Ministerpräsidenten des Landes Schleswig-Holstein
# Staatskanzlei
# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
#
# Lizenziert unter der EUPL, Version 1.2 oder - sobald
# diese von der Europäischen Kommission genehmigt wurden -
# Folgeversionen der EUPL ("Lizenz");
# Sie dürfen dieses Werk ausschließlich gemäß
# dieser Lizenz nutzen.
# Eine Kopie der Lizenz finden Sie hier:
#
# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
#
# Sofern nicht durch anwendbare Rechtsvorschriften
# gefordert oder in schriftlicher Form vereinbart, wird
# die unter der Lizenz verbreitete Software "so wie sie
# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
# ausdrücklich oder stillschweigend - verbreitet.
# Die sprachspezifischen Genehmigungen und Beschränkungen
# unter der Lizenz sind dem Lizenztext zu entnehmen.
#
{{- if (((.Values.ozgcloud).muk).enabled) }}
---
apiVersion: operator.ozgcloud.de/v1
kind: OzgCloudElsterTransferUser
metadata:
name: {{ include "app.namespace" . }}-etr-user
namespace: {{ include "app.namespace" $ }}
spec:
keep_after_delete: {{ (.Values.elsterTransferOperator).keep_after_delete | default false }}
{{- end -}}
\ No newline at end of file
#
# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
# Ministerpräsidenten des Landes Schleswig-Holstein
# Staatskanzlei
# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
#
# Lizenziert unter der EUPL, Version 1.2 oder - sobald
# diese von der Europäischen Kommission genehmigt wurden -
# Folgeversionen der EUPL ("Lizenz");
# Sie dürfen dieses Werk ausschließlich gemäß
# dieser Lizenz nutzen.
# Eine Kopie der Lizenz finden Sie hier:
#
# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
#
# Sofern nicht durch anwendbare Rechtsvorschriften
# gefordert oder in schriftlicher Form vereinbart, wird
# die unter der Lizenz verbreitete Software "so wie sie
# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
# ausdrücklich oder stillschweigend - verbreitet.
# Die sprachspezifischen Genehmigungen und Beschränkungen
# unter der Lizenz sind dem Lizenztext zu entnehmen.
#
{{- if ((.Values.ozgcloud).muk).enabled }}
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: ozgcloud-elster-transfer-operator-secret-create-role-binding
namespace: {{ include "app.namespace" . }}
subjects:
- kind: ServiceAccount
name: ozgcloud-elster-transfer-operator-service-account
namespace: {{ include "app.elsterTransferOperatorNamespace" . }}
roleRef:
kind: Role
name: ozgcloud-elster-transfer-operator-secret-create-role
apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: ozgcloud-elster-transfer-operator-secret-create-role
namespace: {{ include "app.namespace" . }}
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["create"]
{{- end }}
#
# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
# Ministerpräsidenten des Landes Schleswig-Holstein
# Staatskanzlei
# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
#
# Lizenziert unter der EUPL, Version 1.2 oder - sobald
# diese von der Europäischen Kommission genehmigt wurden -
# Folgeversionen der EUPL ("Lizenz");
# Sie dürfen dieses Werk ausschließlich gemäß
# dieser Lizenz nutzen.
# Eine Kopie der Lizenz finden Sie hier:
#
# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
#
# Sofern nicht durch anwendbare Rechtsvorschriften
# gefordert oder in schriftlicher Form vereinbart, wird
# die unter der Lizenz verbreitete Software "so wie sie
# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
# ausdrücklich oder stillschweigend - verbreitet.
# Die sprachspezifischen Genehmigungen und Beschränkungen
# unter der Lizenz sind dem Lizenztext zu entnehmen.
#
{{- if ((.Values.ozgcloud).muk).enabled }}
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: ozgcloud-elster-transfer-operator-secret-read-role-binding
namespace: {{ include "app.namespace" . }}
subjects:
- kind: ServiceAccount
name: ozgcloud-elster-transfer-operator-service-account
namespace: {{ include "app.elsterTransferOperatorNamespace" . }}
roleRef:
kind: Role
name: ozgcloud-elster-transfer-operator-secret-read-role
apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: ozgcloud-elster-transfer-operator-secret-read-role
namespace: {{ include "app.namespace" . }}
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]
resourceNames: ["muk-user-secret"]
{{- end -}}
#
# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
# Ministerpräsidenten des Landes Schleswig-Holstein
# Staatskanzlei
# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
#
# Lizenziert unter der EUPL, Version 1.2 oder - sobald
# diese von der Europäischen Kommission genehmigt wurden -
# Folgeversionen der EUPL ("Lizenz");
# Sie dürfen dieses Werk ausschließlich gemäß
# dieser Lizenz nutzen.
# Eine Kopie der Lizenz finden Sie hier:
#
# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
#
# Sofern nicht durch anwendbare Rechtsvorschriften
# gefordert oder in schriftlicher Form vereinbart, wird
# die unter der Lizenz verbreitete Software "so wie sie
# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
# ausdrücklich oder stillschweigend - verbreitet.
# Die sprachspezifischen Genehmigungen und Beschränkungen
# unter der Lizenz sind dem Lizenztext zu entnehmen.
#
{{- if ((.Values.ozgcloud).muk).enabled }}
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: ozgcloud-elster-transfer-operator-secret-update-role-binding
namespace: {{ include "app.namespace" . }}
subjects:
- kind: ServiceAccount
name: ozgcloud-elster-transfer-operator-service-account
namespace: {{ include "app.elsterTransferOperatorNamespace" . }}
roleRef:
kind: Role
name: ozgcloud-elster-transfer-operator-secret-update-role
apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: ozgcloud-elster-transfer-operator-secret-update-role
namespace: {{ include "app.namespace" . }}
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["update"]
resourceNames: ["muk-user-secret"]
{{- end }}
...@@ -27,7 +27,12 @@ ozgcloud: ...@@ -27,7 +27,12 @@ ozgcloud:
infoManager: infoManager:
address: https://info-manager.my-wonderful-domain.local:9000 address: https://info-manager.my-wonderful-domain.local:9000
networkPolicy: networkPolicy:
dnsServerNamespace: test-dns-namespace dnsServerNamespace: test-dns-namespace
imagePullSecret: test-image-pull-secret imagePullSecret: test-image-pull-secret
elsterTransferOperator:
namespace: elster-transfer
\ No newline at end of file
...@@ -33,13 +33,13 @@ set: ...@@ -33,13 +33,13 @@ set:
ozgcloud: ozgcloud:
environment: dev environment: dev
tests: tests:
- it: should set antragraum values - it: should set antragsraum values
set: set:
ozgcloud: ozgcloud:
antragraum: antragraum:
enabled: true enabled: true
url: https://antragraum.address url: https://antragraum.address
metadataUri: "classpath:/bayernid/metadata/bayernid-idp-infra.xml" entityId: https://sso.dev.de/realms/by-antragsraum-idp
asserts: asserts:
- contains: - contains:
path: spec.template.spec.containers[0].env path: spec.template.spec.containers[0].env
...@@ -55,7 +55,7 @@ tests: ...@@ -55,7 +55,7 @@ tests:
path: spec.template.spec.containers[0].env path: spec.template.spec.containers[0].env
content: content:
name: ozgcloud_antragraum_metadataUri name: ozgcloud_antragraum_metadataUri
value: "classpath:/bayernid/metadata/bayernid-idp-infra.xml" value: "file:/keystore/bayernid/metadata.xml"
- contains: - contains:
path: spec.template.spec.containers[0].env path: spec.template.spec.containers[0].env
content: content:
...@@ -82,12 +82,12 @@ tests: ...@@ -82,12 +82,12 @@ tests:
ozgcloud: ozgcloud:
antragraum: antragraum:
enabled: true enabled: true
metadataUri: "classpath:/bayernid/metadata/bayernid-idp-infra.xml" entityId: https://sso.dev.de/realms/by-antragsraum-idp
asserts: asserts:
- failedTemplate: - failedTemplate:
errorMessage: "ozgcloud.antragraum.url must be set if ozgcloud.antragraum is enabled" errorMessage: "ozgcloud.antragraum.url must be set if ozgcloud.antragraum is enabled"
- it: should fail if metadataUri is not set - it: should fail if entityId is not set
set: set:
ozgcloud: ozgcloud:
antragraum: antragraum:
...@@ -95,7 +95,7 @@ tests: ...@@ -95,7 +95,7 @@ tests:
url: https://antragraum.address url: https://antragraum.address
asserts: asserts:
- failedTemplate: - failedTemplate:
errorMessage: "ozgcloud.antragraum.metadataUri must be set if ozgcloud.antragraum is enabled" errorMessage: "ozgcloud.antragraum.entityId must be set if ozgcloud.antragraum is enabled"
- it: should set volumeMounts - it: should set volumeMounts
...@@ -104,7 +104,7 @@ tests: ...@@ -104,7 +104,7 @@ tests:
antragraum: antragraum:
enabled: true enabled: true
url: https://antragraum.address url: https://antragraum.address
metadataUri: "classpath:/bayernid/metadata/bayernid-idp-infra.xml" entityId: https://sso.dev.de/realms/by-antragsraum-idp
asserts: asserts:
- contains: - contains:
path: spec.template.spec.containers[0].volumeMounts path: spec.template.spec.containers[0].volumeMounts
...@@ -129,7 +129,7 @@ tests: ...@@ -129,7 +129,7 @@ tests:
antragraum: antragraum:
enabled: true enabled: true
url: https://antragraum.address url: https://antragraum.address
metadataUri: "classpath:/bayernid/metadata/bayernid-idp-infra.xml" entityId: https://sso.dev.de/realms/by-antragsraum-idp
asserts: asserts:
- contains: - contains:
path: spec.template.spec.volumes path: spec.template.spec.volumes
......
...@@ -51,6 +51,25 @@ tests: ...@@ -51,6 +51,25 @@ tests:
content: content:
name: ozgcloud_muk_server name: ozgcloud_muk_server
value: muk.test.ozg.de value: muk.test.ozg.de
- contains:
path: spec.template.spec.containers[0].env
content:
name: ozgcloud_muk_userName
valueFrom:
secretKeyRef:
name: muk-user-secret
key: login
optional: false
- contains:
path: spec.template.spec.containers[0].env
content:
name: ozgcloud_muk_password
valueFrom:
secretKeyRef:
name: muk-user-secret
key: password
optional: false
- it: should not by default set muk values - it: should not by default set muk values
asserts: asserts:
- notContains: - notContains:
...@@ -63,6 +82,16 @@ tests: ...@@ -63,6 +82,16 @@ tests:
content: content:
name: ozgcloud_muk_server name: ozgcloud_muk_server
any: true any: true
- notContains:
path: spec.template.spec.containers[0].env
content:
name: ozgcloud_muk_userName
any: true
- notContains:
path: spec.template.spec.containers[0].env
content:
name: ozgcloud_muk_password
any: true
- it: should fail if sender name is not set - it: should fail if sender name is not set
set: set:
...@@ -87,3 +116,4 @@ tests: ...@@ -87,3 +116,4 @@ tests:
...@@ -39,4 +39,4 @@ tests: ...@@ -39,4 +39,4 @@ tests:
path: spec.template.spec.containers[0].env path: spec.template.spec.containers[0].env
content: content:
name: ozgcloud_nachrichten-manager_address name: ozgcloud_nachrichten-manager_address
value: dns://vorgang-manager.sh-helm-test:9090 value: vorgang-manager.sh-helm-test:9090
#
# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
# Ministerpräsidenten des Landes Schleswig-Holstein
# Staatskanzlei
# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
#
# Lizenziert unter der EUPL, Version 1.2 oder - sobald
# diese von der Europäischen Kommission genehmigt wurden -
# Folgeversionen der EUPL ("Lizenz");
# Sie dürfen dieses Werk ausschließlich gemäß
# dieser Lizenz nutzen.
# Eine Kopie der Lizenz finden Sie hier:
#
# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
#
# Sofern nicht durch anwendbare Rechtsvorschriften
# gefordert oder in schriftlicher Form vereinbart, wird
# die unter der Lizenz verbreitete Software "so wie sie
# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
# ausdrücklich oder stillschweigend - verbreitet.
# Die sprachspezifischen Genehmigungen und Beschränkungen
# unter der Lizenz sind dem Lizenztext zu entnehmen.
#
suite: elster transfer user cr
release:
name: vorgang-manager
namespace: by-helm-test
templates:
- templates/elstertransfer_user_cr.yaml
tests:
- it: should contain apiVersion
set:
ozgcloud:
muk:
enabled: true
asserts:
- isAPIVersion:
of: operator.ozgcloud.de/v1
- it: should contain basic info
set:
ozgcloud:
muk:
enabled: true
asserts:
- isKind:
of: OzgCloudElsterTransferUser
- isAPIVersion:
of: operator.ozgcloud.de/v1
- it: should have metadata name
set:
ozgcloud:
muk:
enabled: true
asserts:
- equal:
path: metadata.name
value: by-helm-test-etr-user
- it: should have metadata namespace
set:
ozgcloud:
muk:
enabled: true
asserts:
- equal:
path: metadata.namespace
value: by-helm-test
- it: should have default spec
set:
ozgcloud:
muk:
enabled: true
asserts:
- equal:
path: spec.keep_after_delete
value: false
- it: should set spec correctly
set:
ozgcloud:
muk:
enabled: true
elsterTransferOperator:
keep_after_delete: true
asserts:
- equal:
path: spec.keep_after_delete
value: true
- it: should create cr if enabled
set:
ozgcloud:
muk:
enabled: true
asserts:
- hasDocuments:
count: 1
- it: should NOT create cr by default
asserts:
- hasDocuments:
count: 0
\ No newline at end of file
#
# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
# Ministerpräsidenten des Landes Schleswig-Holstein
# Staatskanzlei
# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
#
# Lizenziert unter der EUPL, Version 1.2 oder - sobald
# diese von der Europäischen Kommission genehmigt wurden -
# Folgeversionen der EUPL ("Lizenz");
# Sie dürfen dieses Werk ausschließlich gemäß
# dieser Lizenz nutzen.
# Eine Kopie der Lizenz finden Sie hier:
#
# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
#
# Sofern nicht durch anwendbare Rechtsvorschriften
# gefordert oder in schriftlicher Form vereinbart, wird
# die unter der Lizenz verbreitete Software "so wie sie
# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
# ausdrücklich oder stillschweigend - verbreitet.
# Die sprachspezifischen Genehmigungen und Beschränkungen
# unter der Lizenz sind dem Lizenztext zu entnehmen.
#
suite: ElsterTransfer user secret rbac test
release:
name: ozgcloud-elstertransfer-operator
namespace: test-namespace
templates:
- templates/ozgcloud_elstertransfer_operator_secret_create_role.yaml
tests:
- it: test RoleBinding metadata
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- isKind:
of: RoleBinding
documentIndex: 0
- isAPIVersion:
of: rbac.authorization.k8s.io/v1
documentIndex: 0
- equal:
path: metadata.name
value: ozgcloud-elster-transfer-operator-secret-create-role-binding
documentIndex: 0
- it: test RoleBinding subject
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- contains:
path: subjects
content:
kind: ServiceAccount
name: ozgcloud-elster-transfer-operator-service-account
namespace: etr-operator
documentIndex: 0
- it: test RoleBinding roleRef
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- equal:
path: roleRef
value:
kind: Role
name: ozgcloud-elster-transfer-operator-secret-create-role
apiGroup: rbac.authorization.k8s.io
documentIndex: 0
- it: test Role metadata
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- isKind:
of: Role
documentIndex: 1
- isAPIVersion:
of: rbac.authorization.k8s.io/v1
documentIndex: 1
- equal:
path: metadata.name
value: ozgcloud-elster-transfer-operator-secret-create-role
documentIndex: 1
- it: test RoleBinding rules
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- contains:
path: rules
content:
apiGroups:
- ""
resources:
- secrets
verbs:
- create
documentIndex: 1
- it: test eltertransferOperator namespace must be set msg
set:
ozgcloud:
muk:
enabled: true
asserts:
- failedTemplate:
errorMessage: elsterTransferOperator.namespace must be set
- it: RBAC not created by default
asserts:
- hasDocuments:
count: 0
\ No newline at end of file
#
# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
# Ministerpräsidenten des Landes Schleswig-Holstein
# Staatskanzlei
# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
#
# Lizenziert unter der EUPL, Version 1.2 oder - sobald
# diese von der Europäischen Kommission genehmigt wurden -
# Folgeversionen der EUPL ("Lizenz");
# Sie dürfen dieses Werk ausschließlich gemäß
# dieser Lizenz nutzen.
# Eine Kopie der Lizenz finden Sie hier:
#
# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
#
# Sofern nicht durch anwendbare Rechtsvorschriften
# gefordert oder in schriftlicher Form vereinbart, wird
# die unter der Lizenz verbreitete Software "so wie sie
# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
# ausdrücklich oder stillschweigend - verbreitet.
# Die sprachspezifischen Genehmigungen und Beschränkungen
# unter der Lizenz sind dem Lizenztext zu entnehmen.
#
suite: ElsterTransfer user secret rbac test
release:
name: ozgcloud-elstertransfer-operator
namespace: test-namespace
templates:
- templates/ozgcloud_elstertransfer_operator_secret_read_role.yaml
tests:
- it: test RoleBinding metadata
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- isKind:
of: RoleBinding
documentIndex: 0
- isAPIVersion:
of: rbac.authorization.k8s.io/v1
documentIndex: 0
- equal:
path: metadata.name
value: ozgcloud-elster-transfer-operator-secret-read-role-binding
documentIndex: 0
- it: test RoleBinding subject
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- contains:
path: subjects
content:
kind: ServiceAccount
name: ozgcloud-elster-transfer-operator-service-account
namespace: etr-operator
documentIndex: 0
- it: test RoleBinding roleRef
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- equal:
path: roleRef
value:
kind: Role
name: ozgcloud-elster-transfer-operator-secret-read-role
apiGroup: rbac.authorization.k8s.io
documentIndex: 0
- it: test Role metadata
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- isKind:
of: Role
documentIndex: 1
- isAPIVersion:
of: rbac.authorization.k8s.io/v1
documentIndex: 1
- equal:
path: metadata.name
value: ozgcloud-elster-transfer-operator-secret-read-role
documentIndex: 1
- it: test RoleBinding rules
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- contains:
path: rules
content:
apiGroups:
- ""
resourceNames:
- muk-user-secret
resources:
- secrets
verbs:
- get
- list
documentIndex: 1
- it: test eltertransferOperator namespace must be set msg
set:
ozgcloud:
muk:
enabled: true
asserts:
- failedTemplate:
errorMessage: elsterTransferOperator.namespace must be set
documentIndex: 0
- it: RBAC not created by default
asserts:
- hasDocuments:
count: 0
\ No newline at end of file
#
# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
# Ministerpräsidenten des Landes Schleswig-Holstein
# Staatskanzlei
# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
#
# Lizenziert unter der EUPL, Version 1.2 oder - sobald
# diese von der Europäischen Kommission genehmigt wurden -
# Folgeversionen der EUPL ("Lizenz");
# Sie dürfen dieses Werk ausschließlich gemäß
# dieser Lizenz nutzen.
# Eine Kopie der Lizenz finden Sie hier:
#
# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
#
# Sofern nicht durch anwendbare Rechtsvorschriften
# gefordert oder in schriftlicher Form vereinbart, wird
# die unter der Lizenz verbreitete Software "so wie sie
# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
# ausdrücklich oder stillschweigend - verbreitet.
# Die sprachspezifischen Genehmigungen und Beschränkungen
# unter der Lizenz sind dem Lizenztext zu entnehmen.
#
suite: ElsterTransfer user secret rbac test
release:
name: ozgcloud-elstertransfer-operator
namespace: test-namespace
templates:
- templates/ozgcloud_elstertransfer_operator_secret_update_role.yaml
tests:
- it: test RoleBinding metadata
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- isKind:
of: RoleBinding
documentIndex: 0
- isAPIVersion:
of: rbac.authorization.k8s.io/v1
documentIndex: 0
- equal:
path: metadata.name
value: ozgcloud-elster-transfer-operator-secret-update-role-binding
documentIndex: 0
- it: test RoleBinding subject
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- contains:
path: subjects
content:
kind: ServiceAccount
name: ozgcloud-elster-transfer-operator-service-account
namespace: etr-operator
documentIndex: 0
- it: test RoleBinding roleRef
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- equal:
path: roleRef
value:
kind: Role
name: ozgcloud-elster-transfer-operator-secret-update-role
apiGroup: rbac.authorization.k8s.io
documentIndex: 0
- it: test Role metadata
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- isKind:
of: Role
documentIndex: 1
- isAPIVersion:
of: rbac.authorization.k8s.io/v1
documentIndex: 1
- equal:
path: metadata.name
value: ozgcloud-elster-transfer-operator-secret-update-role
documentIndex: 1
- it: test RoleBinding rules
set:
elsterTransferOperator:
namespace: etr-operator
ozgcloud:
muk:
enabled: true
asserts:
- contains:
path: rules
content:
apiGroups:
- ""
resources:
- secrets
verbs:
- update
resourceNames:
- muk-user-secret
documentIndex: 1
- it: test eltertransferOperator namespace must be set msg
set:
ozgcloud:
muk:
enabled: true
asserts:
- failedTemplate:
errorMessage: elsterTransferOperator.namespace must be set
- it: RBAC not created by default
asserts:
- hasDocuments:
count: 0
\ No newline at end of file
...@@ -24,7 +24,7 @@ public class ServiceKonto { ...@@ -24,7 +24,7 @@ public class ServiceKonto {
@Singular @Singular
private List<PostfachAddress> postfachAddresses; private List<PostfachAddress> postfachAddresses;
static class ServiceKontoBuilder { public static class ServiceKontoBuilder {
public ServiceKontoBuilder trustLevel(String trustLevel) { public ServiceKontoBuilder trustLevel(String trustLevel) {
validateTrustLevel(trustLevel); validateTrustLevel(trustLevel);
......
...@@ -96,7 +96,4 @@ ozgcloud: ...@@ -96,7 +96,4 @@ ozgcloud:
user-manager: user-manager:
address: ${grpc.client.user-manager.address:false} address: ${grpc.client.user-manager.address:false}
negotiation-type: ${grpc.client.user-manager.negotiationType} negotiation-type: ${grpc.client.user-manager.negotiationType}
antragraum:
entityId: https://antragsraum.ozgcloud.de/
metadataUri: "classpath:/bayernid/bayernid-idp-infra.xml"
package de.ozgcloud.nachrichten.antragraum;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.xml.security.stax.ext.XMLSecurityConstants.DIRECTION;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.annotation.DirtiesContext;
import de.ozgcloud.common.test.DataITCase;
import de.ozgcloud.common.test.TestUtils;
import de.ozgcloud.nachrichten.postfach.PostfachAddress;
import de.ozgcloud.nachrichten.postfach.PostfachNachricht;
import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory;
import de.ozgcloud.nachrichten.postfach.osi.OsiPostfachProperties;
import de.ozgcloud.nachrichten.postfach.osi.ReplyOption;
import de.ozgcloud.vorgang.VorgangManagerServerApplication;
import de.ozgcloud.vorgang.attached_item.VorgangAttachedItem;
import de.ozgcloud.vorgang.attached_item.VorgangAttachedItemTestFactory;
import de.ozgcloud.vorgang.servicekonto.PostfachAddressTestFactory;
import de.ozgcloud.vorgang.servicekonto.ServiceKonto;
import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory;
import de.ozgcloud.vorgang.vorgang.Vorgang;
import de.ozgcloud.vorgang.vorgang.VorgangHeadTestFactory;
import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
import io.grpc.stub.StreamObserver;
@SpringBootTest(classes = { VorgangManagerServerApplication.class, OsiPostfachProperties.class }, properties = {
"grpc.server.in-process-name=postfachitcase",
"ozgcloud.antragraum.url=https://localhost/dummy/antragraum",
"ozgcloud.antragraum.entityId=dummy-id",
"ozgcloud.antragraum.metadataUri=http://localhost/dummy/antragraum/uri",
"ozgcloud.antragraum.decryptionPrivateKey=dummyPrivateKey",
"ozgcloud.antragraum.decryptionCertificate=dummyCertificate",
"grpc.client.ozgcloud-command-manager.address=in-process:postfachitcase",
"grpc.client.command-manager.address=in-process:postfachitcase",
"grpc.client.info-manager.address=in-process:postfachitcase",
"grpc.client.vorgang-manager.address=in-process:postfachitcase",
})
@WithMockUser
@DataITCase
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
class AntragraumITCase {
@Autowired
private AntragraumGrpcService grpcService;
@Autowired
private MongoOperations mongoOperations;
@MockBean
private Saml2Decrypter decrypter;
@MockBean
private Saml2Verifier verifier;
@BeforeEach
void prepareDatabase() {
mongoOperations.dropCollection(Vorgang.COLLECTION_NAME);
mongoOperations.dropCollection(VorgangAttachedItem.COLLECTION_NAME);
}
@DisplayName("Find rueckfragen")
@Nested
class TestFindRueckfragen {
@Mock
private StreamObserver<GrpcFindRueckfragenResponse> responseObserver;
@Captor
private ArgumentCaptor<GrpcFindRueckfragenResponse> captor;
@BeforeEach
void mock() {
when(decrypter.decryptPostfachId(any())).thenReturn(PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
when(verifier.verify(any())).thenReturn(Collections.emptyList());
}
@DisplayName("with nachrichten from different vorgaenge")
@Nested
class TestWithDifferentVorgangId {
private Vorgang vorgangTrustLevel3;
private Vorgang vorgangTrustLevel2;
@BeforeEach
void prepareDatabase() {
vorgangTrustLevel3 = mongoOperations.save(createVorgang(TrustLevel.LEVEL_3), Vorgang.COLLECTION_NAME);
mongoOperations.save(createPostfachNachrichtVorgangAttachedItem(vorgangTrustLevel3.getId()), VorgangAttachedItem.COLLECTION_NAME);
vorgangTrustLevel2 = mongoOperations.save(createVorgang(TrustLevel.LEVEL_2), Vorgang.COLLECTION_NAME);
mongoOperations.save(createPostfachNachrichtVorgangAttachedItem(vorgangTrustLevel2.getId()), VorgangAttachedItem.COLLECTION_NAME);
}
@Test
void shouldHaveTrustLevelForVorgang() {
when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_4.getValue());
var rueckfragen = findRueckfragen().stream()
.filter(rueckfrage -> StringUtils.equals(rueckfrage.getVorgangId(), vorgangTrustLevel3.getId()))
.toList();
assertThat(rueckfragen).isNotEmpty().hasSize(1);
assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue());
assertThat(rueckfragen.get(0).getAccessible()).isTrue();
}
@Test
void shouldHaveTrustLevelForOtherVorgang() {
when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_1.getValue());
var rueckfragen = findRueckfragen().stream()
.filter(rueckfrage -> StringUtils.equals(rueckfrage.getVorgangId(), vorgangTrustLevel2.getId()))
.toList();
assertThat(rueckfragen).isNotEmpty().hasSize(1);
assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_2.getValue());
assertThat(rueckfragen.get(0).getAccessible()).isFalse();
}
}
@DisplayName("with nachrichten from one vorgang")
@Nested
class TestWithOneVorgangId {
@BeforeEach
void prepareDatabase() {
var vorgang = mongoOperations.save(createVorgang(TrustLevel.LEVEL_3), Vorgang.COLLECTION_NAME);
mongoOperations.save(createPostfachNachrichtVorgangAttachedItem(vorgang.getId()), VorgangAttachedItem.COLLECTION_NAME);
}
@Test
void shouldReturnOnMatchingTokenTrustLevel() {
when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_3.getValue());
var rueckfragen = findRueckfragen();
assertThat(rueckfragen).isNotEmpty().hasSize(1);
assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue());
assertThat(rueckfragen.get(0).getAccessible()).isTrue();
}
@Test
void shouldReturnOnLowerTokenTrustLevel() {
when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_1.getValue());
var rueckfragen = findRueckfragen();
assertThat(rueckfragen).isNotEmpty().hasSize(1);
assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue());
assertThat(rueckfragen.get(0).getAccessible()).isFalse();
}
@Test
void shouldReturnOnHigherTokenTrustLevel() {
when(decrypter.decryptTrustLevel(any())).thenReturn(TrustLevel.LEVEL_4.getValue());
var rueckfragen = findRueckfragen();
assertThat(rueckfragen).isNotEmpty().hasSize(1);
assertThat(rueckfragen.get(0).getTrustLevel()).isEqualTo(TrustLevel.LEVEL_3.getValue());
assertThat(rueckfragen.get(0).getAccessible()).isTrue();
}
}
private List<GrpcRueckfrageHead> findRueckfragen() {
grpcService.findRueckfragen(
GrpcFindRueckfrageRequestTestFactory.createBuilder().setSamlToken(TestUtils.loadTextFile("SamlResponse.xml")).build(),
responseObserver);
verify(responseObserver).onNext(captor.capture());
return captor.getValue().getRueckfrageHeadList();
}
}
private Vorgang createVorgang(TrustLevel trustLevel) {
return VorgangTestFactory.createBuilder()
.id(null)
.header(VorgangHeadTestFactory.createBuilder().serviceKonto(createBayernIdServiceKonto(trustLevel)).build())
.build();
}
private ServiceKonto createBayernIdServiceKonto(TrustLevel trustLevel) {
return ServiceKontoTestFactory.createBuilder().type("BayernID").trustLevel(trustLevel.getValue()).build();
}
private VorgangAttachedItem createPostfachNachrichtVorgangAttachedItem(String vorgangId) {
return VorgangAttachedItemTestFactory.createBuilder()
.id(null)
.version(0)
.vorgangId(vorgangId)
.itemName("PostfachMail")
.client("OzgCloud_NachrichtenManager")
.item(createBayernIdPostfachNachrichtItem(vorgangId))
.build();
}
private Map<String, Object> createBayernIdPostfachNachrichtItem(String vorgangId) {
var nachrichtItem = PostfachNachrichtTestFactory.asMap();
nachrichtItem.put(PostfachNachricht.FIELD_DIRECTION, DIRECTION.OUT.name());
nachrichtItem.put(PostfachNachricht.FIELD_REPLY_OPTION, ReplyOption.POSSIBLE);
nachrichtItem.put(PostfachNachricht.FIELD_VORGANG_ID, vorgangId);
nachrichtItem.put(PostfachNachricht.FIELD_POSTFACH_ID, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE);
nachrichtItem.put(PostfachNachricht.POSTFACH_ADDRESS_FIELD, Map.of(
PostfachAddress.TYPE_FIELD, 0,
PostfachAddress.VERSION_FIELD, 1,
PostfachAddress.IDENTIFIER_FIELD,
Map.of(PostfachNachricht.FIELD_POSTFACH_ID, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE),
PostfachAddress.SERVICEKONTO_TYPE_FIELD, "BayernID"));
return nachrichtItem;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment