tests: Test result update for `curl_http`
[nit.git] / tests / test_curl.nit
index bc89868..0d2b4d1 100644 (file)
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-module test_curl
 
-import curl
+intrude import curl
 
-fun error_manager(err: CURLCode) do if not err.is_ok then print err
+class CallbackManager
+  super CurlCallbacks
+
+  redef fun body_callback(line) do end
+end
+
+private fun error_manager(err: CURLCode) do if not err.is_ok then print err
 
 var url = "http://example.org/"
 
-var curl = new CCurl.easy_init
+var curl = new NativeCurl.easy_init
 if not curl.is_init then print "failed init"
 
 var error:CURLCode
 error = curl.easy_setopt(new CURLOption.url, url)
 error_manager(error)
 
-error = curl.easy_setopt(new CURLOption.verbose, 1)
+# Activate for advanced debugging
+#error = curl.easy_setopt(new CURLOption.verbose, 1)
+#error_manager(error)
+
+var cbManager = new CallbackManager
+error = curl.register_callback_body(cbManager)
 error_manager(error)
 
 error = curl.easy_perform
 error_manager(error)
 
 # Long set
-var info:nullable CURLInfoResponseLong
-info = curl.easy_getinfo_long(new CURLInfoLong.header_size)
+var info = curl.easy_getinfo_long(new CURLInfoLong.header_size)
 assert infoResp:info != null
-print "GetinfoLong:: Header size: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.response_code)
 assert infoResp:info != null
-print "GetinfoLong:: Response code: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.http_connectcode)
 assert infoResp:info != null
-print "GetinfoLong:: http_connectcode: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.filetime)
 assert infoResp:info != null
-print "GetinfoLong:: filetime: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.redirect_count)
 assert infoResp:info != null
-print "GetinfoLong:: redirect_count: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.request_size)
 assert infoResp:info != null
-print "GetinfoLong:: request_size: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.ssl_verifyresult)
 assert infoResp:info != null
-print "GetinfoLong:: ssl_verifyresult: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.httpauth_avail)
 assert infoResp:info != null
-print "GetinfoLong:: httpauth_avail: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.proxyauth_avail)
 assert infoResp:info != null
-print "GetinfoLong:: proxyauth_avail: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.os_errno)
 assert infoResp:info != null
-print "GetinfoLong:: os_errno: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.primary_port)
 assert infoResp:info != null
-print "GetinfoLong:: primary_port: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.num_connects)
 assert infoResp:info != null
-print "GetinfoLong:: num_connects: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.local_port)
 assert infoResp:info != null
-print "GetinfoLong:: local_port: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.lastsocket)
 assert infoResp:info != null
-print "GetinfoLong:: lastsocket: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.condition_unmet)
 assert infoResp:info != null
-print "GetinfoLong:: condition_unmet: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.rtsp_client_cseq)
 assert infoResp:info != null
-print "GetinfoLong:: rtsp_client_cseq: " + info.response.to_s
 
 info = curl.easy_getinfo_long(new CURLInfoLong.rtsp_server_cseq)
 assert infoResp:info != null
-print "GetinfoLong:: rtsp_server_cseq: " + info.response.to_s
 
-info = curl.easy_getinfo_long(new CURLInfoLong.rtsp_cseq_recv)
+info = curl.easy_getinfo_long(new CURLInfoLong.rtsp_cseq_self)
 assert infoResp:info != null
-print "GetinfoLong:: rtsp_cseq_recv: " + info.response.to_s
 
 # Double
-var infoDouble: nullable CURLInfoResponseDouble
-infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.total_time)
+var infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.total_time)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: total_time: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.namelookup_time)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: namelookup_time: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.connect_time)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: connect_time: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.appconnect_time)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: appconnect_time: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.pretransfer_time)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: pretransfer_time: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.starttransfer_time)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: starttransfer_time: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.redirect_time)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: redirect_time: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.size_upload)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: size_upload: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.size_download)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: size_download: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.speed_download)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: speed_download: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.speed_upload)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: speed_upload: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.content_length_download)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: content_length_download: " + infoDouble.response.to_s
 
 infoDouble = curl.easy_getinfo_double(new CURLInfoDouble.content_length_upload)
 assert infoResp:infoDouble != null
-print "GetinfoDouble:: content_length_upload: " + infoDouble.response.to_s
 
 # String set
-var infoStr:nullable CURLInfoResponseString
-infoStr = curl.easy_getinfo_chars(new CURLInfoChars.content_type)
+var infoStr = curl.easy_getinfo_chars(new CURLInfoChars.content_type)
 assert infoResp:infoStr != null
-print "GetinfoStr:: Content type: " + infoStr.response
 
 infoStr = curl.easy_getinfo_chars(new CURLInfoChars.effective_url)
 assert infoResp:infoStr != null
-print "GetinfoStr:: Effective url: " + infoStr.response
 
+# follow_location not set, so returns null
 infoStr = curl.easy_getinfo_chars(new CURLInfoChars.redirect_url)
-assert infoResp:infoStr != null
-print "GetinfoStr:: Redirect url: " + infoStr.response
+assert infoStr == null
 
 infoStr = curl.easy_getinfo_chars(new CURLInfoChars.primary_ip)
 assert infoResp:infoStr != null
-print( "GetinfoStr:: primary_ip not empty: " + (not infoStr.response.is_empty).to_s)
 
 infoStr = curl.easy_getinfo_chars(new CURLInfoChars.local_ip)
 assert infoResp:infoStr != null
-print( "GetinfoStr:: local_ip not empty: " + (not infoStr.response.is_empty).to_s)
 
+# Not connecting to FTP so `null`
 infoStr = curl.easy_getinfo_chars(new CURLInfoChars.ftp_entry_path)
-assert infoResp:infoStr != null
-print "GetinfoStr:: ftp_entry_path: " + infoStr.response
+assert infoStr == null
 
+# opt private not set nor implemented, so returns null
 infoStr = curl.easy_getinfo_chars(new CURLInfoChars.private_data)
-assert infoResp:infoStr != null
-print "GetinfoStr:: private_data: " + infoStr.response
+assert infoStr == null
 
+# Not an RTSP connection so `null`
 infoStr = curl.easy_getinfo_chars(new CURLInfoChars.rtsp_session_id)
-assert infoResp:infoStr != null
-print "GetinfoStr:: rtsp_session_id: " + infoStr.response
+assert infoStr == null
 
 # CURLSList set
-var infoList:nullable CURLInfoResponseArray
-infoList = curl.easy_getinfo_slist(new CURLInfoSList.ssl_engines)
+var infoList = curl.easy_getinfo_slist(new CURLInfoSList.ssl_engines)
 assert infoResp:infoList != null
-print "GetSList:: ssl_engines: " + infoList.response.to_s
 
 infoList = curl.easy_getinfo_slist(new CURLInfoSList.cookielist)
 assert infoResp:infoList != null
-print "GetSList:: cookielist: " + infoList.response.to_s
 
 # CURLSList to Array
 var mailList = new CURLSList.with_str("titi")
@@ -241,4 +210,4 @@ var hashMapRefined = new HeaderMap
 hashMapRefined["hello"] = "toto"
 hashMapRefined["hello"] = "tata"
 hashMapRefined["allo"] = "foo"
-print hashMapRefined.to_url_encoded(new CCurl.easy_init)
+print hashMapRefined.to_url_encoded(new Curl)