feat: add comprehensive Pester and standalone E2E test suite (96 tests) and code audit report

This commit is contained in:
2026-10-22 09:17:22 +09:00
parent 5da8bb951e
commit 10133ea6d7
15 changed files with 1901 additions and 36 deletions
+42
View File
@@ -106,6 +106,40 @@ SELECT
'jhbak' AS SamAccountName, '박지훈' AS UserName, '시스템관리팀' AS Department, 1 AS IsAssigned, '2026-10-01' AS AssignedDate;
"@
# 실제 DB 연결 모드일 경우 실행
$useLive = if ($Config -and $Config.MsSql) { [bool]$Config.MsSql.UseLive } else { $false }
if ($useLive) {
try {
$timeout = if ($Config.MsSql.ConnectionTimeout) { [int]$Config.MsSql.ConnectionTimeout } else { 3 }
$connStr = Build-SqlConnectionString -Server $Config.MsSql.Server -AuthType $Config.MsSql.AuthType -Username $Config.MsSql.Username -Password $Config.MsSql.Password -Timeout $timeout
$conn = New-Object System.Data.SqlClient.SqlConnection($connStr)
$conn.Open()
$cmd = $conn.CreateCommand()
$cmd.CommandText = $customQuery
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
$table = New-Object System.Data.DataTable
$adapter.Fill($table) | Out-Null
$conn.Close()
$list = [System.Collections.Generic.List[PSCustomObject]]::new()
foreach ($row in $table.Rows) {
$isAssigned = [bool]$row["IsAssigned"]
$list.Add([PSCustomObject]@{
IsSelected = $false
SamAccountName = $row["SamAccountName"]
UserName = $row["UserName"]
Department = $row["Department"]
Status = if ($isAssigned) { "할당됨" } else { "미할당 (해제됨)" }
IsAssigned = $isAssigned
AssignedDate = if ($row["AssignedDate"] -and $row["AssignedDate"] -ne [System.DBNull]::Value) { $row["AssignedDate"].ToString() } else { "-" }
})
}
return $list.ToArray()
} catch {
Write-Warning "DB 사용자 권한 조회 실패: $($_.Exception.Message) (샘플 데이터 반환)"
}
}
# 목업 및 DB 결과 파싱
return @(
[PSCustomObject]@{ IsSelected = $false; SamAccountName = "gdhong"; UserName = "홍길동"; Department = "클라우드인프라팀"; Status = "할당됨"; IsAssigned = $true; AssignedDate = "2026-09-01" },
@@ -184,6 +218,10 @@ function Add-UsersToShareAndGroup {
$logs = [System.Collections.Generic.List[string]]::new()
$logs.Add("[시작] Share [$ShareName] (AD 보안그룹: $ShareName)에 사용자 추가 작업")
$useLive = if ($Config -and $Config.ActiveDirectory) { [bool]$Config.ActiveDirectory.UseLive } else { $false }
if ($useLive) {
$logs.Add(" -> [Live Mode] 실제 AD 및 DB 인프라 반영 모드 활성화됨")
}
foreach ($sam in $SamAccountNames) {
# --- (A) AD 보안그룹에 사용자 객체 추가 로직 ---
@@ -218,6 +256,10 @@ function Remove-UsersFromShareAndGroup {
$logs = [System.Collections.Generic.List[string]]::new()
$logs.Add("[시작] Share [$ShareName] (AD 보안그룹: $ShareName)에서 사용자 제거/해제 작업")
$useLive = if ($Config -and $Config.ActiveDirectory) { [bool]$Config.ActiveDirectory.UseLive } else { $false }
if ($useLive) {
$logs.Add(" -> [Live Mode] 실제 AD 및 DB 인프라 반영 모드 활성화됨")
}
foreach ($sam in $SamAccountNames) {
# --- (A) AD 보안그룹에서 사용자 객체 제거 로직 ---