diff --git a/.github/workflows/chart-test.yml b/.github/workflows/chart-test.yml index 73c22f1a..3842c610 100644 --- a/.github/workflows/chart-test.yml +++ b/.github/workflows/chart-test.yml @@ -79,13 +79,13 @@ jobs: tags: kind-registry:5000/credential-issuer-service:testing - name: Build expiry app - id: build-expiry-app-image + id: build-data-deletion-app-image uses: docker/build-push-action@v6 with: context: . - file: ./docker/Dockerfile-credential-expiry-app + file: ./docker/Dockerfile-credential-data-deletion-app push: true - tags: kind-registry:5000/credential-expiry-app:testing + tags: kind-registry:5000/credential-data-deletion-app:testing - name: Build processes worker id: build-processes-worker-image @@ -121,7 +121,7 @@ jobs: run: ct lint --validate-maintainers=false --check-version-increment=false --target-branch ${{ github.event.repository.default_branch }} - name: Run chart-testing (install) - run: ct install --charts charts/ssi-credential-issuer --config charts/chart-testing-config.yaml --helm-extra-set-args "--set service.image.name=kind-registry:5000/credential-issuer-service --set service.image.tag=testing --set migrations.image.name=kind-registry:5000/credential-issuer-migrations --set migrations.image.tag=testing --set processesworker.image.name=kind-registry:5000/credential-issuer-processes-worker --set processesworker.image.tag=testing --set credentialExpiry.image.name=kind-registry:5000/credential-expiry-app --set credentialExpiry.image.tag=testing" + run: ct install --charts charts/ssi-credential-issuer --config charts/chart-testing-config.yaml --helm-extra-set-args "--set service.image.name=kind-registry:5000/credential-issuer-service --set service.image.tag=testing --set migrations.image.name=kind-registry:5000/credential-issuer-migrations --set migrations.image.tag=testing --set processesworker.image.name=kind-registry:5000/credential-issuer-processes-worker --set processesworker.image.tag=testing --set credentialExpiry.image.name=kind-registry:5000/credential-data-deletion-app --set credentialExpiry.image.tag=testing" if: github.event_name != 'pull_request' || steps.list-changed.outputs.changed == 'true' # Upgrade the released chart version with the locally available chart @@ -132,5 +132,5 @@ jobs: helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev helm install ssi-credential-issuer tractusx-dev/ssi-credential-issuer --version ${{ github.event.inputs.upgrade_from || '1.0.0' }} --namespace upgrade --create-namespace helm dependency update charts/ssi-credential-issuer - helm upgrade ssi-credential-issuer charts/ssi-credential-issuer --set service.image.name=kind-registry:5000/credential-issuer-service --set service.image.tag=testing --set migrations.image.name=kind-registry:5000/credential-issuer-migrations --set migrations.image.tag=testing --set processesworker.image.name=kind-registry:5000/credential-issuer-processes-worker --set processesworker.image.tag=testing --set credentialExpiry.image.name=kind-registry:5000/credential-expiry-app --set credentialExpiry.image.tag=testing --namespace upgrade + helm upgrade ssi-credential-issuer charts/ssi-credential-issuer --set service.image.name=kind-registry:5000/credential-issuer-service --set service.image.tag=testing --set migrations.image.name=kind-registry:5000/credential-issuer-migrations --set migrations.image.tag=testing --set processesworker.image.name=kind-registry:5000/credential-issuer-processes-worker --set processesworker.image.tag=testing --set credentialExpiry.image.name=kind-registry:5000/credential-data-deletion-app --set credentialExpiry.image.tag=testing --namespace upgrade if: github.event_name != 'pull_request' || steps.list-changed.outputs.changed == 'true' diff --git a/.github/workflows/credential-expiry-app-docker.yml b/.github/workflows/credential-data-deletion-app-docker.yml similarity index 88% rename from .github/workflows/credential-expiry-app-docker.yml rename to .github/workflows/credential-data-deletion-app-docker.yml index 7689f33b..f9262bce 100644 --- a/.github/workflows/credential-expiry-app-docker.yml +++ b/.github/workflows/credential-data-deletion-app-docker.yml @@ -17,7 +17,7 @@ # SPDX-License-Identifier: Apache-2.0 ############################################################### -name: Build Credential Expiry App Image +name: Build Credential Data Deletion App Image on: push: @@ -25,9 +25,9 @@ on: # service and transitive paths - 'src/**' # workflow file - - '.github/workflows/credential-expiry-app-docker.yml' + - '.github/workflows/credential-data-deletion-app-docker.yml' # dockerfile - - 'docker/Dockerfile-credential-expiry-app' + - 'docker/Dockerfile-credential-data-deletion-app' branches: - 'main' @@ -35,7 +35,7 @@ on: env: IMAGE_NAMESPACE: "tractusx" - IMAGE_NAME: "ssi-credential-expiry-app" + IMAGE_NAME: "ssi-credential-data-deletion-app" jobs: build-and-push-image: @@ -70,7 +70,7 @@ jobs: uses: docker/build-push-action@1a162644f9a7e87d8f4b053101d1d9a712edc18c # v6.3.0 with: context: . - file: ./docker/Dockerfile-credential-expiry-app + file: ./docker/Dockerfile-credential-data-deletion-app platforms: linux/amd64, linux/arm64 pull: true push: ${{ github.event_name != 'pull_request' }} @@ -85,4 +85,4 @@ jobs: username: ${{ secrets.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_TOKEN }} repository: ${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_NAME }} - readme-filepath: ./docker/notice-credential-expiry-app.md + readme-filepath: ./docker/notice-credential-data-deletion-app.md diff --git a/.github/workflows/owasp-zap.yml b/.github/workflows/owasp-zap.yml index 3f5f2992..ec4b65f1 100644 --- a/.github/workflows/owasp-zap.yml +++ b/.github/workflows/owasp-zap.yml @@ -88,13 +88,13 @@ jobs: tags: kind-registry:5000/credential-issuer-processes-worker:testing - name: Build Expiry image - id: build-expiry-image + id: build-data-deletion-image uses: docker/build-push-action@1a162644f9a7e87d8f4b053101d1d9a712edc18c # v6.3.0 with: context: . - file: ./docker/Dockerfile-credential-expiry-app + file: ./docker/Dockerfile-credential-data-deletion-app push: true - tags: kind-registry:5000/credential-expiry-app:testing + tags: kind-registry:5000/credential-data-deletion-app:testing - name: Add bitnami repo run: | @@ -107,7 +107,7 @@ jobs: helm dependency build - name: Install the chart on KinD cluster - run: helm install testing -n apps --create-namespace --wait --set service.image.name=kind-registry:5000/credential-issuer-service --set service.image.tag=testing --set migrations.image.name=kind-registry:5000/credential-issuer-migrations --set migrations.image.tag=testing --set processesworker.image.name=kind-registry:5000/credential-issuer-processes-worker --set processesworker.image.tag=testing --set credentialExpiry.image.name=kind-registry:5000/credential-expiry-app --set credentialExpiry.image.tag=testing --set service.swaggerEnabled=true charts/ssi-credential-issuer + run: helm install testing -n apps --create-namespace --wait --set service.image.name=kind-registry:5000/credential-issuer-service --set service.image.tag=testing --set migrations.image.name=kind-registry:5000/credential-issuer-migrations --set migrations.image.tag=testing --set processesworker.image.name=kind-registry:5000/credential-issuer-processes-worker --set processesworker.image.tag=testing --set credentialExpiry.image.name=kind-registry:5000/credential-data-deletion-app --set credentialExpiry.image.tag=testing --set service.swaggerEnabled=true charts/ssi-credential-issuer - name: Configure port forward to app in KinD run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 08df8407..42050729 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -100,9 +100,9 @@ jobs: - image: tractusx/ssi-credential-issuer-processes-worker dockerfile: ./docker/Dockerfile-credential-issuer-processes-worker dockernotice: ./docker/notice-credential-issuer-processes-worker.md - - image: tractusx/ssi-credential-expiry-app - dockerfile: ./docker/Dockerfile-credential-expiry-app - dockernotice: ./docker/notice-credential-expiry-app.md + - image: tractusx/ssi-credential-data-deletion-app + dockerfile: ./docker/Dockerfile-credential-data-deletion-app + dockernotice: ./docker/notice-credential-data-deletion-app.md outputs: app-version: ${{ steps.app-version.outputs.current }} version-check: ${{ steps.version-check.outputs.exists }} diff --git a/.github/workflows/release_candidate.yml b/.github/workflows/release_candidate.yml index 2bbe046f..5f9f9b56 100644 --- a/.github/workflows/release_candidate.yml +++ b/.github/workflows/release_candidate.yml @@ -42,9 +42,9 @@ jobs: - image: tractusx/ssi-credential-issuer-processes-worker dockerfile: ./docker/Dockerfile-credential-issuer-processes-worker dockernotice: ./docker/notice-credential-issuer-processes-worker.md - - image: tractusx/ssi-credential-expiry-app - dockerfile: ./docker/Dockerfile-credential-expiry-app - dockernotice: ./docker/notice-credential-expiry-app.md + - image: tractusx/ssi-credential-data-deletion-app + dockerfile: ./docker/Dockerfile-credential-data-deletion-app + dockernotice: ./docker/notice-credential-data-deletion-app.md steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 diff --git a/.github/workflows/trivy-main.yml b/.github/workflows/trivy-main.yml index 3a5e5ace..ba53122d 100644 --- a/.github/workflows/trivy-main.yml +++ b/.github/workflows/trivy-main.yml @@ -144,7 +144,7 @@ jobs: with: sarif_file: "trivy-results3.sarif" - analyze-ssi-credential-expiry-app: + analyze-ssi-credential-data-deletion-app: runs-on: ubuntu-latest permissions: actions: read @@ -165,7 +165,7 @@ jobs: uses: aquasecurity/trivy-action@6c175e9c4083a92bbca2f9724c8a5e33bc2d97a5 # v0.30.0 with: # Path to Docker image - image-ref: "${{ env.IMAGE_NAMESPACE }}/ssi-credential-expiry-app:main" + image-ref: "${{ env.IMAGE_NAMESPACE }}/ssi-credential-data-deletion-app:main" format: "sarif" output: "trivy-results4.sarif" vuln-type: "os,library" diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index 0b81fde3..1b201976 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -144,7 +144,7 @@ jobs: with: sarif_file: "trivy-results3.sarif" - analyze-ssi-credential-expiry-app: + analyze-ssi-credential-data-deletion-app: runs-on: ubuntu-latest permissions: actions: read @@ -165,7 +165,7 @@ jobs: uses: aquasecurity/trivy-action@6c175e9c4083a92bbca2f9724c8a5e33bc2d97a5 # v0.30.0 with: # Path to Docker image - image-ref: "${{ env.IMAGE_NAMESPACE }}/ssi-credential-expiry-app:latest" + image-ref: "${{ env.IMAGE_NAMESPACE }}/ssi-credential-data-deletion-app:latest" format: "sarif" output: "trivy-results4.sarif" vuln-type: "os,library" diff --git a/README.md b/README.md index cf674977..53918bd4 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ See Docker notice files for more information: - [credential-issuer-service](./docker//notice-credential-issuer-service.md) - [credential-issuer-processes-worker](./docker/notice-credential-issuer-processes-worker.md) -- [credential-expiry-app](./docker/notice-credential-expiry-app.md) +- [credential-data-deletion-app](./docker/notice-credential-data-deletion-app.md) - [credential-issuer-migrations](./docker/notice-credential-issuer-migrations.md) ## Contributing diff --git a/charts/ssi-credential-issuer/README.md b/charts/ssi-credential-issuer/README.md index d4f649d9..04aeef77 100644 --- a/charts/ssi-credential-issuer/README.md +++ b/charts/ssi-credential-issuer/README.md @@ -106,7 +106,7 @@ dependencies: | processesworker.wallet.getCredentialPath | string | `"/api/v2.0.0/credentials/{0}"` | path to get a specific credential; {0} will be replaced by the credential id | | processesworker.wallet.revokeCredentialPath | string | `"/api/v2.0.0/credentials/{0}"` | path to revoke a specific credential; {0} will be replaced by the credential id | | credentialExpiry.name | string | `"expiry"` | | -| credentialExpiry.image.name | string | `"docker.io/tractusx/ssi-credential-expiry-app"` | | +| credentialExpiry.image.name | string | `"docker.io/tractusx/ssi-credential-data-deletion-app"` | | | credentialExpiry.image.tag | string | `""` | | | credentialExpiry.image.pullSecrets | list | `[]` | | | credentialExpiry.imagePullPolicy | string | `"IfNotPresent"` | | @@ -114,7 +114,7 @@ dependencies: | credentialExpiry.processIdentity.identityId | string | `"ac1cf001-7fbc-1f2f-817f-bce058020006"` | | | credentialExpiry.logging.default | string | `"Information"` | | | credentialExpiry.expiry.expiredVcsToDeleteInMonth | int | `12` | | -| credentialExpiry.expiry.inactiveVcsToDeleteInWeeks | int | `12` | | +| credentialExpiry.expiry.inactiveVcsToDeleteInDays | int | `84` | | | existingSecret | string | `""` | Secret containing the client-secrets for the connection to portal and wallet as well as encryptionKeys for issuer.credential and processesworker.wallet | | dotnetEnvironment | string | `"Production"` | | | dbConnection.schema | string | `"issuer"` | | diff --git a/charts/ssi-credential-issuer/templates/cronjob-expiry-app.yaml b/charts/ssi-credential-issuer/templates/cronjob-data-deletion-app.yaml similarity index 98% rename from charts/ssi-credential-issuer/templates/cronjob-expiry-app.yaml rename to charts/ssi-credential-issuer/templates/cronjob-data-deletion-app.yaml index 26ee1783..dc322df0 100644 --- a/charts/ssi-credential-issuer/templates/cronjob-expiry-app.yaml +++ b/charts/ssi-credential-issuer/templates/cronjob-data-deletion-app.yaml @@ -72,8 +72,8 @@ spec: {{- end }} - name: "EXPIRY__EXPIREDVCSTODELETEINMONTH" value: "{{ .Values.credentialExpiry.expiry.expiredVcsToDeleteInMonth }}" - - name: "EXPIRY__INACTIVEVCSTODELETEINWEEKS" - value: "{{ .Values.credentialExpiry.expiry.inactiveVcsToDeleteInWeeks }}" + - name: "EXPIRY__INACTIVEVCSTODELETEINDAYS" + value: "{{ .Values.credentialExpiry.expiry.inactiveVcsToDeleteInDays }}" - name: "PROCESSIDENTITY__IDENTITYID" value: "{{ .Values.credentialExpiry.processIdentity.identityId }}" - name: "PORTAL__CLIENTID" diff --git a/charts/ssi-credential-issuer/values.yaml b/charts/ssi-credential-issuer/values.yaml index 9cc00070..01274e7b 100644 --- a/charts/ssi-credential-issuer/values.yaml +++ b/charts/ssi-credential-issuer/values.yaml @@ -149,7 +149,7 @@ processesworker: credentialExpiry: name: "expiry" image: - name: "docker.io/tractusx/ssi-credential-expiry-app" + name: "docker.io/tractusx/ssi-credential-data-deletion-app" tag: "" pullSecrets: [] imagePullPolicy: "IfNotPresent" @@ -167,7 +167,7 @@ credentialExpiry: default: "Information" expiry: expiredVcsToDeleteInMonth: 12 - inactiveVcsToDeleteInWeeks: 12 + inactiveVcsToDeleteInDays: 84 # -- Secret containing the client-secrets for the connection to portal and wallet # as well as encryptionKeys for issuer.credential and processesworker.wallet diff --git a/docker/Dockerfile-credential-expiry-app b/docker/Dockerfile-credential-data-deletion-app similarity index 80% rename from docker/Dockerfile-credential-expiry-app rename to docker/Dockerfile-credential-data-deletion-app index 67987c51..be3d78f8 100644 --- a/docker/Dockerfile-credential-expiry-app +++ b/docker/Dockerfile-credential-data-deletion-app @@ -22,9 +22,9 @@ ARG TARGETARCH WORKDIR / COPY LICENSE NOTICE.md DEPENDENCIES / COPY src/ src/ -RUN dotnet restore "src/credentials/SsiCredentialIssuer.Expiry.App/SsiCredentialIssuer.Expiry.App.csproj" -WORKDIR /src/credentials/SsiCredentialIssuer.Expiry.App -RUN dotnet publish "SsiCredentialIssuer.Expiry.App.csproj" -c Release -o /app/publish +RUN dotnet restore "src/credentials/SsiCredentialIssuer.DataDeletion.App/SsiCredentialIssuer.DataDeletion.App.csproj" +WORKDIR /src/credentials/SsiCredentialIssuer.DataDeletion.App +RUN dotnet publish "SsiCredentialIssuer.DataDeletion.App.csproj" -c Release -o /app/publish FROM mcr.microsoft.com/dotnet/runtime:9.0-alpine ENV COMPlus_EnableDiagnostics=0 @@ -32,4 +32,4 @@ WORKDIR /app COPY --from=publish /app/publish . RUN chown -R 1000:3000 /app USER 1000:3000 -ENTRYPOINT ["dotnet", "Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App.dll"] +ENTRYPOINT ["dotnet", "Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App.dll"] diff --git a/docker/notice-credential-expiry-app.md b/docker/notice-credential-data-deletion-app.md similarity index 85% rename from docker/notice-credential-expiry-app.md rename to docker/notice-credential-data-deletion-app.md index 5699ad67..a5a1c15a 100644 --- a/docker/notice-credential-expiry-app.md +++ b/docker/notice-credential-data-deletion-app.md @@ -1,6 +1,6 @@ ## Notice for Docker image -DockerHub: [https://hub.docker.com/r/tractusx/ssi-credential-expiry-app](https://hub.docker.com/r/tractusx/ssi-credential-expiry-app) +DockerHub: [https://hub.docker.com/r/tractusx/ssi-credential-data-deletion-app](https://hub.docker.com/r/tractusx/ssi-credential-data-deletion-app) Eclipse Tractus-X product(s) installed within the image: @@ -8,7 +8,7 @@ __Credential Expiry App__ - GitHub: https://github.com/eclipse-tractusx/ssi-credential-issuer - Project home: https://projects.eclipse.org/projects/automotive.tractusx -- Dockerfile: https://github.com/eclipse-tractusx/ssi-credential-issuer/blob/main/docker/Dockerfile-credential-expiry-app +- Dockerfile: https://github.com/eclipse-tractusx/ssi-credential-issuer/blob/main/docker/Dockerfile-credential-data-deletion-app - Project license: [Apache License, Version 2.0](https://github.com/eclipse-tractusx/ssi-credential-issuer/blob/main/LICENSE) __Used base images__ diff --git a/src/SsiCredentialIssuer.sln b/src/SsiCredentialIssuer.sln index 14dfa31d..e6bdaf4b 100644 --- a/src/SsiCredentialIssuer.sln +++ b/src/SsiCredentialIssuer.sln @@ -27,11 +27,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CredentialProcess.Library", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Portal.Service", "externalservices\Portal.Service\Portal.Service.csproj", "{8AF8FC7D-3448-422A-8739-0690AA700DAD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SsiCredentialIssuer.Expiry.App", "credentials\SsiCredentialIssuer.Expiry.App\SsiCredentialIssuer.Expiry.App.csproj", "{9F9FFBEE-4256-494F-BEF7-8856145D45EC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SsiCredentialIssuer.DataDeletion.App", "credentials\SsiCredentialIssuer.DataDeletion.App\SsiCredentialIssuer.DataDeletion.App.csproj", "{9F9FFBEE-4256-494F-BEF7-8856145D45EC}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{A2FC3E0F-5AFE-44FA-909B-B8016DD1EB44}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SsiCredentialIssuer.Expiry.App.Tests", "..\tests\credentials\SsiCredentialIssuer.Expiry.App.Tests\SsiCredentialIssuer.Expiry.App.Tests.csproj", "{FFB1423F-C41F-46A9-8D5D-115B3BC46682}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SsiCredentialIssuer.DataDeletion.App.Tests", "..\tests\credentials\SsiCredentialIssuer.DataDeletion.App.Tests\SsiCredentialIssuer.DataDeletion.App.Tests.csproj", "{FFB1423F-C41F-46A9-8D5D-115B3BC46682}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SsiCredentialIssuer.Service.Tests", "..\tests\issuer\SsiCredentialIssuer.Service.Tests\SsiCredentialIssuer.Service.Tests.csproj", "{D88007E0-603A-49B7-B4E4-AD255B06D252}" EndProject diff --git a/src/credentials/SsiCredentialIssuer.Expiry.App/ExpiryCheckService.cs b/src/credentials/SsiCredentialIssuer.DataDeletion.App/DataDeletionCheckService.cs similarity index 93% rename from src/credentials/SsiCredentialIssuer.Expiry.App/ExpiryCheckService.cs rename to src/credentials/SsiCredentialIssuer.DataDeletion.App/DataDeletionCheckService.cs index 88b38927..7e164622 100644 --- a/src/credentials/SsiCredentialIssuer.Expiry.App/ExpiryCheckService.cs +++ b/src/credentials/SsiCredentialIssuer.DataDeletion.App/DataDeletionCheckService.cs @@ -29,33 +29,33 @@ using Org.Eclipse.TractusX.SsiCredentialIssuer.DBAccess.Models; using Org.Eclipse.TractusX.SsiCredentialIssuer.DBAccess.Repositories; using Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Enums; -using Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App.DependencyInjection; +using Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App.DependencyInjection; using Org.Eclipse.TractusX.SsiCredentialIssuer.Portal.Service.Models; using Org.Eclipse.TractusX.SsiCredentialIssuer.Portal.Service.Services; using System.Text.Json; -namespace Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App; +namespace Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App; /// /// Service to delete the pending and inactive documents as well as the depending consents from the database /// -public class ExpiryCheckService +public class DataDeletionCheckService { private static readonly JsonSerializerOptions Options = new() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; private readonly IServiceScopeFactory _serviceScopeFactory; - private readonly ILogger _logger; - private readonly ExpiryCheckServiceSettings _settings; + private readonly ILogger _logger; + private readonly DataDeletionCheckServiceSettings _settings; /// - /// Creates a new instance of + /// Creates a new instance of /// /// access to the services /// the logger /// The options - public ExpiryCheckService( + public DataDeletionCheckService( IServiceScopeFactory serviceScopeFactory, - ILogger logger, - IOptions options) + ILogger logger, + IOptions options) { _serviceScopeFactory = serviceScopeFactory; _logger = logger; @@ -83,7 +83,7 @@ public async Task ExecuteAsync(CancellationToken stoppingToken) var now = dateTimeProvider.OffsetNow; var companySsiDetailsRepository = repositories.GetInstance(); var processStepRepository = repositories.GetInstance>(); - var inactiveVcsToDelete = now.AddDays(-(_settings.InactiveVcsToDeleteInWeeks * 7)); + var inactiveVcsToDelete = now.AddDays(-_settings.InactiveVcsToDeleteInDays); var expiredVcsToDelete = now.AddMonths(-_settings.ExpiredVcsToDeleteInMonth); var credentials = outerLoopRepositories.GetInstance() diff --git a/src/credentials/SsiCredentialIssuer.Expiry.App/DependencyInjection/ExpiryCheckServiceExtensions.cs b/src/credentials/SsiCredentialIssuer.DataDeletion.App/DependencyInjection/DataDeletionCheckServiceExtensions.cs similarity index 87% rename from src/credentials/SsiCredentialIssuer.Expiry.App/DependencyInjection/ExpiryCheckServiceExtensions.cs rename to src/credentials/SsiCredentialIssuer.DataDeletion.App/DependencyInjection/DataDeletionCheckServiceExtensions.cs index c8c9760c..aed19c38 100644 --- a/src/credentials/SsiCredentialIssuer.Expiry.App/DependencyInjection/ExpiryCheckServiceExtensions.cs +++ b/src/credentials/SsiCredentialIssuer.DataDeletion.App/DependencyInjection/DataDeletionCheckServiceExtensions.cs @@ -22,12 +22,12 @@ using Org.Eclipse.TractusX.Portal.Backend.Framework.DateTimeProvider; using Org.Eclipse.TractusX.Portal.Backend.Framework.Models.Validation; -namespace Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App.DependencyInjection; +namespace Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App.DependencyInjection; /// /// Extension method to register the expiry check service and dependent services /// -public static class ExpiryCheckServiceExtensions +public static class DataDeletionCheckServiceExtensions { /// /// Adds the expiry check service @@ -38,11 +38,11 @@ public static class ExpiryCheckServiceExtensions public static IServiceCollection AddExpiryCheckService(this IServiceCollection services, IConfigurationSection section) { services - .AddOptions() + .AddOptions() .Bind(section) .EnvironmentalValidation(section); services - .AddTransient() + .AddTransient() .AddTransient(); return services; } diff --git a/src/credentials/SsiCredentialIssuer.Expiry.App/DependencyInjection/ExpiryCheckServiceSettings.cs b/src/credentials/SsiCredentialIssuer.DataDeletion.App/DependencyInjection/DataDeletionCheckServiceSettings.cs similarity index 87% rename from src/credentials/SsiCredentialIssuer.Expiry.App/DependencyInjection/ExpiryCheckServiceSettings.cs rename to src/credentials/SsiCredentialIssuer.DataDeletion.App/DependencyInjection/DataDeletionCheckServiceSettings.cs index e544c53c..fe80dc27 100644 --- a/src/credentials/SsiCredentialIssuer.Expiry.App/DependencyInjection/ExpiryCheckServiceSettings.cs +++ b/src/credentials/SsiCredentialIssuer.DataDeletion.App/DependencyInjection/DataDeletionCheckServiceSettings.cs @@ -19,12 +19,12 @@ using System.ComponentModel.DataAnnotations; -namespace Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App.DependencyInjection; +namespace Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App.DependencyInjection; /// /// Settings for the ExpiryCheckService /// -public class ExpiryCheckServiceSettings +public class DataDeletionCheckServiceSettings { /// /// Vcs which are older than the given value will be deleted when expired @@ -36,5 +36,5 @@ public class ExpiryCheckServiceSettings /// Vcs which are older than the given value will be deleted when declined /// [Required] - public int InactiveVcsToDeleteInWeeks { get; init; } + public int InactiveVcsToDeleteInDays { get; init; } } diff --git a/src/credentials/SsiCredentialIssuer.Expiry.App/Program.cs b/src/credentials/SsiCredentialIssuer.DataDeletion.App/Program.cs similarity index 89% rename from src/credentials/SsiCredentialIssuer.Expiry.App/Program.cs rename to src/credentials/SsiCredentialIssuer.DataDeletion.App/Program.cs index fec4fdda..aa37bde2 100644 --- a/src/credentials/SsiCredentialIssuer.Expiry.App/Program.cs +++ b/src/credentials/SsiCredentialIssuer.DataDeletion.App/Program.cs @@ -22,9 +22,8 @@ using Org.Eclipse.TractusX.Portal.Backend.Framework.Logging; using Org.Eclipse.TractusX.Portal.Backend.Framework.Token; using Org.Eclipse.TractusX.SsiCredentialIssuer.DBAccess; -using Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Auditing.DependencyInjection; -using Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App; -using Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App.DependencyInjection; +using Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App; +using Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App.DependencyInjection; using Org.Eclipse.TractusX.SsiCredentialIssuer.Portal.Service.DependencyInjection; using Org.Eclipse.TractusX.SsiCredentialIssuer.Processes.ProcessIdentity; using Serilog; @@ -57,7 +56,7 @@ }; Log.Information("Start processing"); - var workerInstance = host.Services.GetRequiredService(); + var workerInstance = host.Services.GetRequiredService(); await workerInstance.ExecuteAsync(tokenSource.Token).ConfigureAwait(ConfigureAwaitOptions.None); Log.Information("Execution finished shutting down"); } diff --git a/src/credentials/SsiCredentialIssuer.Expiry.App/Properties/launchSettings.json b/src/credentials/SsiCredentialIssuer.DataDeletion.App/Properties/launchSettings.json similarity index 82% rename from src/credentials/SsiCredentialIssuer.Expiry.App/Properties/launchSettings.json rename to src/credentials/SsiCredentialIssuer.DataDeletion.App/Properties/launchSettings.json index 8480e0aa..eb668b6f 100644 --- a/src/credentials/SsiCredentialIssuer.Expiry.App/Properties/launchSettings.json +++ b/src/credentials/SsiCredentialIssuer.DataDeletion.App/Properties/launchSettings.json @@ -1,7 +1,7 @@ { "$schema": "http://json.schemastore.org/launchsettings.json", "profiles": { - "SsiCredentialIssuer.Expiry.App": { + "SsiCredentialIssuer.DataDeletion.App": { "commandName": "Project", "environmentVariables": { "DOTNET_ENVIRONMENT": "Development" diff --git a/src/credentials/SsiCredentialIssuer.Expiry.App/SsiCredentialIssuer.Expiry.App.csproj b/src/credentials/SsiCredentialIssuer.DataDeletion.App/SsiCredentialIssuer.DataDeletion.App.csproj similarity index 94% rename from src/credentials/SsiCredentialIssuer.Expiry.App/SsiCredentialIssuer.Expiry.App.csproj rename to src/credentials/SsiCredentialIssuer.DataDeletion.App/SsiCredentialIssuer.DataDeletion.App.csproj index 61b8d424..18549fd1 100644 --- a/src/credentials/SsiCredentialIssuer.Expiry.App/SsiCredentialIssuer.Expiry.App.csproj +++ b/src/credentials/SsiCredentialIssuer.DataDeletion.App/SsiCredentialIssuer.DataDeletion.App.csproj @@ -20,8 +20,8 @@ - Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App - Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App + Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App + Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App net9.0 enable enable diff --git a/src/credentials/SsiCredentialIssuer.Expiry.App/appsettings.json b/src/credentials/SsiCredentialIssuer.DataDeletion.App/appsettings.json similarity index 88% rename from src/credentials/SsiCredentialIssuer.Expiry.App/appsettings.json rename to src/credentials/SsiCredentialIssuer.DataDeletion.App/appsettings.json index ada86886..b1cb122a 100644 --- a/src/credentials/SsiCredentialIssuer.Expiry.App/appsettings.json +++ b/src/credentials/SsiCredentialIssuer.DataDeletion.App/appsettings.json @@ -17,7 +17,7 @@ "FromLogContext" ], "Properties": { - "Application": "Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App" + "Application": "Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App" } }, "ConnectionStrings": { @@ -25,7 +25,7 @@ }, "Expiry": { "ExpiredVcsToDeleteInMonth": 12, - "InactiveVcsToDeleteInWeeks": 12 + "InactiveVcsToDeleteInDays": 84 }, "ProcessIdentity": { "IdentityId": "" diff --git a/src/database/SsiCredentialIssuer.DbAccess/Repositories/CompanySsiDetailsRepository.cs b/src/database/SsiCredentialIssuer.DbAccess/Repositories/CompanySsiDetailsRepository.cs index 210d0bed..58d834cb 100644 --- a/src/database/SsiCredentialIssuer.DbAccess/Repositories/CompanySsiDetailsRepository.cs +++ b/src/database/SsiCredentialIssuer.DbAccess/Repositories/CompanySsiDetailsRepository.cs @@ -317,8 +317,18 @@ public IAsyncEnumerable GetExpiryData(DateTimeOffset now, .ToAsyncEnumerable(); } - public void RemoveSsiDetail(Guid companySsiDetailId, string bpnl, string userId) => + public void RemoveSsiDetail(Guid companySsiDetailId, string bpnl, string userId) + { + var assignments = context.CompanySsiDetailAssignedDocuments + .Where(x => x.CompanySsiDetailId == companySsiDetailId).ToList(); + + var documents = context.Documents.Where(document => assignments.Select(assign => assign.DocumentId).Contains(document.Id)).ToList(); + + context.CompanySsiDetailAssignedDocuments.RemoveRange(assignments); + context.Documents.RemoveRange(documents); + context.CompanySsiDetails.Remove(new CompanySsiDetail(companySsiDetailId, bpnl, default, default, bpnl, userId, DateTimeOffset.MinValue)); + } public void CreateProcessData(Guid companySsiDetailId, JsonDocument schema, VerifiedCredentialTypeKindId credentialTypeKindId, Action? setOptionalFields) { diff --git a/tests/credentials/SsiCredentialIssuer.Expiry.App.Tests/ExpiryCheckServiceTests.cs b/tests/credentials/SsiCredentialIssuer.DataDeletion.App.Tests/DataDeletionCheckServiceTests.cs similarity index 94% rename from tests/credentials/SsiCredentialIssuer.Expiry.App.Tests/ExpiryCheckServiceTests.cs rename to tests/credentials/SsiCredentialIssuer.DataDeletion.App.Tests/DataDeletionCheckServiceTests.cs index 6f9a102a..c1b87975 100644 --- a/tests/credentials/SsiCredentialIssuer.Expiry.App.Tests/ExpiryCheckServiceTests.cs +++ b/tests/credentials/SsiCredentialIssuer.DataDeletion.App.Tests/DataDeletionCheckServiceTests.cs @@ -31,29 +31,29 @@ using Org.Eclipse.TractusX.SsiCredentialIssuer.DBAccess.Repositories; using Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Entities; using Org.Eclipse.TractusX.SsiCredentialIssuer.Entities.Enums; -using Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App.DependencyInjection; +using Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App.DependencyInjection; using Org.Eclipse.TractusX.SsiCredentialIssuer.Portal.Service.Models; using Org.Eclipse.TractusX.SsiCredentialIssuer.Portal.Service.Services; using System.Runtime.CompilerServices; -namespace Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App.Tests; +namespace Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App.Tests; -public class ExpiryCheckServiceTests +public class DataDeletionCheckServiceTests { private readonly IFixture _fixture; - private readonly ExpiryCheckService _sut; + private readonly DataDeletionCheckService _sut; private readonly IDateTimeProvider _dateTimeProvider; private readonly IIssuerRepositories _issuerRepositories; private readonly IProcessStepRepository _processStepRepository; private readonly IPortalService _portalService; private readonly ICompanySsiDetailsRepository _companySsiDetailsRepository; - private readonly ExpiryCheckServiceSettings _settings; + private readonly DataDeletionCheckServiceSettings _settings; private readonly string Bpnl = "BPNL00000001TEST"; private static readonly string IssuerBpnl = "BPNL000001ISSUER"; - public ExpiryCheckServiceTests() + public DataDeletionCheckServiceTests() { _fixture = new Fixture().Customize(new AutoFakeItEasyCustomization { ConfigureMembers = true }); _fixture.Behaviors.OfType().ToList() @@ -81,12 +81,12 @@ public ExpiryCheckServiceTests() var serviceScopeFactory = _fixture.Create(); A.CallTo(() => serviceScopeFactory.CreateScope()).Returns(serviceScope); - _settings = new ExpiryCheckServiceSettings + _settings = new DataDeletionCheckServiceSettings { ExpiredVcsToDeleteInMonth = 12, - InactiveVcsToDeleteInWeeks = 8 + InactiveVcsToDeleteInDays = 56 }; - _sut = new ExpiryCheckService(serviceScopeFactory, _fixture.Create>(), Options.Create(_settings)); + _sut = new DataDeletionCheckService(serviceScopeFactory, _fixture.Create>(), Options.Create(_settings)); } [Fact] @@ -94,7 +94,7 @@ public async Task ExecuteAsync_WithInactiveAndEligibleForDeletion_RemovesEntry() { // Arrange var now = DateTimeOffset.UtcNow; - var inactiveVcsToDelete = now.AddDays(-(_settings.InactiveVcsToDeleteInWeeks * 7)); + var inactiveVcsToDelete = now.AddDays(-_settings.InactiveVcsToDeleteInDays); var credentialId = Guid.NewGuid(); var credentialScheduleData = _fixture.Build() .With(x => x.IsVcToDelete, true) diff --git a/tests/credentials/SsiCredentialIssuer.Expiry.App.Tests/GlobalUsings.cs b/tests/credentials/SsiCredentialIssuer.DataDeletion.App.Tests/GlobalUsings.cs similarity index 100% rename from tests/credentials/SsiCredentialIssuer.Expiry.App.Tests/GlobalUsings.cs rename to tests/credentials/SsiCredentialIssuer.DataDeletion.App.Tests/GlobalUsings.cs diff --git a/tests/credentials/SsiCredentialIssuer.Expiry.App.Tests/SsiCredentialIssuer.Expiry.App.Tests.csproj b/tests/credentials/SsiCredentialIssuer.DataDeletion.App.Tests/SsiCredentialIssuer.DataDeletion.App.Tests.csproj similarity index 82% rename from tests/credentials/SsiCredentialIssuer.Expiry.App.Tests/SsiCredentialIssuer.Expiry.App.Tests.csproj rename to tests/credentials/SsiCredentialIssuer.DataDeletion.App.Tests/SsiCredentialIssuer.DataDeletion.App.Tests.csproj index e1cf3d58..4d0e03e0 100644 --- a/tests/credentials/SsiCredentialIssuer.Expiry.App.Tests/SsiCredentialIssuer.Expiry.App.Tests.csproj +++ b/tests/credentials/SsiCredentialIssuer.DataDeletion.App.Tests/SsiCredentialIssuer.DataDeletion.App.Tests.csproj @@ -20,8 +20,8 @@ - Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App.Tests - Org.Eclipse.TractusX.SsiCredentialIssuer.Expiry.App.Tests + Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App.Tests + Org.Eclipse.TractusX.SsiCredentialIssuer.DataDeletion.App.Tests net9.0 enable enable @@ -40,8 +40,8 @@ - - + +