Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

154 рядки
4.7KB

  1. Sub Test_App_RegisterAndResolveService()
  2. Dim app
  3. Set app = New App
  4. app.RegisterInstance "widget", New FakeService
  5. AssertTrue app.HasService("widget"), "HasService should be True after RegisterInstance"
  6. AssertNotNothing app.Resolve("widget"), "Resolve should return the registered object"
  7. End Sub
  8. Sub Test_App_ResolveUnregisteredServiceRaises()
  9. Dim app
  10. Dim result
  11. Dim didRaise
  12. Set app = New App
  13. didRaise = False
  14. On Error Resume Next
  15. Err.Clear
  16. Set result = app.Resolve("does-not-exist")
  17. If Err.Number <> 0 Then didRaise = True
  18. Err.Clear
  19. On Error Goto 0
  20. AssertTrue didRaise, "Resolve should raise when the service isn't registered"
  21. End Sub
  22. Sub Test_App_ServiceNamesReflectsRegistered()
  23. Dim app
  24. Dim names
  25. Set app = New App
  26. app.RegisterInstance "alpha", New FakeService
  27. app.RegisterInstance "beta", New FakeService
  28. names = app.ServiceNames()
  29. AssertEquals 2, UBound(names) + 1, "ServiceNames should return one entry per registered service"
  30. End Sub
  31. Sub Test_App_RegisterInstanceReplacesExisting()
  32. Dim app
  33. Dim first
  34. Dim second
  35. Dim resolved
  36. Dim names
  37. Set app = New App
  38. Set first = New FakeService
  39. Set second = New FakeService
  40. first.Marker = "first"
  41. second.Marker = "second"
  42. app.RegisterInstance "svc", first
  43. app.RegisterInstance "svc", second
  44. names = app.ServiceNames()
  45. AssertEquals 1, UBound(names) + 1, "Re-registering the same name should not duplicate it"
  46. Set resolved = app.Resolve("svc")
  47. AssertEquals "second", resolved.Marker, "Resolve should return the most recently registered instance"
  48. End Sub
  49. Sub Test_App_BootPrefersOriginalUrlOverPathInfo()
  50. Dim app
  51. Dim httpRequest
  52. Dim fakeRequest
  53. Set fakeRequest = New FakeAspRequest
  54. fakeRequest.SetServerVariable "REQUEST_METHOD", "GET"
  55. fakeRequest.SetServerVariable "SERVER_NAME", "localhost"
  56. fakeRequest.SetServerVariable "SERVER_PORT", "8080"
  57. fakeRequest.SetServerVariable "PATH_INFO", "/Default.asp"
  58. fakeRequest.SetServerVariable "HTTP_X_ORIGINAL_URL", "/greet/Ada?x=1"
  59. Set httpRequest = New HttpRequest
  60. httpRequest.Bind fakeRequest
  61. Set app = New App
  62. app.SetRequest httpRequest
  63. app.Boot
  64. AssertEquals "/greet/Ada", app.Route, "Route should come from HTTP_X_ORIGINAL_URL (query string stripped), not PATH_INFO"
  65. End Sub
  66. Sub Test_App_BootFallsBackToPathInfoWhenOriginalUrlMissing()
  67. Dim app
  68. Dim httpRequest
  69. Dim fakeRequest
  70. Set fakeRequest = New FakeAspRequest
  71. fakeRequest.SetServerVariable "REQUEST_METHOD", "GET"
  72. fakeRequest.SetServerVariable "SERVER_NAME", "localhost"
  73. fakeRequest.SetServerVariable "SERVER_PORT", "8080"
  74. fakeRequest.SetServerVariable "PATH_INFO", "/greet/Ada"
  75. Set httpRequest = New HttpRequest
  76. httpRequest.Bind fakeRequest
  77. Set app = New App
  78. app.SetRequest httpRequest
  79. app.Boot
  80. AssertEquals "/greet/Ada", app.Route, "Route should fall back to PATH_INFO when HTTP_X_ORIGINAL_URL is absent"
  81. End Sub
  82. Sub Test_App_BootNormalizesDefaultAspToRoot()
  83. Dim app
  84. Dim httpRequest
  85. Dim fakeRequest
  86. Set fakeRequest = New FakeAspRequest
  87. fakeRequest.SetServerVariable "REQUEST_METHOD", "GET"
  88. fakeRequest.SetServerVariable "SERVER_NAME", "localhost"
  89. fakeRequest.SetServerVariable "SERVER_PORT", "8080"
  90. fakeRequest.SetServerVariable "HTTP_X_ORIGINAL_URL", "/Default.asp"
  91. Set httpRequest = New HttpRequest
  92. httpRequest.Bind fakeRequest
  93. Set app = New App
  94. app.SetRequest httpRequest
  95. app.Boot
  96. AssertEquals "/", app.Route, "Both PATH_INFO and HTTP_X_ORIGINAL_URL '/Default.asp' should normalize to '/'"
  97. End Sub
  98. Sub Test_App_BootRequiresRequestToBeSet()
  99. Dim app
  100. Dim didRaise
  101. Set app = New App
  102. didRaise = False
  103. On Error Resume Next
  104. Err.Clear
  105. app.Boot
  106. If Err.Number <> 0 Then didRaise = True
  107. Err.Clear
  108. On Error Goto 0
  109. AssertTrue didRaise, "Boot should raise if SetRequest was never called"
  110. End Sub
  111. RunTest "App: register + resolve a service", "Test_App_RegisterAndResolveService"
  112. RunTest "App: resolving an unregistered service raises", "Test_App_ResolveUnregisteredServiceRaises"
  113. RunTest "App: ServiceNames reflects registered services", "Test_App_ServiceNamesReflectsRegistered"
  114. RunTest "App: re-registering a name replaces, does not duplicate", "Test_App_RegisterInstanceReplacesExisting"
  115. RunTest "App: Boot prefers HTTP_X_ORIGINAL_URL over PATH_INFO", "Test_App_BootPrefersOriginalUrlOverPathInfo"
  116. RunTest "App: Boot falls back to PATH_INFO when original URL is absent", "Test_App_BootFallsBackToPathInfoWhenOriginalUrlMissing"
  117. RunTest "App: Boot normalizes '/Default.asp' to '/'", "Test_App_BootNormalizesDefaultAspToRoot"
  118. RunTest "App: Boot requires a bound request", "Test_App_BootRequiresRequestToBeSet"

Powered by TurnKey Linux.