test_proxy3.ps1 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. # Test frontend paths through proxy (port 80) using correct VUE_APP_BASE_API = /prod-api
  2. $base = 'http://localhost:80'
  3. $apiPrefix = '/prod-api'
  4. # Login first - use Invoke-WebRequest to avoid PowerShell JSON parsing issues
  5. $body = @{tenantCode='T202605253515';username='admin';password='admin123'} | ConvertTo-Json
  6. $loginResp = Invoke-WebRequest -Uri "$base$apiPrefix/company/login" -Method Post -ContentType 'application/json' -Body $body -UseBasicParsing
  7. $loginJson = $loginResp.Content | ConvertFrom-Json
  8. $token = $loginJson.token
  9. Write-Host "LOGIN: code=$($loginJson.code), token length=$($token.Length)"
  10. if ([string]::IsNullOrEmpty($token)) {
  11. Write-Host "Token is empty! Trying direct backend login..."
  12. $loginResp2 = Invoke-WebRequest -Uri 'http://localhost:8006/company/login' -Method Post -ContentType 'application/json' -Body $body -UseBasicParsing
  13. $loginJson2 = $loginResp2.Content | ConvertFrom-Json
  14. $token = $loginJson2.token
  15. Write-Host "Direct login: code=$($loginJson2.code), token length=$($token.Length)"
  16. }
  17. if ([string]::IsNullOrEmpty($token)) {
  18. Write-Host "Cannot get token, aborting"
  19. exit 1
  20. }
  21. # Test endpoints
  22. $tests = @(
  23. # HIS direct
  24. @{name='HIS:healthTongue'; path='/his/healthTongue/list'},
  25. @{name='HIS:healthRecord'; path='/his/healthRecord/list'},
  26. @{name='HIS:drugReport'; path='/his/drugReport/list'},
  27. @{name='HIS:exportTask'; path='/his/exportTask/list'},
  28. @{name='HIS:inquiryOrder'; path='/his/inquiryOrder/list'},
  29. @{name='HIS:redPacket'; path='/his/redPacket/info'},
  30. @{name='HIS:integralGoods'; path='/his/integralGoods/list'},
  31. @{name='HIS:doctor'; path='/his/doctor/list'},
  32. @{name='HIS:prescription'; path='/his/prescription/list'},
  33. @{name='HIS:diagnosis'; path='/his/diagnosis/list'},
  34. # HIS/fs* (rewritten to /store/*)
  35. @{name='HIS/fsPatient'; path='/his/fsPatient/list'},
  36. @{name='HIS/fsUser'; path='/his/fsUser/list'},
  37. @{name='HIS/fsMaterial'; path='/his/fsMaterial/list'},
  38. @{name='HIS/fsCoupon'; path='/his/fsCoupon/list'},
  39. @{name='HIS/fsStoreOrderOffline'; path='/his/fsStoreOrderOffline/list'},
  40. @{name='HIS/fsStoreOrderAudit'; path='/his/fsStoreOrderAudit/list'},
  41. @{name='HIS/fsStoreStatistics'; path='/his/fsStoreStatistics/list'},
  42. @{name='HIS/fsCollection'; path='/his/fsCollection/list'},
  43. # COURSE
  44. @{name='COURSE:courseDomainName'; path='/course/courseDomainName/list'},
  45. @{name='COURSE:courseQuestionBank'; path='/course/courseQuestionBank/list'},
  46. @{name='COURSE:courseAnswerlogs'; path='/course/courseAnswerlogs/list'},
  47. @{name='COURSE:courseInfo'; path='/course/courseInfo/list'},
  48. @{name='COURSE:coursePeriod'; path='/course/coursePeriod/list'},
  49. # BILLING
  50. @{name='BILLING:wallet'; path='/billing/wallet/list'},
  51. @{name='BILLING:bill'; path='/billing/bill/list'},
  52. # TRANSFER
  53. @{name='TRANSFER:fsTransfer'; path='/transfer/fsTransfer/list'},
  54. @{name='TRANSFER:fsTransferConfig'; path='/transfer/fsTransferConfig/list'},
  55. # QW
  56. @{name='QW:tag'; path='/qw/tag/list'},
  57. @{name='QW:sop'; path='/qw/sop/list'},
  58. @{name='QW:material'; path='/qw/material/list'},
  59. @{name='QW:user'; path='/qw/user/list'},
  60. @{name='QW:groupMsg'; path='/qw/groupMsg/list'},
  61. # QW Sop
  62. @{name='QWSop:sopUserLogs'; path='/qwSop/sopUserLogs/list'},
  63. # WX/wxSop (rewritten)
  64. @{name='WX:wxSop'; path='/wx/wxSop/list'},
  65. @{name='WX:wxSopUser'; path='/wx/wxSopUser/list'},
  66. @{name='WX:wxSopUserInfo'; path='/wx/wxSopUserInfo/list'},
  67. @{name='WX:wxSopLogs'; path='/wx/wxSopLogs/list'},
  68. # CHAT
  69. @{name='CHAT:chatMsg'; path='/chat/chatMsg/list'},
  70. @{name='CHAT:chatMsgLogs'; path='/chat/chatMsgLogs/list'},
  71. @{name='CHAT:chatSession'; path='/chat/chatSession/list'},
  72. # INDEX
  73. @{name='INDEX:statistics'; path='/index/statistics/rechargeComsumption'},
  74. # CRM
  75. @{name='CRM:statistics'; path='/crm/statistics/customer'}
  76. )
  77. $ok = 0; $fail = 0; $err = 0
  78. foreach ($t in $tests) {
  79. $url = "$base$apiPrefix$($t.path)"
  80. try {
  81. $r = Invoke-WebRequest -Uri $url -Method Get -Headers @{Authorization="Bearer $token"} -UseBasicParsing -ErrorAction Stop
  82. $content = $r.Content | ConvertFrom-Json
  83. if ($content.code -eq 200) {
  84. Write-Host "OK $($t.name) => code=200"
  85. $ok++
  86. } elseif ($content.code -eq 500) {
  87. Write-Host "ERR $($t.name) => code=500 msg=$($content.msg)"
  88. $err++
  89. } else {
  90. Write-Host "WRN $($t.name) => code=$($content.code) msg=$($content.msg)"
  91. $fail++
  92. }
  93. } catch {
  94. $code = $_.Exception.Response.StatusCode.value__
  95. if ($code -eq 404) {
  96. Write-Host "404 $($t.name) => NOT FOUND"
  97. } else {
  98. Write-Host "$code $($t.name) => ERROR"
  99. }
  100. $fail++
  101. }
  102. }
  103. Write-Host "`n=== SUMMARY: OK=$ok, ERR(500)=$err, FAIL=$fail ==="