Commit bca0e962 authored by Labros Papadopoulos's avatar Labros Papadopoulos
Browse files

fix: add unit tests for db migration

parent bd2c9289
Loading
Loading
Loading
Loading
Loading
+3 −0
Changes for src/main/resources/application.properties: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -157,3 +157,6 @@ quarkus.flyway.migrate-at-start=true
quarkus.flyway.baseline-on-migrate=true
quarkus.flyway.baseline-version=1.0.0
quarkus.flyway.baseline-description=Initial state before Flyway

# Force Flyway to execute both main schema AND test mock data
%test.quarkus.flyway.locations=db/migration,db/migration-test
 No newline at end of file
+39 −0
Changes for src/test/java/org/etsi/osl/hypo/api/peering/database/DatabaseSchemaTest.java: 39 added lines, 0 removed lines.
Original line number Diff line number Diff line
package org.etsi.osl.hypo.api.peering.database;

import static org.assertj.core.api.Assertions.assertThat;

import io.quarkus.test.junit.QuarkusTest;
import jakarta.inject.Inject;
import jakarta.transaction.Transactional;
import java.util.Optional;
import org.etsi.osl.hypo.api.peering.entity.OssClientData;
import org.etsi.osl.hypo.api.peering.repository.OssClientDataRepository;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;

@QuarkusTest
@Order(1)
class DatabaseSchemaTest {

    @Inject OssClientDataRepository ossClientDataRepository;

    @Test
    @Transactional
    void testOssClientDataRepository() {
        Optional<OssClientData> optionalOssClientData = ossClientDataRepository.findByIdOptional(1L);
        assertThat(optionalOssClientData).isNotEmpty();
        OssClientData ossClientData = optionalOssClientData.get();
        assertThat(ossClientData.getOauth2ClientId()).isEqualTo("alpha-client-id");
        assertThat(ossClientData.getName()).isEqualTo("oss-alpha");
        assertThat(ossClientData.getClientRegistrationId()).isEqualTo("oss-alpha-registration");
        assertThat(ossClientData.getOrganizationId()).isEqualTo("org-001");
        assertThat(ossClientData.getBaseUrl()).isEqualTo("https://oss-alpha.example.com");
        assertThat(ossClientData.getOauth2ClientSecret()).isEqualTo("alpha-client-secret");
        assertThat(ossClientData.getOauth2TokenUri())
                .isEqualTo("https://auth.alpha.example.com/oauth2/token");
        assertThat(ossClientData.getOauth2Scopes()).isEqualTo("read write");
        assertThat(ossClientData.getHealthCheckCounter()).isZero();
        assertThat(ossClientData.getPeeredSpecs()).containsEntry("peer-spec-1", "Peer Inventory API");
        assertThat(ossClientData.getServiceSpecs()).containsEntry("svc-spec-1", "Service Catalog API");
    }
}
+28 −0
Changes for src/test/java/org/etsi/osl/hypo/api/peering/database/FlywayValidationTest.java: 28 added lines, 0 removed lines.
Original line number Diff line number Diff line
package org.etsi.osl.hypo.api.peering.database;

import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;

import io.quarkus.test.junit.QuarkusTest;
import jakarta.inject.Inject;
import org.flywaydb.core.Flyway;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;

@QuarkusTest
@Order(1)
class FlywayValidationTest {

    @Inject Flyway flyway;

    @Test
    @DisplayName("Verify applied Flyway migrations match schema history and checksums")
    void verifyFlywayValidationPasses() {
        // Validates applied migrations against current classpath migration files
        assertDoesNotThrow(
                () -> {
                    flyway.validate();
                },
                "Flyway schema history validation should pass without checksum failures");
    }
}
+22 −0
Changes for src/test/resources/db/migration/V999.0.0__seed_mock_data.sql: 22 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- Mock data for OssClientData (Flyway test migration)
SELECT nextval('OssClientData_SEQ');

INSERT INTO OssClientData (
    id, name, baseUrl, clientRegistrationId, organizationId,
    oauth2ClientId, oauth2ClientSecret, oauth2Scopes, oauth2TokenUri,
    healthCheckCounter, peeredSpecs, serviceSpecs
) VALUES
(
    1,
    'oss-alpha',
    'https://oss-alpha.example.com',
    'oss-alpha-registration',
    'org-001',
    'alpha-client-id',
    'alpha-client-secret',
    'read write',
    'https://auth.alpha.example.com/oauth2/token',
    0,
    '{"peer-spec-1": "Peer Inventory API"}'::jsonb,
    '{"svc-spec-1": "Service Catalog API"}'::jsonb
);
 No newline at end of file