66 lines
2.1 KiB
Lua
66 lines
2.1 KiB
Lua
|
-- luacheck: ignore io
|
||
|
|
||
|
local utils = require('utils')
|
||
|
local skynet_utils = require('skynet.utils')
|
||
|
|
||
|
describe("authorization_header", function()
|
||
|
local apipassword = "ddd0c1430fbf2708"
|
||
|
local expected_header = "Basic OmRkZDBjMTQzMGZiZjI3MDg"
|
||
|
|
||
|
it("reads SIA_API_PASSWORD from env variable and returns a header", function()
|
||
|
-- stub getenv on SIA_API_PASSWORD
|
||
|
stub(utils, "getenv")
|
||
|
utils.getenv.on_call_with("SIA_API_PASSWORD").returns(apipassword)
|
||
|
|
||
|
local header = skynet_utils.authorization_header()
|
||
|
|
||
|
assert.is_equal(header, expected_header)
|
||
|
|
||
|
-- revert stub to original function
|
||
|
utils.getenv:revert()
|
||
|
end)
|
||
|
|
||
|
it("uses /data/sia/apipassword file if SIA_API_PASSWORD env var is missing", function()
|
||
|
-- stub /data/sia/apipassword file
|
||
|
stub(io, "open")
|
||
|
io.open.on_call_with("/data/sia/apipassword", "rb").returns(mock({
|
||
|
read = spy.new(function() return apipassword end),
|
||
|
close = spy.new()
|
||
|
}))
|
||
|
|
||
|
local header = skynet_utils.authorization_header()
|
||
|
|
||
|
assert.is_equal(header, expected_header)
|
||
|
|
||
|
-- revert stub to original function
|
||
|
io.open:revert()
|
||
|
end)
|
||
|
|
||
|
it("should choose env variable over file if both are available", function()
|
||
|
-- stub getenv on SIA_API_PASSWORD
|
||
|
stub(utils, "getenv")
|
||
|
utils.getenv.on_call_with("SIA_API_PASSWORD").returns(apipassword)
|
||
|
|
||
|
-- stub /data/sia/apipassword file
|
||
|
stub(io, "open")
|
||
|
io.open.on_call_with("/data/sia/apipassword", "rb").returns(mock({
|
||
|
read = spy.new(function() return "foooooooooooooo" end),
|
||
|
close = spy.new()
|
||
|
}))
|
||
|
|
||
|
local header = skynet_utils.authorization_header()
|
||
|
|
||
|
assert.is_equal(header, "Basic OmRkZDBjMTQzMGZiZjI3MDg")
|
||
|
|
||
|
-- revert stubs to original function
|
||
|
utils.getenv:revert()
|
||
|
io.open:revert()
|
||
|
end)
|
||
|
|
||
|
it("should error out if neither env variable is available nor file exists", function()
|
||
|
assert.has_error(function()
|
||
|
skynet_utils.authorization_header()
|
||
|
end, "Error reading /data/sia/apipassword file")
|
||
|
end)
|
||
|
end)
|