bqn-curl/tests.bqn

188 lines
5.9 KiB
BQN
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bqn
Get,Post,
OpenSession,ResetSession,CloseSession,
SetURL,SetHeaders,SetVerbose,SetTimeout,SetTimeoutms,SetData,
Perform,
•Import"curl.bqn"
httpbinURL"http://localhost:8080"
RunTest{•term.OutRaw (4' ')"Test "𝕨 𝕏 @ •Out ((69-𝕨)'.')"OK"}
RunSuite{•Out 𝕨':' RunTest´¨𝕩 •Out " All "(•Fmt 𝕩)" tests passed."}
RunAll{RunSuite´¨𝕩 •Out "All "(•Fmt +´¨´¨𝕩)" tests passed."}
simpleAPI_testsuite
"simple GET"{𝕊𝕩:
rGet httpbinURL"/get"
! 200=r.code
! 0=r.redirectCount
! 1="HTTP/"r.headers
! 1=+´"Content-Type: "r.headers
! 1=+´"Content-Length: "r.headers
! 1=+´"""Host"": ""localhost:8080"""r.content
! 1=+´"""User-Agent"": ""curl/bqn"""r.content
! 0=+´"""Hello"": ""World"""r.content
},
"simple GET with headers"{𝕊𝕩:
headers"User-Agent: toto","Content-Type: application/json","Hello: World"
rheaders Get httpbinURL"/get"
! 200=r.code
! 0=r.redirectCount
! 1=+´"""Host"": ""localhost:8080"""r.content
! 1=+´"""User-Agent"": ""toto"""r.content
! 1=+´"""Content-Type"": ""application/json"""r.content
! 1=+´"""Hello"": ""World"""r.content
},
"simple POST with headers"{𝕊𝕩:
headers"Content-Type: application/json"
rheaders Post httpbinURL"/post",¯1000 + 1000 + "{""key"": 1}"
! 200=r.code
! 0=r.redirectCount
! 1="HTTP/"r.headers
! 1=+´"Content-Type: "r.headers
! 1=+´"Content-Length: "r.headers
! 1=+´"""Content-Type"": ""application/json"""r.content
! 1=+´"""data"": ""{\""key\"": 1}""" r.content
}
advancedAPI_testsuite
"open session"{𝕊𝕩:
sessionOpenSession @
! 8=session.sessionPtr
! (80)session.headersSlist
CloseSession session
},
"GET"{𝕊𝕩:
sessionOpenSession @
rPerform (httpbinURL"/get") SetURL session
! 200=r.code
! 0=r.redirectCount
! 10r.content
CloseSession session
},
"POST"{𝕊𝕩:
sessionOpenSession @
rPerform "toto"SetData (httpbinURL"/post") SetURL session
! 200=r.code
! 0=r.redirectCount
! 1=+´"toto"r.content
CloseSession session
},
"basic auth fail"{𝕊𝕩:
sessionOpenSession @
session(httpbinURL"/basic-auth/username/s3cr3tpa55word") SetURL session
rPerform session
! 401=r.code
CloseSession session
},
"basic auth with header"{𝕊𝕩:
sessionOpenSession @
session(httpbinURL"/basic-auth/username/s3cr3tpa55word") SetURL session
rPerform "Authorization: Basic dXNlcm5hbWU6czNjcjN0cGE1NXdvcmQ=" SetHeaders session
! 200=r.code
CloseSession session
},
"basic auth with URL"{𝕊𝕩:
sessionOpenSession @
session("http://username:s3cr3tpa55word@localhost:8080/basic-auth/username/s3cr3tpa55word") SetURL session
rPerform session
! 200=r.code
CloseSession session
},
"bearer auth fail"{𝕊𝕩:
sessionOpenSession @
session(httpbinURL"/bearer") SetURL session
rPerform session
! 401=r.code
CloseSession session
},
"bearer auth"{𝕊𝕩:
sessionOpenSession @
session(httpbinURL"/bearer") SetURL session
rPerform "Authorization: Bearer hey!" SetHeaders session
! 200=r.code
CloseSession session
},
"status GET"{𝕊𝕩:
sessionOpenSession @
rPerform (httpbinURL"/status/418") SetURL session
! 418=r.code
CloseSession session
},
"status POST"{𝕊𝕩:
sessionOpenSession @
rPerform ""SetData (httpbinURL"/status/418") SetURL session
! 418=r.code
CloseSession session
},
"set headers"{𝕊𝕩:
sessionOpenSession @
session(httpbinURL"/headers") SetURL session
rPerform "Hello: World" SetHeaders session
! 1=+´"""Hello"": ""World"""r.content
CloseSession session
},
"default user-agent"{𝕊𝕩:
sessionOpenSession @
session(httpbinURL"/user-agent") SetURL session
rPerform session
! 1=+´"curl/bqn"r.content
CloseSession session
},
"custom user-agent"{𝕊𝕩:
sessionOpenSession @
session(httpbinURL"/user-agent") SetURL session
rPerform "User-Agent: hello/world" SetHeaders session
! 0=+´"curl/bqn"r.content
! 1=+´"hello/world"r.content
CloseSession session
},
"timeout with fast request"{𝕊𝕩:
sessionOpenSession @
session1010 SetTimeoutms (httpbinURL"/delay/1") SetURL session
rPerform session
! 200=r.code
CloseSession session
},
"request timeout"{𝕊𝕩:
sessionOpenSession @
session100 SetTimeoutms (httpbinURL"/delay/1") SetURL session
! Perform1 session
CloseSession session
},
"follow redirects"{𝕊𝕩:
sessionOpenSession @
rPerform (httpbinURL"/redirect/5") SetURL session
! 200=r.code
! 5=r.redirectCount
CloseSession session
},
"follow absolute redirects"{𝕊𝕩:
sessionOpenSession @
rPerform (httpbinURL"/absolute-redirect/5") SetURL session
! 200=r.code
! 5=r.redirectCount
CloseSession session
},
"follow relative redirects"{𝕊𝕩:
sessionOpenSession @
rPerform (httpbinURL"/relative-redirect/5") SetURL session
! 200=r.code
! 5=r.redirectCount
CloseSession session
},
"parameters"{𝕊𝕩:
sessionOpenSession @
rPerform (httpbinURL"/anything?hello=world&zig=zag") SetURL session
! 1=+´"""hello"": ""world"""r.content
! 1=+´"""zig"": ""zag"""r.content
CloseSession session
},
RunAll
"Simple API"simpleAPI_testsuite,
"Advanced API"advancedAPI_testsuite,