Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion backend/src/main/kotlin/com/opendatamask/model/JobLog.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import jakarta.persistence.*
import java.time.LocalDateTime

enum class LogLevel {
INFO, WARN, ERROR
DEBUG, INFO, WARN, ERROR
}

@Entity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import jakarta.persistence.*
import java.time.LocalDateTime

enum class TableMode {
PASSTHROUGH, MASK, GENERATE, SUBSET
PASSTHROUGH, MASK, GENERATE, SUBSET, SKIP
}

@Entity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,10 @@ class JobService(
addLog(job.id, "Processing ${tableConfigs.size} table(s)", LogLevel.INFO)

for (tableConfig in tableConfigs) {
if (tableConfig.mode == TableMode.SKIP) {
addLog(job.id, "Skipping table: ${tableConfig.tableName}", LogLevel.INFO)
continue
}
addLog(job.id, "Mirroring schema for table: ${tableConfig.tableName}", LogLevel.INFO)
destinationSchemaService.mirrorSchema(
sourceConnector, sourceConn.type,
Expand Down Expand Up @@ -194,6 +198,9 @@ class JobService(
val written = destConnector.writeData(tableConfig.tableName, data)
addLog(jobId, "Wrote $written rows to destination ${tableConfig.tableName}", LogLevel.INFO)
}
TableMode.SKIP -> {
// unreachable: SKIP tables are short-circuited in the calling loop
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,37 @@ class EnumAlignmentTest {
}

@Test
fun `WorkspaceRole contains VIEWER`() {
fun `UserRole contains canonical set`() {
val values = UserRole.values().map { it.name }.toSet()
val expected = setOf("ADMIN", "USER", "VIEWER")
assertEquals(expected, values, "UserRole values do not match canonical set")
}

@Test
fun `WorkspaceRole contains canonical set`() {
val values = WorkspaceRole.values().map { it.name }.toSet()
assertTrue(values.contains("VIEWER"), "WorkspaceRole must contain VIEWER")
val expected = setOf("ADMIN", "USER", "VIEWER")
assertEquals(expected, values, "WorkspaceRole values do not match canonical set")
}

@Test
fun `TableMode contains canonical set`() {
val values = TableMode.values().map { it.name }.toSet()
val expected = setOf("PASSTHROUGH", "MASK", "GENERATE", "SUBSET", "SKIP")
assertEquals(expected, values, "TableMode values do not match canonical set")
}

@Test
fun `LogLevel contains canonical set`() {
val values = LogLevel.values().map { it.name }.toSet()
val expected = setOf("DEBUG", "INFO", "WARN", "ERROR")
assertEquals(expected, values, "LogLevel values do not match canonical set")
}

@Test
fun `JobStatus contains canonical set`() {
val values = JobStatus.values().map { it.name }.toSet()
val expected = setOf("PENDING", "RUNNING", "COMPLETED", "FAILED", "CANCELLED")
assertEquals(expected, values, "JobStatus values do not match canonical set")
}
}
Loading