feat: add comprehensive Pester and standalone E2E test suite (96 tests) and code audit report
This commit is contained in:
@@ -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 보안그룹에서 사용자 객체 제거 로직 ---
|
||||
|
||||
Reference in New Issue
Block a user