Lua-cURLv3/test/test_safe.lua

288 lines
5.3 KiB
Lua

local lunit, RUN = lunit do
RUN = lunit and function()end or function ()
local res = lunit.run()
if res.errors + res.failed > 0 then
os.exit(-1)
end
return os.exit(0)
end
lunit = require "lunit"
end
local TEST_CASE = assert(lunit.TEST_CASE)
local skip = lunit.skip or function() end
local _ENV = TEST_CASE'error_mode' do
local c
function teardown()
if c then c:close() end
c = nil
end
function test_safe()
local curl = require "lcurl.safe"
c = assert(curl.easy())
assert_equal(c, c:setopt_url("aaaaa://123"))
assert_nil(c:perform())
end
function test_raise()
local curl = require "lcurl"
c = assert(curl.easy())
assert_equal(c, c:setopt_url("aaaaa://123"))
assert_error(function() c:perform() end)
end
end
local _ENV = TEST_CASE'setopt' do
local curl = require "lcurl.safe"
local c
function setup()
c = assert(curl.easy())
end
function teardown()
if c then c:close() end
c = nil
end
function test_number()
assert_equal(c, c:setopt_verbose(false))
assert_equal(c, c:setopt_verbose(true))
assert_equal(c, c:setopt_verbose(1))
assert_equal(c, c:setopt_verbose(0))
assert_error(function() c:setopt_verbose("1") end)
assert_error(function() c:setopt_verbose("true") end)
end
function test_string()
assert_error(function() c:setopt_url(true) end)
assert_error(function() c:setopt_url(1) end)
assert_equal(c, c:setopt_url("1"))
end
function test_array()
assert_error(function() c:setopt_httpheader(true) end)
assert_error(function() c:setopt_httpheader(1) end)
assert_error(function() c:setopt_httpheader("k:v")end)
assert_equal(c, c:setopt_httpheader{"k:v"})
end
function test_multiple_options()
assert_error(function() c:setopt{verbose = "false"} end)
assert_error(function() c:setopt{verbose = "1"} end)
assert_equal(c, c:setopt{verbose = false})
assert_equal(c, c:setopt{[curl.OPT_VERBOSE] = false})
end
end
local _ENV = TEST_CASE'error_object' do
local curl = require "lcurl"
function test()
local e1 = curl.error(curl.ERROR_EASY, 0) -- ok
assert_equal(curl.ERROR_EASY, e1:category())
assert_equal(curl.E_OK, e1:no())
assert_equal("OK", e1:name())
local e2 = curl.error(curl.ERROR_MULTI, 0) -- ok
local e3 = curl.error(curl.ERROR_MULTI, 0) -- ok
assert_equal(0, e1:no())
assert_equal(0, e2:no())
assert(e1 ~= e2)
assert(e3 == e2)
end
end
local _ENV = TEST_CASE'ctor' do
local scurl = require "lcurl.safe"
local curl = require "lcurl"
local c
function teardown()
if c then c:close() end
c = nil
end
function test_easy_error()
c = assert(curl.easy())
c:close()
c = assert(curl.easy{
url = "http://example.com",
[curl.OPT_VERBOSE] = true,
})
c:close()
assert_error(function()
c = curl.easy{
url_111 = "http://example.com",
}
end)
assert_error(function()
c = curl.easy{
url = 123,
}
end)
end
function test_easy_safe()
c = assert(scurl.easy())
c:close()
c = assert(scurl.easy{
url = "http://example.com",
[curl.OPT_VERBOSE] = true,
})
c:close()
assert_pass(function()
c = scurl.easy{
url_111 = "http://example.com",
}
end)
assert_nil(c)
assert_error(function()
c = scurl.easy{
url = 123,
}
end)
end
function test_multi_error()
c = assert(curl.multi())
c:close()
c = assert(curl.multi{
maxconnects = 10;
[curl.OPT_MULTI_PIPELINING] = true,
})
c:close()
assert_error(function()
c = curl.multi{
url_111 = "http://example.com",
}
end)
assert_error(function()
c = curl.multi{
maxconnects = "hello",
}
end)
end
function test_multi_safe()
c = assert(scurl.multi())
c:close()
c = assert(scurl.multi{
maxconnects = 10;
[curl.OPT_MULTI_PIPELINING] = true,
})
c:close()
assert_pass(function()
c = scurl.multi{
url_111 = "http://example.com",
}
end)
assert_nil(c)
assert_error(function()
c = scurl.multi{
maxconnects = "hello",
}
end)
end
function test_share_error()
assert(curl.LOCK_DATA_COOKIE)
c = assert(curl.share())
c:close()
c = assert(curl.share{
share = curl.LOCK_DATA_COOKIE;
})
c:close()
assert_error(function()
c = curl.share{
url_111 = "http://example.com",
}
end)
assert_error(function()
c = curl.share{
share = "hello";
}
end)
end
function test_share_safe()
assert(curl.LOCK_DATA_COOKIE)
c = assert(scurl.share())
c:close()
c = assert(curl.share{
share = scurl.LOCK_DATA_COOKIE;
})
c:close()
assert_pass(function()
c = scurl.share{
url_111 = "http://example.com",
}
end)
assert_error(function()
c = scurl.share{
share = "hello";
}
end)
end
end
local _ENV = TEST_CASE'objects_have_same_metatables' do
local scurl = require "lcurl.safe"
local curl = require "lcurl"
local e1, e2, m
function teardown()
if m then m:close() end
if e1 then e1:close() end
if e2 then e2:close() end
e1, e2, m = nil
end
function test_1()
e1 = assert(scurl.easy())
e2 = assert(curl.easy())
m = assert(scurl.multi())
assert_equal(m, m:add_handle(e1))
assert_equal(m, m:add_handle(e2))
end
function test_2()
e1 = assert(scurl.easy())
e2 = assert(curl.easy())
m = assert(curl.multi())
assert_equal(m, m:add_handle(e1))
assert_equal(m, m:add_handle(e2))
end
end
RUN()