test_404_direct.ps1 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. $ErrorActionPreference = "SilentlyContinue"
  2. [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
  3. # Login
  4. $body = '{"username":"admin","password":"admin123","tenantCode":"T202605253515"}'
  5. $resp = Invoke-WebRequest -Uri 'http://localhost:8006/login' -Method POST -ContentType 'application/json' -Body $body -UseBasicParsing -TimeoutSec 10
  6. $json = $resp.Content | ConvertFrom-Json
  7. $token = $json.token
  8. Write-Output "Token obtained"
  9. $headers = @{ 'Authorization' = "Bearer $token"; 'Content-Type' = 'application/json' }
  10. # Read all backend mappings (deduplicated)
  11. $backendPaths = Get-Content 'd:\ylrz\saasadminui\backend_mappings.txt' | Where-Object { $_ -match '^/' } | Sort-Object -Unique
  12. $backendSet = @{}
  13. foreach ($p in $backendPaths) { $backendSet[$p] = $true }
  14. # Read all 404 errors from previous test
  15. $errFile = 'd:\ylrz\saasadminui\api_errors_final.txt'
  16. $errLines = Get-Content $errFile | Where-Object { $_ -match '^404\|' }
  17. # Parse and deduplicate the 404 URLs
  18. $notFoundUrls = @{}
  19. foreach ($line in $errLines) {
  20. $parts = $line -split '\|'
  21. $url = $parts[1]
  22. if ($url -and -not $notFoundUrls.ContainsKey($url)) {
  23. $notFoundUrls[$url] = $true
  24. }
  25. }
  26. Write-Output "Total 404 URLs: $($notFoundUrls.Count)"
  27. Write-Output "Total backend paths: $($backendSet.Count)"
  28. # Test each 404 URL directly against backend (8006) with POST
  29. $results = @{
  30. directOk = [System.Collections.ArrayList]::new()
  31. direct404 = [System.Collections.ArrayList]::new()
  32. direct500 = [System.Collections.ArrayList]::new()
  33. directErr = [System.Collections.ArrayList]::new()
  34. }
  35. $i = 0
  36. $total = $notFoundUrls.Count
  37. foreach ($url in ($notFoundUrls.Keys | Sort-Object)) {
  38. $i++
  39. if ($i % 50 -eq 0) {
  40. Write-Output "Progress: $i/$total (OK=$($results.directOk.Count) 404=$($results.direct404.Count) 500=$($results.direct500.Count) ERR=$($results.directErr.Count))"
  41. }
  42. $fullUrl = "http://localhost:8006$url"
  43. try {
  44. $r = Invoke-WebRequest -Uri $fullUrl -Method POST -Headers $headers -Body '{}' -UseBasicParsing -TimeoutSec 5
  45. [void]$results.directOk.Add("OK|$url")
  46. }
  47. catch {
  48. $errMsg = $_.Exception.Message
  49. if ($errMsg -match '404') {
  50. [void]$results.direct404.Add("404|$url")
  51. }
  52. elseif ($errMsg -match '500') {
  53. [void]$results.direct500.Add("500|$url")
  54. }
  55. elseif ($errMsg -match '401') {
  56. [void]$results.directOk.Add("401|$url")
  57. }
  58. else {
  59. [void]$results.directErr.Add("ERR|$url|$errMsg")
  60. }
  61. }
  62. }
  63. Write-Output ""
  64. Write-Output "=== 404 URLs TESTED DIRECTLY AGAINST BACKEND (8006) ==="
  65. Write-Output "OK (backend has it, proxy is wrong): $($results.directOk.Count)"
  66. Write-Output "404 (backend doesn't have it either): $($results.direct404.Count)"
  67. Write-Output "500 (backend error): $($results.direct500.Count)"
  68. Write-Output "ERR (timeout/other): $($results.directErr.Count)"
  69. # Save results
  70. $output = @()
  71. $output += "=== 404 URLs TESTED DIRECTLY AGAINST BACKEND (8006) ==="
  72. $output += "OK (proxy problem): $($results.directOk.Count)"
  73. $output += "404 (backend missing): $($results.direct404.Count)"
  74. $output += "500 (backend error): $($results.direct500.Count)"
  75. $output += "ERR (timeout): $($results.directErr.Count)"
  76. $output += ""
  77. $output += "=== OK - BACKEND WORKS, PROXY NEEDS FIX ==="
  78. $output += $results.directOk | Sort-Object
  79. $output += ""
  80. $output += "=== 404 - BACKEND DOES NOT HAVE THIS PATH ==="
  81. $output += $results.direct404 | Sort-Object
  82. $output += ""
  83. $output += "=== 500 - BACKEND ERROR ==="
  84. $output += $results.direct500 | Sort-Object
  85. $output += ""
  86. $output += "=== ERR - TIMEOUT/OTHER ==="
  87. $output += $results.directErr | Sort-Object
  88. $output | Out-File -FilePath 'd:\ylrz\saasadminui\direct_test_results.txt' -Encoding utf8
  89. Write-Output "Results saved to direct_test_results.txt"