include lua linter luacheck in github action (#1923)
This commit is contained in:
parent
5a85d50527
commit
65cb6a4c2a
|
@ -26,6 +26,12 @@ jobs:
|
||||||
source env/bin/activate
|
source env/bin/activate
|
||||||
luarocks install busted
|
luarocks install busted
|
||||||
luarocks install hasher
|
luarocks install hasher
|
||||||
|
luarocks install luacheck
|
||||||
|
|
||||||
|
- name: Lint code
|
||||||
|
run: |
|
||||||
|
source env/bin/activate
|
||||||
|
luacheck docker/nginx/libs --std ngx_lua+busted
|
||||||
|
|
||||||
- name: Unit Tests
|
- name: Unit Tests
|
||||||
run: |
|
run: |
|
||||||
|
|
|
@ -16,7 +16,8 @@ log_by_lua_block {
|
||||||
})
|
})
|
||||||
|
|
||||||
if err or (res and res.status ~= ngx.HTTP_NO_CONTENT) then
|
if err or (res and res.status ~= ngx.HTTP_NO_CONTENT) then
|
||||||
ngx.log(ngx.ERR, "Failed accounts service request /track/download/" .. skylink .. ": ", err or ("[HTTP " .. res.status .. "] " .. res.body))
|
local error_response = err or ("[HTTP " .. res.status .. "] " .. res.body)
|
||||||
|
ngx.log(ngx.ERR, "Failed accounts service request /track/download/" .. skylink .. ": ", error_response)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -40,7 +41,8 @@ log_by_lua_block {
|
||||||
})
|
})
|
||||||
|
|
||||||
if err or (res and res.status ~= ngx.HTTP_OK) then
|
if err or (res and res.status ~= ngx.HTTP_OK) then
|
||||||
ngx.log(ngx.ERR, "Failed malware-scanner request /scan/" .. skylink .. ": ", err or ("[HTTP " .. res.status .. "] " .. res.body))
|
local error_response = err or ("[HTTP " .. res.status .. "] " .. res.body)
|
||||||
|
ngx.log(ngx.ERR, "Failed malware-scanner request /scan/" .. skylink .. ": ", error_response)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,8 @@ log_by_lua_block {
|
||||||
})
|
})
|
||||||
|
|
||||||
if err or (res and res.status ~= ngx.HTTP_NO_CONTENT) then
|
if err or (res and res.status ~= ngx.HTTP_NO_CONTENT) then
|
||||||
ngx.log(ngx.ERR, "Failed accounts service request /track/registry/" .. registry_action .. ": ", err or ("[HTTP " .. res.status .. "] " .. res.body))
|
local error_response = err or ("[HTTP " .. res.status .. "] " .. res.body)
|
||||||
|
ngx.log(ngx.ERR, "Failed accounts service request /track/registry/" .. registry_action .. ": ", error_response)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,8 @@ log_by_lua_block {
|
||||||
})
|
})
|
||||||
|
|
||||||
if err or (res and res.status ~= ngx.HTTP_NO_CONTENT) then
|
if err or (res and res.status ~= ngx.HTTP_NO_CONTENT) then
|
||||||
ngx.log(ngx.ERR, "Failed accounts service request /track/upload/" .. skylink .. ": ", err or ("[HTTP " .. res.status .. "] " .. res.body))
|
local error_response = err or ("[HTTP " .. res.status .. "] " .. res.body)
|
||||||
|
ngx.log(ngx.ERR, "Failed accounts service request /track/upload/" .. skylink .. ": ", error_response)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -40,7 +41,8 @@ log_by_lua_block {
|
||||||
})
|
})
|
||||||
|
|
||||||
if err or (res and res.status ~= ngx.HTTP_OK) then
|
if err or (res and res.status ~= ngx.HTTP_OK) then
|
||||||
ngx.log(ngx.ERR, "Failed malware-scanner request /scan/" .. skylink .. ": ", err or ("[HTTP " .. res.status .. "] " .. res.body))
|
local error_response = err or ("[HTTP " .. res.status .. "] " .. res.body)
|
||||||
|
ngx.log(ngx.ERR, "Failed malware-scanner request /scan/" .. skylink .. ": ", error_response)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ local function divide_string( str, max )
|
||||||
|
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
local function number_to_bit( num, length )
|
local function number_to_bit( num, length )
|
||||||
local bits = {}
|
local bits = {}
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ function basexx.to_basexx( str, alphabet, bits, pad )
|
||||||
end
|
end
|
||||||
|
|
||||||
table.insert( result, pad )
|
table.insert( result, pad )
|
||||||
return table.concat( result )
|
return table.concat( result )
|
||||||
end
|
end
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
@ -225,16 +225,16 @@ local function length_error( len, d )
|
||||||
end
|
end
|
||||||
|
|
||||||
local z85Decoder = { 0x00, 0x44, 0x00, 0x54, 0x53, 0x52, 0x48, 0x00,
|
local z85Decoder = { 0x00, 0x44, 0x00, 0x54, 0x53, 0x52, 0x48, 0x00,
|
||||||
0x4B, 0x4C, 0x46, 0x41, 0x00, 0x3F, 0x3E, 0x45,
|
0x4B, 0x4C, 0x46, 0x41, 0x00, 0x3F, 0x3E, 0x45,
|
||||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||||
0x08, 0x09, 0x40, 0x00, 0x49, 0x42, 0x4A, 0x47,
|
0x08, 0x09, 0x40, 0x00, 0x49, 0x42, 0x4A, 0x47,
|
||||||
0x51, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A,
|
0x51, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A,
|
||||||
0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32,
|
0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32,
|
||||||
0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A,
|
0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A,
|
||||||
0x3B, 0x3C, 0x3D, 0x4D, 0x00, 0x4E, 0x43, 0x00,
|
0x3B, 0x3C, 0x3D, 0x4D, 0x00, 0x4E, 0x43, 0x00,
|
||||||
0x00, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,
|
0x00, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,
|
||||||
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
|
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
|
||||||
0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20,
|
0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20,
|
||||||
0x21, 0x22, 0x23, 0x4F, 0x00, 0x50, 0x00, 0x00 }
|
0x21, 0x22, 0x23, 0x4F, 0x00, 0x50, 0x00, 0x00 }
|
||||||
|
|
||||||
function basexx.from_z85( str, ignore )
|
function basexx.from_z85( str, ignore )
|
||||||
|
|
|
@ -82,7 +82,8 @@ function _M.get_account_limits()
|
||||||
|
|
||||||
-- fail gracefully in case /user/limits failed
|
-- fail gracefully in case /user/limits failed
|
||||||
if err or (res and res.status ~= ngx.HTTP_OK) then
|
if err or (res and res.status ~= ngx.HTTP_OK) then
|
||||||
ngx.log(ngx.ERR, "Failed accounts service request /user/limits?unit=byte: ", err or ("[HTTP " .. res.status .. "] " .. res.body))
|
local error_response = err or ("[HTTP " .. res.status .. "] " .. res.body)
|
||||||
|
ngx.log(ngx.ERR, "Failed accounts service request /user/limits?unit=byte: ", error_response)
|
||||||
ngx.var.account_limits = cjson.encode(anon_limits)
|
ngx.var.account_limits = cjson.encode(anon_limits)
|
||||||
elseif res and res.status == ngx.HTTP_OK then
|
elseif res and res.status == ngx.HTTP_OK then
|
||||||
ngx.var.account_limits = res.body
|
ngx.var.account_limits = res.body
|
||||||
|
@ -109,7 +110,7 @@ function _M.has_subscription()
|
||||||
end
|
end
|
||||||
|
|
||||||
function _M.is_auth_required()
|
function _M.is_auth_required()
|
||||||
-- authentication is required if mode is set to "authenticated"
|
-- authentication is required if mode is set to "authenticated"
|
||||||
-- or "subscription" (require active subscription to a premium plan)
|
-- or "subscription" (require active subscription to a premium plan)
|
||||||
return os.getenv("ACCOUNTS_LIMIT_ACCESS") == "authenticated" or _M.is_subscription_required()
|
return os.getenv("ACCOUNTS_LIMIT_ACCESS") == "authenticated" or _M.is_subscription_required()
|
||||||
end
|
end
|
||||||
|
@ -118,7 +119,7 @@ function _M.is_subscription_required()
|
||||||
return os.getenv("ACCOUNTS_LIMIT_ACCESS") == "subscription"
|
return os.getenv("ACCOUNTS_LIMIT_ACCESS") == "subscription"
|
||||||
end
|
end
|
||||||
|
|
||||||
function is_access_always_allowed()
|
local is_access_always_allowed = function ()
|
||||||
-- options requests do not attach cookies - should always be available
|
-- options requests do not attach cookies - should always be available
|
||||||
-- requests should not be limited based on accounts if accounts are not enabled
|
-- requests should not be limited based on accounts if accounts are not enabled
|
||||||
return ngx.req.get_method() == "OPTIONS" or not _M.accounts_enabled()
|
return ngx.req.get_method() == "OPTIONS" or not _M.accounts_enabled()
|
||||||
|
|
|
@ -27,7 +27,7 @@ function _M.hash(skylink)
|
||||||
|
|
||||||
-- parse with blake2b with key length of 32
|
-- parse with blake2b with key length of 32
|
||||||
local blake2bHashed = hasher.blake2b(rawMerkleRoot, 32)
|
local blake2bHashed = hasher.blake2b(rawMerkleRoot, 32)
|
||||||
|
|
||||||
-- hex encode the blake hash
|
-- hex encode the blake hash
|
||||||
local hexHashed = basexx.to_hex(blake2bHashed)
|
local hexHashed = basexx.to_hex(blake2bHashed)
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ describe("parse", function()
|
||||||
it("should return unchanged base64 skylink", function()
|
it("should return unchanged base64 skylink", function()
|
||||||
assert.is.same(skynet_skylink.parse(base64), base64)
|
assert.is.same(skynet_skylink.parse(base64), base64)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it("should transform base32 skylink into base64", function()
|
it("should transform base32 skylink into base64", function()
|
||||||
assert.is.same(skynet_skylink.parse(base32), base64)
|
assert.is.same(skynet_skylink.parse(base32), base64)
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -15,31 +15,31 @@ describe("extract_cookie", function()
|
||||||
|
|
||||||
it("should return nil if cookie string is nil", function()
|
it("should return nil if cookie string is nil", function()
|
||||||
local cookie = utils.extract_cookie_value(nil, "aaa")
|
local cookie = utils.extract_cookie_value(nil, "aaa")
|
||||||
|
|
||||||
assert.is_nil(cookie)
|
assert.is_nil(cookie)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it("should return nil if cookie name is not found", function()
|
it("should return nil if cookie name is not found", function()
|
||||||
local cookie = utils.extract_cookie(cookie_string, "foo")
|
local cookie = utils.extract_cookie(cookie_string, "foo")
|
||||||
|
|
||||||
assert.is_nil(cookie)
|
assert.is_nil(cookie)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it("should return cookie if cookie_string starts with that cookie name", function()
|
it("should return cookie if cookie_string starts with that cookie name", function()
|
||||||
local cookie = utils.extract_cookie(cookie_string, "aaa")
|
local cookie = utils.extract_cookie(cookie_string, "aaa")
|
||||||
|
|
||||||
assert.are.equals(cookie, "aaa=bbb")
|
assert.are.equals(cookie, "aaa=bbb")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it("should return cookie if cookie_string ends with that cookie name", function()
|
it("should return cookie if cookie_string ends with that cookie name", function()
|
||||||
local cookie = utils.extract_cookie(cookie_string, "xxx")
|
local cookie = utils.extract_cookie(cookie_string, "xxx")
|
||||||
|
|
||||||
assert.are.equals(cookie, "xxx=yyy")
|
assert.are.equals(cookie, "xxx=yyy")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it("should return cookie with custom matcher", function()
|
it("should return cookie with custom matcher", function()
|
||||||
local cookie = utils.extract_cookie(cookie_string, "skynet[-]jwt")
|
local cookie = utils.extract_cookie(cookie_string, "skynet[-]jwt")
|
||||||
|
|
||||||
assert.are.equals(cookie, "skynet-jwt=MTY0NzUyr8jD-ytiWtspm0tGabKfooxeIDuWcXhJ3lnY0eEw==")
|
assert.are.equals(cookie, "skynet-jwt=MTY0NzUyr8jD-ytiWtspm0tGabKfooxeIDuWcXhJ3lnY0eEw==")
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
@ -49,31 +49,31 @@ describe("extract_cookie_value", function()
|
||||||
|
|
||||||
it("should return nil if cookie string is nil", function()
|
it("should return nil if cookie string is nil", function()
|
||||||
local value = utils.extract_cookie_value(nil, "aaa")
|
local value = utils.extract_cookie_value(nil, "aaa")
|
||||||
|
|
||||||
assert.is_nil(value)
|
assert.is_nil(value)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it("should return nil if cookie name is not found", function()
|
it("should return nil if cookie name is not found", function()
|
||||||
local value = utils.extract_cookie_value(cookie_string, "foo")
|
local value = utils.extract_cookie_value(cookie_string, "foo")
|
||||||
|
|
||||||
assert.is_nil(value)
|
assert.is_nil(value)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it("should return value if cookie_string starts with that cookie name", function()
|
it("should return value if cookie_string starts with that cookie name", function()
|
||||||
local value = utils.extract_cookie_value(cookie_string, "aaa")
|
local value = utils.extract_cookie_value(cookie_string, "aaa")
|
||||||
|
|
||||||
assert.are.equals(value, "bbb")
|
assert.are.equals(value, "bbb")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it("should return cookie if cookie_string ends with that cookie name", function()
|
it("should return cookie if cookie_string ends with that cookie name", function()
|
||||||
local value = utils.extract_cookie_value(cookie_string, "xxx")
|
local value = utils.extract_cookie_value(cookie_string, "xxx")
|
||||||
|
|
||||||
assert.are.equals(value, "yyy")
|
assert.are.equals(value, "yyy")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it("should return cookie with custom matcher", function()
|
it("should return cookie with custom matcher", function()
|
||||||
local value = utils.extract_cookie_value(cookie_string, "skynet[-]jwt")
|
local value = utils.extract_cookie_value(cookie_string, "skynet[-]jwt")
|
||||||
|
|
||||||
assert.are.equals(value, "MTY0NzUyr8jD-ytiWtspm0tGabKfooxeIDuWcXhJ3lnY0eEw==")
|
assert.are.equals(value, "MTY0NzUyr8jD-ytiWtspm0tGabKfooxeIDuWcXhJ3lnY0eEw==")
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
Reference in New Issue