Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions specs/Specs_WebClient.bas
Original file line number Diff line number Diff line change
Expand Up @@ -294,3 +294,41 @@ Public Function Specs() As SpecSuite
InlineRunner.RunSuite Specs
End Function

Public Function OfflineSpecs() As SpecSuite
' Disconnect from the internet before running these specs

Set OfflineSpecs = New SpecSuite
OfflineSpecs.Description = "WebClient - Offline"

Dim Client As New WebClient
Dim Request As WebRequest
Dim Response As WebResponse

Client.BaseUrl = HttpbinBaseUrl

With OfflineSpecs.It("should handle resolve errors as timeout")
Client.TimeoutMs = 500

Set Request = New WebRequest
Request.Resource = "/get"

Set Response = Client.Execute(Request)
.Expect(Response.StatusCode).ToEqual 408
.Expect(Response.StatusDescription).ToEqual "Request Timeout"
End With

With OfflineSpecs.It("should not crash with auto-proxy resolve error")
Client.EnableAutoProxy = True
Client.TimeoutMs = 500

Set Request = New WebRequest
Request.Resource = "/get"

Set Response = Client.Execute(Request)
.Expect(Response.StatusCode).ToEqual 408
.Expect(Response.StatusDescription).ToEqual "Request Timeout"
End With

InlineRunner.RunSuite OfflineSpecs
End Function

4 changes: 3 additions & 1 deletion src/WebClient.cls
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,8 @@ Public Function Execute(Request As WebRequest) As WebResponse
Case 5, 6, 7
' 5 = CURLE_COULDNT_RESOLVE_PROXY
' 6 = CURLE_COULDNT_RESOLVE_HOST
Err.Raise 208615 + vbObjectError, "WebClient.Execute", "The server name or address could not be resolved"
Case 7
' 7 = CURLE_COULDNT_CONNECT
Err.Raise 208637 + vbObjectError, "WebClient.Execute", "A connection with the server could not be established"
Case 12, 28
Expand Down Expand Up @@ -304,7 +306,7 @@ web_ErrorHandling:
Dim web_ErrorDescription As String

Select Case Err.Number - vbObjectError
Case 208610, 208637
Case 208610, 208615, 208637
' Return 408
web_Response.StatusCode = WebStatusCode.RequestTimeout
web_Response.StatusDescription = "Request Timeout"
Expand Down