rename package (+schema etc.) credentials to accounts (#185)
Co-authored-by: Michael Hoennig <michael@hoennig.de> Reviewed-on: https://dev.hostsharing.net/hostsharing/hs.hsadmin.ng/pulls/185 Reviewed-by: Timotheus Pokorra <timotheus.pokorra@hostsharing.net>
This commit is contained in:
		| @@ -216,11 +216,11 @@ openapiProcessor { | ||||
|         targetDir(layout.buildDirectory.dir("generated/sources/openapi-javax").get().asFile.path) | ||||
|     } | ||||
|  | ||||
|     process("springCredentials") { | ||||
|     process("springAccounts") { | ||||
|         processorName("spring") | ||||
|         processor("io.openapiprocessor:openapi-processor-spring:2022.5") | ||||
|         apiPath(project.file("src/main/resources/api-definition/credentials/api-paths.yaml").path) | ||||
|         prop("mapping", project.file("src/main/resources/api-definition/credentials/api-mappings.yaml").path) | ||||
|         apiPath(project.file("src/main/resources/api-definition/accounts/api-paths.yaml").path) | ||||
|         prop("mapping", project.file("src/main/resources/api-definition/accounts/api-mappings.yaml").path) | ||||
|         prop("showWarnings", true) | ||||
|         prop("openApiNullable", true) | ||||
|         targetDir(layout.buildDirectory.dir("generated/sources/openapi-javax").get().asFile.path) | ||||
| @@ -245,7 +245,7 @@ val processSpring = tasks.register("processSpring") { | ||||
|         "processSpringHsOffice", | ||||
|         "processSpringHsBooking", | ||||
|         "processSpringHsHosting", | ||||
|         "processSpringCredentials" | ||||
|         "processSpringAccounts" | ||||
|     ) | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import jakarta.persistence.EntityManager; | ||||
| import jakarta.persistence.EntityNotFoundException; | ||||
| import net.hostsharing.hsadminng.config.MessageTranslator; | ||||
| import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource; | ||||
| import net.hostsharing.hsadminng.accounts.generated.api.v1.model.ContextResource; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import jakarta.persistence.Column; | ||||
| import jakarta.persistence.GeneratedValue; | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import jakarta.persistence.AttributeOverride; | ||||
| import jakarta.persistence.AttributeOverrides; | ||||
| @@ -24,7 +24,7 @@ import static net.hostsharing.hsadminng.rbac.generator.RbacSpec.WITHOUT_IMPLICIT | ||||
| import static net.hostsharing.hsadminng.rbac.generator.RbacSpec.rbacViewFor; | ||||
| 
 | ||||
| @Entity | ||||
| @Table(schema = "hs_credentials", name = "context") // TODO_impl: RBAC rules for _rv do not yet work properly | ||||
| @Table(schema = "hs_accounts", name = "context") // TODO_impl: RBAC rules for _rv do not yet work properly | ||||
| @SuperBuilder(toBuilder = true) | ||||
| @Getter | ||||
| @Setter | ||||
| @@ -50,6 +50,6 @@ public class HsCredentialsContextRbacEntity extends HsCredentialsContext { | ||||
| 
 | ||||
|     // TODO_impl: RBAC rules for _rv do not yet work properly (remove the X) | ||||
|     public static void mainX(String[] args) throws IOException { | ||||
|         rbacX().generateWithBaseFileName("9-hs-global/950-credentials/9513-hs-credentials-rbac"); | ||||
|         rbacX().generateWithBaseFileName("9-hs-global/950-accounts/9513-hs-credentials-rbac"); | ||||
|     } | ||||
| } | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import io.micrometer.core.annotation.Timed; | ||||
| import org.springframework.data.repository.Repository; | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import jakarta.persistence.AttributeOverride; | ||||
| import jakarta.persistence.AttributeOverrides; | ||||
| @@ -11,7 +11,7 @@ import lombok.Setter; | ||||
| import lombok.experimental.SuperBuilder; | ||||
| 
 | ||||
| @Entity | ||||
| @Table(schema = "hs_credentials", name = "context") | ||||
| @Table(schema = "hs_accounts", name = "context") | ||||
| @SuperBuilder(toBuilder = true) | ||||
| @Getter | ||||
| @Setter | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import io.micrometer.core.annotation.Timed; | ||||
| import org.springframework.data.repository.Repository; | ||||
| @@ -1,12 +1,12 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import io.micrometer.core.annotation.Timed; | ||||
| import net.hostsharing.hsadminng.config.NoSecurityRequirement; | ||||
| import net.hostsharing.hsadminng.context.Context; | ||||
| import net.hostsharing.hsadminng.credentials.generated.api.v1.api.ContextsApi; | ||||
| import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource; | ||||
| import net.hostsharing.hsadminng.accounts.generated.api.v1.api.ContextsApi; | ||||
| import net.hostsharing.hsadminng.accounts.generated.api.v1.model.ContextResource; | ||||
| import net.hostsharing.hsadminng.mapper.StrictMapper; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.http.ResponseEntity; | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import java.time.LocalDateTime; | ||||
| import java.time.ZoneOffset; | ||||
| @@ -10,11 +10,11 @@ import io.micrometer.core.annotation.Timed; | ||||
| import io.swagger.v3.oas.annotations.security.SecurityRequirement; | ||||
| import net.hostsharing.hsadminng.config.MessageTranslator; | ||||
| import net.hostsharing.hsadminng.context.Context; | ||||
| import net.hostsharing.hsadminng.credentials.generated.api.v1.api.CredentialsApi; | ||||
| import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsInsertResource; | ||||
| import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsPatchResource; | ||||
| import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsResource; | ||||
| import net.hostsharing.hsadminng.credentials.generated.api.v1.model.HsOfficePersonResource; | ||||
| import net.hostsharing.hsadminng.accounts.generated.api.v1.api.CredentialsApi; | ||||
| import net.hostsharing.hsadminng.accounts.generated.api.v1.model.CredentialsInsertResource; | ||||
| import net.hostsharing.hsadminng.accounts.generated.api.v1.model.CredentialsPatchResource; | ||||
| import net.hostsharing.hsadminng.accounts.generated.api.v1.model.CredentialsResource; | ||||
| import net.hostsharing.hsadminng.accounts.generated.api.v1.model.HsOfficePersonResource; | ||||
| import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonRbacRepository; | ||||
| import net.hostsharing.hsadminng.mapper.StrictMapper; | ||||
| import net.hostsharing.hsadminng.persistence.EntityManagerWrapper; | ||||
| @@ -118,7 +118,7 @@ public class HsCredentialsController implements CredentialsApi { | ||||
|         // return the new credentials as a resource | ||||
|         final var uri = | ||||
|                 MvcUriComponentsBuilder.fromController(getClass()) | ||||
|                         .path("/api/hs/credentials/credentials/{id}") | ||||
|                         .path("/api/hs/accounts/credentials/{id}") | ||||
|                         .buildAndExpand(newCredentialsEntity.getUuid()) | ||||
|                         .toUri(); | ||||
|         final var newCredentialsResource = mapper.map( | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import jakarta.persistence.*; | ||||
| import lombok.*; | ||||
| @@ -19,7 +19,7 @@ import static jakarta.persistence.CascadeType.REFRESH; | ||||
| import static net.hostsharing.hsadminng.repr.Stringify.stringify; | ||||
| 
 | ||||
| @Entity | ||||
| @Table(schema = "hs_credentials", name = "credentials") | ||||
| @Table(schema = "hs_accounts", name = "credentials") | ||||
| @Getter | ||||
| @Setter | ||||
| @Builder | ||||
| @@ -79,7 +79,7 @@ public class HsCredentialsEntity implements BaseEntity<HsCredentialsEntity>, Str | ||||
| 
 | ||||
|     @OneToMany(fetch = FetchType.LAZY, cascade = { MERGE, REFRESH }, orphanRemoval = true) | ||||
|     @JoinTable( | ||||
|             name = "context_mapping", schema = "hs_credentials", | ||||
|             name = "context_mapping", schema = "hs_accounts", | ||||
|             joinColumns = @JoinColumn(name = "credentials_uuid", referencedColumnName = "uuid"), | ||||
|             inverseJoinColumns = @JoinColumn(name = "context_uuid", referencedColumnName = "uuid") | ||||
|     ) | ||||
| @@ -1,6 +1,6 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsPatchResource; | ||||
| import net.hostsharing.hsadminng.accounts.generated.api.v1.model.CredentialsPatchResource; | ||||
| import net.hostsharing.hsadminng.mapper.EntityPatcher; | ||||
| import net.hostsharing.hsadminng.mapper.OptionalFromJson; | ||||
| 
 | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import io.micrometer.core.annotation.Timed; | ||||
| import net.hostsharing.hsadminng.hs.office.person.HsOfficePerson; | ||||
| @@ -1,7 +1,7 @@ | ||||
| openapi-processor-mapping: v2 | ||||
| 
 | ||||
| options: | ||||
|     package-name: net.hostsharing.hsadminng.credentials.generated.api.v1 | ||||
|     package-name: net.hostsharing.hsadminng.accounts.generated.api.v1 | ||||
|     model-name-suffix: Resource | ||||
|     bean-validation: true | ||||
| 
 | ||||
| @@ -13,5 +13,5 @@ map: | ||||
|         - type: string:uuid => java.util.UUID | ||||
| 
 | ||||
|     paths: | ||||
|         /api/hs/credentials/credentials/{credentialsUuid}: | ||||
|         /api/hs/accounts/credentials/{credentialsUuid}: | ||||
|             null: org.openapitools.jackson.nullable.JsonNullable | ||||
| @@ -10,18 +10,18 @@ paths: | ||||
| 
 | ||||
|   # Contexts | ||||
| 
 | ||||
|   /api/hs/credentials/contexts: | ||||
|   /api/hs/accounts/contexts: | ||||
|     $ref: "contexts.yaml" | ||||
| 
 | ||||
| 
 | ||||
|   # Credentials | ||||
| 
 | ||||
|   /api/hs/credentials/credentials/{credentialsUuid}/used: | ||||
|   /api/hs/accounts/credentials/{credentialsUuid}/used: | ||||
|     $ref: "credentials-with-uuid-used.yaml" | ||||
| 
 | ||||
|   /api/hs/credentials/credentials/{credentialsUuid}: | ||||
|   /api/hs/accounts/credentials/{credentialsUuid}: | ||||
|     $ref: "credentials-with-uuid.yaml" | ||||
| 
 | ||||
|   /api/hs/credentials/credentials: | ||||
|   /api/hs/accounts/credentials: | ||||
|     $ref: "credentials.yaml" | ||||
| 
 | ||||
| @@ -4,5 +4,5 @@ | ||||
| -- ============================================================================ | ||||
| --changeset michael.hoennig:hs-credentials-SCHEMA endDelimiter:--// | ||||
| -- ---------------------------------------------------------------------------- | ||||
| CREATE SCHEMA hs_credentials; | ||||
| CREATE SCHEMA hs_accounts; | ||||
| --// | ||||
| @@ -5,7 +5,7 @@ | ||||
| --changeset michael.hoennig:hs-credentials-CREDENTIALS-TABLE endDelimiter:--// | ||||
| -- ---------------------------------------------------------------------------- | ||||
| 
 | ||||
| create table hs_credentials.credentials | ||||
| create table hs_accounts.credentials | ||||
| ( | ||||
|     uuid             uuid PRIMARY KEY references rbac.subject (uuid) initially deferred, | ||||
|     version          int not null default 0, | ||||
| @@ -30,7 +30,7 @@ create table hs_credentials.credentials | ||||
| --changeset michael.hoennig:hs-credentials-context-CONTEXT-TABLE endDelimiter:--// | ||||
| -- ---------------------------------------------------------------------------- | ||||
| 
 | ||||
| create table hs_credentials.context | ||||
| create table hs_accounts.context | ||||
| ( | ||||
|     uuid            uuid PRIMARY KEY, | ||||
|     version         int not null default 0, | ||||
| @@ -46,47 +46,47 @@ create table hs_credentials.context | ||||
| -- ============================================================================ | ||||
| --changeset michael.hoennig:hs-credentials-CONTEXT-IMMUTABLE-TRIGGER endDelimiter:--// | ||||
| -- ---------------------------------------------------------------------------- | ||||
| CREATE OR REPLACE FUNCTION hs_credentials.prevent_context_update() | ||||
| CREATE OR REPLACE FUNCTION hs_accounts.prevent_context_update() | ||||
| RETURNS TRIGGER AS $$ | ||||
| BEGIN | ||||
|     RAISE EXCEPTION 'Updates to hs_credentials.context are not allowed.'; | ||||
|     RAISE EXCEPTION 'Updates to hs_accounts.context are not allowed.'; | ||||
| END; | ||||
| $$ LANGUAGE plpgsql; | ||||
| 
 | ||||
| -- Trigger to enforce immutability | ||||
| CREATE TRIGGER context_immutable_trigger | ||||
| BEFORE UPDATE ON hs_credentials.context | ||||
| FOR EACH ROW EXECUTE FUNCTION hs_credentials.prevent_context_update(); | ||||
| BEFORE UPDATE ON hs_accounts.context | ||||
| FOR EACH ROW EXECUTE FUNCTION hs_accounts.prevent_context_update(); | ||||
| --// | ||||
| 
 | ||||
| 
 | ||||
| -- ============================================================================ | ||||
| --changeset michael.hoennig:hs_credentials-CONTEXT-MAPPING endDelimiter:--// | ||||
| --changeset michael.hoennig:hs_accounts-CONTEXT-MAPPING endDelimiter:--// | ||||
| -- ---------------------------------------------------------------------------- | ||||
| 
 | ||||
| create table hs_credentials.context_mapping | ||||
| create table hs_accounts.context_mapping | ||||
| ( | ||||
|     uuid                    uuid PRIMARY KEY DEFAULT uuid_generate_v4(), | ||||
|     credentials_uuid        uuid references hs_credentials.credentials(uuid) ON DELETE CASCADE, | ||||
|     context_uuid            uuid references hs_credentials.context(uuid) ON DELETE RESTRICT | ||||
|     credentials_uuid        uuid references hs_accounts.credentials(uuid) ON DELETE CASCADE, | ||||
|     context_uuid            uuid references hs_accounts.context(uuid) ON DELETE RESTRICT | ||||
| ); | ||||
| --// | ||||
| 
 | ||||
| 
 | ||||
| -- ============================================================================ | ||||
| --changeset michael.hoennig:hs-hs_credentials-JOURNALS endDelimiter:--// | ||||
| --changeset michael.hoennig:hs-hs_accounts-JOURNALS endDelimiter:--// | ||||
| -- ---------------------------------------------------------------------------- | ||||
| 
 | ||||
| call base.create_journal('hs_credentials.context_mapping'); | ||||
| call base.create_journal('hs_credentials.context'); | ||||
| call base.create_journal('hs_credentials.credentials'); | ||||
| call base.create_journal('hs_accounts.context_mapping'); | ||||
| call base.create_journal('hs_accounts.context'); | ||||
| call base.create_journal('hs_accounts.credentials'); | ||||
| --// | ||||
| 
 | ||||
| 
 | ||||
| -- ============================================================================ | ||||
| --changeset michael.hoennig:hs_credentials-HISTORICIZATION endDelimiter:--// | ||||
| --changeset michael.hoennig:hs_accounts-HISTORICIZATION endDelimiter:--// | ||||
| -- ---------------------------------------------------------------------------- | ||||
| call base.tx_create_historicization('hs_credentials.context_mapping'); | ||||
| call base.tx_create_historicization('hs_credentials.context'); | ||||
| call base.tx_create_historicization('hs_credentials.credentials'); | ||||
| call base.tx_create_historicization('hs_accounts.context_mapping'); | ||||
| call base.tx_create_historicization('hs_accounts.context'); | ||||
| call base.tx_create_historicization('hs_accounts.credentials'); | ||||
| --// | ||||
| @@ -2,7 +2,7 @@ | ||||
| 
 | ||||
| 
 | ||||
| -- ============================================================================ | ||||
| --changeset michael.hoennig:hs_credentials-credentials-TEST-DATA context:!without-test-data endDelimiter:--// | ||||
| --changeset michael.hoennig:hs_accounts-credentials-TEST-DATA context:!without-test-data endDelimiter:--// | ||||
| -- ---------------------------------------------------------------------------- | ||||
| 
 | ||||
| do language plpgsql $$ | ||||
| @@ -13,9 +13,9 @@ declare | ||||
|     superuserFranSubjectUuid uuid; | ||||
|     personFranUuid uuid; | ||||
| 
 | ||||
|     context_HSADMIN_prod    hs_credentials.context; | ||||
|     context_SSH_internal    hs_credentials.context; | ||||
|     context_MATRIX_internal hs_credentials.context; | ||||
|     context_HSADMIN_prod    hs_accounts.context; | ||||
|     context_SSH_internal    hs_accounts.context; | ||||
|     context_MATRIX_internal hs_accounts.context; | ||||
| 
 | ||||
| begin | ||||
|     call base.defineContext('creating booking-project test-data', null, 'superuser-alex@hostsharing.net', 'rbac.global#global:ADMIN'); | ||||
| @@ -26,13 +26,13 @@ begin | ||||
|     personFranUuid = (SELECT uuid FROM hs_office.person WHERE givenName='Fran'); | ||||
| 
 | ||||
|     -- Add test contexts | ||||
|     INSERT INTO hs_credentials.context (uuid, type, qualifier) VALUES | ||||
|     INSERT INTO hs_accounts.context (uuid, type, qualifier) VALUES | ||||
|         ('11111111-1111-1111-1111-111111111111', 'HSADMIN', 'prod') | ||||
|         RETURNING * INTO context_HSADMIN_prod; | ||||
|     INSERT INTO hs_credentials.context (uuid, type, qualifier) VALUES | ||||
|     INSERT INTO hs_accounts.context (uuid, type, qualifier) VALUES | ||||
|         ('22222222-2222-2222-2222-222222222222', 'SSH', 'internal') | ||||
|            RETURNING * INTO context_SSH_internal; | ||||
|     INSERT INTO hs_credentials.context (uuid, type, qualifier) VALUES | ||||
|     INSERT INTO hs_accounts.context (uuid, type, qualifier) VALUES | ||||
|         ('33333333-3333-3333-3333-333333333333', 'MATRIX', 'internal') | ||||
|            RETURNING * INTO context_MATRIX_internal; | ||||
| 
 | ||||
| @@ -47,16 +47,16 @@ begin | ||||
| --     call rbac.grantPermissionToRole( | ||||
| --         rbac.createPermission(context_MATRIX_internal.uuid, 'SELECT'), | ||||
| --         rbac.global_ADMIN()); | ||||
| --     call rbac.grantRoleToRole(hs_credentials.context_REFERRER(context_SSH_internal), rbac.global_ADMIN()); | ||||
| --     call rbac.grantRoleToRole(hs_credentials.context_REFERRER(context_MATRIX_internal), rbac.global_ADMIN()); | ||||
| --     call rbac.grantRoleToRole(hs_accounts.context_REFERRER(context_SSH_internal), rbac.global_ADMIN()); | ||||
| --     call rbac.grantRoleToRole(hs_accounts.context_REFERRER(context_MATRIX_internal), rbac.global_ADMIN()); | ||||
| 
 | ||||
|     -- Add test credentials (linking to assumed rbac.subject UUIDs) | ||||
|     INSERT INTO hs_credentials.credentials (uuid, version, person_uuid, active, global_uid, global_gid, onboarding_token, totp_secret, phone_password, email_address, sms_number) VALUES | ||||
|     INSERT INTO hs_accounts.credentials (uuid, version, person_uuid, active, global_uid, global_gid, onboarding_token, totp_secret, phone_password, email_address, sms_number) VALUES | ||||
|         ( superuserAlexSubjectUuid, 0, personAlexUuid, true, 1001, 1001, 'token-abc', 'otp-secret-1', 'phone-pw-1', 'alex@example.com', '111-222-3333'), | ||||
|         ( superuserFranSubjectUuid, 0, personFranUuid, true, 1002, 1002, 'token-def', 'otp-secret-2', 'phone-pw-2', 'fran@example.com', '444-555-6666'); | ||||
| 
 | ||||
|     -- Map credentials to contexts | ||||
|     INSERT INTO hs_credentials.context_mapping (credentials_uuid, context_uuid) VALUES | ||||
|     INSERT INTO hs_accounts.context_mapping (credentials_uuid, context_uuid) VALUES | ||||
|         (superuserAlexSubjectUuid, '11111111-1111-1111-1111-111111111111'), -- HSADMIN context | ||||
|         (superuserFranSubjectUuid, '11111111-1111-1111-1111-111111111111'), -- HSADMIN context | ||||
|         (superuserAlexSubjectUuid, '22222222-2222-2222-2222-222222222222'), -- SSH context | ||||
| @@ -103,7 +103,7 @@ databaseChangeLog: | ||||
|         file: db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data.sql | ||||
|         context: "!without-test-data" | ||||
|     - include: | ||||
|         file: db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data-for-credentials.sql | ||||
|         file: db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data-for-accounts.sql | ||||
|         context: "!without-test-data" | ||||
|     - include: | ||||
|         file: db/changelog/5-hs-office/503-relation/5030-hs-office-relation.sql | ||||
| @@ -218,16 +218,16 @@ databaseChangeLog: | ||||
|         context: "!only-prod-schema" | ||||
|  | ||||
|     - include: | ||||
|           file: db/changelog/9-hs-global/950-credentials/9500-hs-credentials-schema.sql | ||||
|           file: db/changelog/9-hs-global/950-accounts/9500-hs-accounts-schema.sql | ||||
|           context: "!only-prod-schema" | ||||
|     - include: | ||||
|           file: db/changelog/9-hs-global/950-credentials/9510-hs-credentials.sql | ||||
|           file: db/changelog/9-hs-global/950-accounts/9510-hs-accounts.sql | ||||
|           context: "!only-prod-schema" | ||||
|     #    TODO_impl: RBAC rules for _rv do not yet work properly | ||||
|     #    - include: | ||||
|     #          file: db/changelog/9-hs-global/950-credentials/9513-hs-credentials-rbac.sql | ||||
|     #          file: db/changelog/9-hs-global/950-accounts/9513-hs-accounts-context-rbac.sql | ||||
|     - include: | ||||
|           file: db/changelog/9-hs-global/950-credentials/9519-hs-credentials-test-data.sql | ||||
|           file: db/changelog/9-hs-global/950-accounts/9519-hs-accounts-test-data.sql | ||||
|           context: "!only-prod-schema and !without-test-data" | ||||
|  | ||||
|     - include: | ||||
|   | ||||
| @@ -49,8 +49,8 @@ public class ArchitectureTest { | ||||
|                     "..test.pac", | ||||
|                     "..test.dom", | ||||
|                     "..context", | ||||
|                     "..credentials", | ||||
|                     "..credentials.scenarios", | ||||
|                     "..accounts", | ||||
|                     "..accounts.scenarios", | ||||
|                     "..hash", | ||||
|                     "..lambda", | ||||
|                     "..journal", | ||||
| @@ -176,7 +176,7 @@ public class ArchitectureTest { | ||||
|                     "..hs.office.(*)..", | ||||
|                     "..hs.booking.(*)..", | ||||
|                     "..hs.hosting.(*)..", | ||||
|                     "..credentials..", | ||||
|                     "..hs.accounts..", | ||||
|                     "..hs.scenarios", | ||||
|                     "..hs.migration", | ||||
|                     "..rbacgrant" // TODO.test: just because of RbacGrantsDiagramServiceIntegrationTest | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import org.junit.jupiter.api.Test; | ||||
| 
 | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import net.hostsharing.hsadminng.context.Context; | ||||
| import net.hostsharing.hsadminng.rbac.context.ContextBasedTest; | ||||
| @@ -162,6 +162,6 @@ class HsCredentialsContextRbacRepositoryIntegrationTest extends ContextBasedTest | ||||
|         assertThat(exception) | ||||
|             .isInstanceOf(PersistenceException.class) | ||||
|             .hasCauseInstanceOf(PSQLException.class) | ||||
|             .hasMessageContaining("ERROR: Updates to hs_credentials.context are not allowed."); | ||||
|             .hasMessageContaining("ERROR: Updates to hs_accounts.context are not allowed."); | ||||
|     } | ||||
| } | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import org.junit.jupiter.api.Test; | ||||
| 
 | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import net.hostsharing.hsadminng.context.Context; | ||||
| import net.hostsharing.hsadminng.rbac.context.ContextBasedTest; | ||||
| @@ -44,7 +44,7 @@ class HsCredentialsContextRealRepositoryIntegrationTest extends ContextBasedTest | ||||
|     @Test | ||||
|     public void historizationIsAvailable() { | ||||
|         // given | ||||
|         final String nativeQuerySql = "select * from hs_credentials.context_hv"; | ||||
|         final String nativeQuerySql = "select * from hs_accounts.context_hv"; | ||||
| 
 | ||||
|         // when | ||||
|         historicalContext(Timestamp.from(ZonedDateTime.now().minusDays(1).toInstant())); | ||||
| @@ -52,7 +52,7 @@ class HsCredentialsContextRealRepositoryIntegrationTest extends ContextBasedTest | ||||
|         final var rowsBefore = query.getResultList(); | ||||
| 
 | ||||
|         // then | ||||
|         assertThat(rowsBefore).as("hs_credentials.context_hv only contain no rows for a timestamp before test data creation").hasSize(0); | ||||
|         assertThat(rowsBefore).as("hs_accounts.context_hv only contain no rows for a timestamp before test data creation").hasSize(0); | ||||
| 
 | ||||
|         // and when | ||||
|         historicalContext(Timestamp.from(ZonedDateTime.now().toInstant())); | ||||
| @@ -60,7 +60,7 @@ class HsCredentialsContextRealRepositoryIntegrationTest extends ContextBasedTest | ||||
|         final var rowsAfter = query.getResultList(); | ||||
| 
 | ||||
|         // then | ||||
|         assertThat(rowsAfter).as("hs_credentials.context_hv should now contain the test-data rows for the current timestamp").hasSize(3); | ||||
|         assertThat(rowsAfter).as("hs_accounts.context_hv should now contain the test-data rows for the current timestamp").hasSize(3); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
| @@ -172,6 +172,6 @@ class HsCredentialsContextRealRepositoryIntegrationTest extends ContextBasedTest | ||||
|         assertThat(exception) | ||||
|             .isInstanceOf(PersistenceException.class) | ||||
|             .hasCauseInstanceOf(PSQLException.class) | ||||
|             .hasMessageContaining("ERROR: Updates to hs_credentials.context are not allowed."); | ||||
|             .hasMessageContaining("ERROR: Updates to hs_accounts.context are not allowed."); | ||||
|     } | ||||
| } | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import static net.hostsharing.hsadminng.test.JsonMatcher.lenientlyEquals; | ||||
| import static org.mockito.ArgumentMatchers.any; | ||||
| @@ -97,7 +97,7 @@ class HsCredentialsContextsControllerRestTest { | ||||
| 
 | ||||
|         // when | ||||
|         mockMvc.perform(MockMvcRequestBuilders | ||||
|                 .get("/api/hs/credentials/contexts") | ||||
|                 .get("/api/hs/accounts/contexts") | ||||
|                 .header("Authorization", "Bearer superuser-alex@hostsharing.net") | ||||
|                 .accept(MediaType.APPLICATION_JSON)) | ||||
|                 .andDo(print()) | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import net.hostsharing.hsadminng.config.DisableSecurityConfig; | ||||
| import net.hostsharing.hsadminng.config.JsonObjectMapperConfiguration; | ||||
| @@ -97,7 +97,7 @@ class HsCredentialsControllerRestTest { | ||||
| 
 | ||||
|         // when | ||||
|         mockMvc.perform(MockMvcRequestBuilders | ||||
|                         .post("/api/hs/credentials/credentials/%{credentialsUuid}/used" | ||||
|                         .post("/api/hs/accounts/credentials/%{credentialsUuid}/used" | ||||
|                                 .replace("%{credentialsUuid}", givenCredentialsUuid.toString())) | ||||
|                         .header("Authorization", "Bearer superuser-alex@hostsharing.net") | ||||
|                         .accept(MediaType.APPLICATION_JSON)) | ||||
| @@ -1,8 +1,8 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import net.hostsharing.hsadminng.config.MessageTranslator; | ||||
| import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource; | ||||
| import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsPatchResource; | ||||
| import net.hostsharing.hsadminng.accounts.generated.api.v1.model.ContextResource; | ||||
| import net.hostsharing.hsadminng.accounts.generated.api.v1.model.CredentialsPatchResource; | ||||
| import net.hostsharing.hsadminng.rbac.test.PatchUnitTestBase; | ||||
| import org.junit.jupiter.api.BeforeEach; | ||||
| import org.junit.jupiter.api.TestInstance; | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials; | ||||
| package net.hostsharing.hsadminng.hs.accounts; | ||||
| 
 | ||||
| import net.hostsharing.hsadminng.context.Context; | ||||
| import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonRbacEntity; | ||||
| @@ -66,7 +66,7 @@ class HsCredentialsRepositoryIntegrationTest extends ContextBasedTest { | ||||
|     @Test | ||||
|     public void historizationIsAvailable() { | ||||
|         // given | ||||
|         final String nativeQuerySql = "select * from hs_credentials.credentials_hv"; | ||||
|         final String nativeQuerySql = "select * from hs_accounts.credentials_hv"; | ||||
| 
 | ||||
|         // when | ||||
|         historicalContext(Timestamp.from(ZonedDateTime.now().minusDays(1).toInstant())); | ||||
| @@ -74,7 +74,7 @@ class HsCredentialsRepositoryIntegrationTest extends ContextBasedTest { | ||||
|         final var rowsBefore = query.getResultList(); | ||||
| 
 | ||||
|         // then | ||||
|         assertThat(rowsBefore).as("hs_credentials.credentials_hv only contain no rows for a timestamp before test data creation").hasSize(0); | ||||
|         assertThat(rowsBefore).as("hs_accounts.credentials_hv only contain no rows for a timestamp before test data creation").hasSize(0); | ||||
| 
 | ||||
|         // and when | ||||
|         historicalContext(Timestamp.from(ZonedDateTime.now().toInstant())); | ||||
| @@ -82,7 +82,7 @@ class HsCredentialsRepositoryIntegrationTest extends ContextBasedTest { | ||||
|         final var rowsAfter = query.getResultList(); | ||||
| 
 | ||||
|         // then | ||||
|         assertThat(rowsAfter).as("hs_credentials.credentials_hv should now contain the test-data rows for the current timestamp").hasSize(2); | ||||
|         assertThat(rowsAfter).as("hs_accounts.credentials_hv should now contain the test-data rows for the current timestamp").hasSize(2); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials.scenarios; | ||||
| package net.hostsharing.hsadminng.hs.accounts.scenarios; | ||||
| 
 | ||||
| import io.restassured.http.ContentType; | ||||
| import net.hostsharing.hsadminng.hs.scenarios.ScenarioTest; | ||||
| @@ -28,11 +28,11 @@ public class CreateCredentials extends UseCase<CreateCredentials> { | ||||
| 
 | ||||
| 
 | ||||
|         obtain("CredentialsContexts", () -> | ||||
|                 httpGet("/api/hs/credentials/contexts").expecting(OK).expecting(JSON) | ||||
|                 httpGet("/api/hs/accounts/contexts").expecting(OK).expecting(JSON) | ||||
|         ); | ||||
| 
 | ||||
|         return obtain("newCredentials", () -> | ||||
|             httpPost("/api/hs/credentials/credentials", usingJsonBody(""" | ||||
|             httpPost("/api/hs/accounts/credentials", usingJsonBody(""" | ||||
|                 { | ||||
|                      "person.uuid": ${Person: %{personGivenName} %{personFamilyName}}, | ||||
|                      "nickname": ${nickname}, | ||||
| @@ -53,7 +53,7 @@ public class CreateCredentials extends UseCase<CreateCredentials> { | ||||
|     protected void verify(final UseCase<CreateCredentials>.HttpResponse response) { | ||||
|         verify( | ||||
|                 "Verify the New Credentials", | ||||
|                 () -> httpGet("/api/hs/credentials/credentials/%{newCredentials}") | ||||
|                 () -> httpGet("/api/hs/accounts/credentials/%{newCredentials}") | ||||
|                         .expecting(OK).expecting(JSON), | ||||
|                 path("uuid").contains("%{newCredentials}"), | ||||
|                 path("nickname").contains("%{nickname}"), | ||||
| @@ -1,4 +1,4 @@ | ||||
| package net.hostsharing.hsadminng.credentials.scenarios; | ||||
| package net.hostsharing.hsadminng.hs.accounts.scenarios; | ||||
| 
 | ||||
| import lombok.SneakyThrows; | ||||
| import net.hostsharing.hsadminng.HsadminNgApplication; | ||||
| @@ -12750,7 +12750,7 @@ INSERT INTO public.databasechangelog (id, author, filename, dateexecuted, ordere | ||||
| INSERT INTO public.databasechangelog (id, author, filename, dateexecuted, orderexecuted, exectype, md5sum, description, comments, tag, liquibase, contexts, labels, deployment_id) VALUES ('rbactest-domain-rbac-update-trigger', 'RolesGrantsAndPermissionsGenerator', 'db/changelog/2-rbactest/203-rbactest-domain/2033-rbactest-domain-rbac.sql', '2025-06-06 10:23:06.53273', 309, 'RERAN', '9:4d2cdd1bc08df6985622d0c5953bf4ba', 'sql', '', NULL, '4.29.2', '!without-test-data', NULL, '9198184942'); | ||||
| INSERT INTO public.databasechangelog (id, author, filename, dateexecuted, orderexecuted, exectype, md5sum, description, comments, tag, liquibase, contexts, labels, deployment_id) VALUES ('hs-office-contact-rbac-insert-trigger', 'RolesGrantsAndPermissionsGenerator', 'db/changelog/5-hs-office/501-contact/5013-hs-office-contact-rbac.sql', '2025-06-06 10:23:06.581665', 310, 'RERAN', '9:b29cf6087a2225d235637a187b5946c2', 'sql', '', NULL, '4.29.2', NULL, NULL, '9198184942'); | ||||
| INSERT INTO public.databasechangelog (id, author, filename, dateexecuted, orderexecuted, exectype, md5sum, description, comments, tag, liquibase, contexts, labels, deployment_id) VALUES ('hs-office-person-rbac-insert-trigger', 'RolesGrantsAndPermissionsGenerator', 'db/changelog/5-hs-office/502-person/5023-hs-office-person-rbac.sql', '2025-06-06 10:23:06.611557', 311, 'RERAN', '9:9adfbff372bce3de87410eb7582869f2', 'sql', '', NULL, '4.29.2', NULL, NULL, '9198184942'); | ||||
| INSERT INTO public.databasechangelog (id, author, filename, dateexecuted, orderexecuted, exectype, md5sum, description, comments, tag, liquibase, contexts, labels, deployment_id) VALUES ('hs-office-person-TEST-DATA-GENERATION-FOR-CREDENTIALS', 'michael.hoennig', 'db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data-for-credentials.sql', '2025-06-06 10:23:06.727793', 312, 'EXECUTED', '9:cf05c4705d539d4ea7b0199921f8cc78', 'sql', '', NULL, '4.29.2', '!without-test-data AND !without-test-data', NULL, '9198184942'); | ||||
| INSERT INTO public.databasechangelog (id, author, filename, dateexecuted, orderexecuted, exectype, md5sum, description, comments, tag, liquibase, contexts, labels, deployment_id) VALUES ('hs-office-person-TEST-DATA-GENERATION-FOR-CREDENTIALS', 'michael.hoennig', 'db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data-for-accounts.sql', '2025-06-06 10:23:06.727793', 312, 'EXECUTED', '9:cf05c4705d539d4ea7b0199921f8cc78', 'sql', '', NULL, '4.29.2', '!without-test-data AND !without-test-data', NULL, '9198184942'); | ||||
| INSERT INTO public.databasechangelog (id, author, filename, dateexecuted, orderexecuted, exectype, md5sum, description, comments, tag, liquibase, contexts, labels, deployment_id) VALUES ('hs-office-relation-debitor-anchor-CONSTRAINT-BY-TRIGGER', 'marc.sandlus', 'db/changelog/5-hs-office/503-relation/5030-hs-office-relation.sql', '2025-06-06 10:23:06.759158', 313, 'EXECUTED', '9:0623a018f7494b53f87b01d88bc3fa41', 'sql', '', NULL, '4.29.2', NULL, NULL, '9198184942'); | ||||
| INSERT INTO public.databasechangelog (id, author, filename, dateexecuted, orderexecuted, exectype, md5sum, description, comments, tag, liquibase, contexts, labels, deployment_id) VALUES ('hs-office-relation-rbac-insert-trigger', 'RolesGrantsAndPermissionsGenerator', 'db/changelog/5-hs-office/503-relation/5033-hs-office-relation-rbac.sql', '2025-06-06 10:23:06.7945', 314, 'RERAN', '9:6fc1a046dcd803edfb0ce77cd127b576', 'sql', '', NULL, '4.29.2', NULL, NULL, '9198184942'); | ||||
| INSERT INTO public.databasechangelog (id, author, filename, dateexecuted, orderexecuted, exectype, md5sum, description, comments, tag, liquibase, contexts, labels, deployment_id) VALUES ('hs-office-relation-rbac-update-trigger', 'RolesGrantsAndPermissionsGenerator', 'db/changelog/5-hs-office/503-relation/5033-hs-office-relation-rbac.sql', '2025-06-06 10:23:06.835025', 315, 'RERAN', '9:6737dfa739a4b9036f3e9e8224019276', 'sql', '', NULL, '4.29.2', NULL, NULL, '9198184942'); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user