md_offliner/spec/netw_ops_spec.lua
2020-07-23 19:47:36 +05:00

194 lines
5.9 KiB
Lua

local NetwOps = require("src.netw_ops")
local Utils = require("spec.utils")
local assets_dir = './spec/assets/'
describe('netw_ops', function()
describe('download_to', function()
local function clean()
Utils.clean_assets({'reference.html', 'Readme.html', 'tux.png'})
end
before_each(clean)
after_each(clean)
it('Saves file into output', function()
NetwOps.download_to('http://w3.impa.br/~diego/software/luasocket/reference.html', assets_dir)
local f = io.open(assets_dir .. 'reference.html', 'r')
local reference = io.open(assets_dir .. 'ref.html', 'r')
local content = f:read('a')
local ref_content = reference:read('a')
assert.truthy(f)
assert.equal(ref_content, content)
f:close()
reference:close()
end)
it('Works with HTTPS protocol', function()
NetwOps.download_to('https://raw.githubusercontent.com/Dm1tr1y147/thetriangle/master/Readme.txt',
assets_dir)
local f = io.open(assets_dir .. 'Readme.txt', 'r')
local reference = io.open(assets_dir .. 'Rref.txt', 'r')
local content = f:read('a')
local ref_content = reference:read('a')
assert.truthy(f)
assert.equal(ref_content, content)
f:close()
reference:close()
end)
it('Works with binary files', function()
NetwOps.download_to(
'https://d33wubrfki0l68.cloudfront.net/e7ed9fe4bafe46e275c807d63591f85f9ab246ba/e2d28/assets/images/tux.png',
assets_dir)
local f = io.open(assets_dir .. 'tux.png', "r")
assert.truthy(f)
f:close()
end)
end)
describe('get_file_name', function()
it('Gets last element of path', function()
assert.equal('tux.png', NetwOps.get_file_name('https://test.com/tux.png'))
end)
it("Doesn't return anything if no filename", function()
assert.equal('', NetwOps.get_file_name('https://test.com/'))
end)
end)
describe('scp_wrap', function()
local function clean()
Utils.clean_assets({'downloaded.txt'})
end
before_each(clean)
after_each(clean)
it('Downloads file from server', function()
local res = NetwOps.scp_wrap(
'dm1sh@192.168.0.18:/mnt/hdd/Work/Development/Lua/md-offliner/spec/assets/Rref.txt',
assets_dir .. 'downloaded.txt')
assert.is_not_nil(res)
local orig_f = io.open(assets_dir .. 'Rref.txt')
local dest_f = io.open(assets_dir .. 'downloaded.txt')
assert.is_not_nil(dest_f)
local orig_content = orig_f:read('a')
local dest_content = dest_f:read('a')
orig_f:close()
dest_f:close()
assert.equal(orig_content, dest_content)
end)
end)
describe('upload_dir', function()
local function clean()
Utils.clean_assets({'output_dir/'})
end
before_each(clean)
after_each(clean)
it('Uploads all files in directory to server', function()
NetwOps.upload_dir(assets_dir .. 'tmp_dir/', 'dm1sh@192.168.0.18',
'/mnt/hdd/Work/Development/Lua/md-offliner/spec/assets/output_dir/')
local ref_dir = Utils.list_dir(assets_dir .. 'tmp_dir')
local dest_dir = Utils.list_dir(assets_dir .. 'output_dir')
assert.are.same(ref_dir, dest_dir)
end)
end)
describe('download_config', function()
local function clean()
Utils.clean_assets({'tmp_dir/list.db'})
end
before_each(clean)
after_each(clean)
teardown(clean)
it('Downloads database file from server', function()
NetwOps.download_db('dm1sh@192.168.0.18', '/mnt/hdd/Work/Development/Lua/md-offliner/spec/assets/',
assets_dir .. '/tmp_dir')
local ref_file = io.open(assets_dir .. 'list.db', 'r')
local file = io.open(assets_dir .. 'tmp_dir/list.db', 'r')
assert.is_not_nil(file)
local ref_content = ref_file:read('a')
local content = file:read('a')
assert.equal(ref_content, content)
ref_file:close()
file:close()
end)
end)
describe('insert_article', function()
local function clean()
Utils.clean_assets({'ref_list.db'})
end
setup(function()
Utils.copy_file(assets_dir .. 'list.db', assets_dir .. 'ref_list.db')
end)
before_each(function()
Utils.copy_file(assets_dir .. 'ref_list.db', assets_dir .. 'list.db')
end)
teardown(function()
Utils.copy_file(assets_dir .. 'ref_list.db', assets_dir .. 'list.db')
clean()
end)
it('Adds article to file', function()
NetwOps.insert_article(assets_dir, 'Test_article')
local ref_list = io.open(assets_dir .. 'ref_list.db', 'r')
local list = io.open(assets_dir .. 'list.db', 'r')
assert.equal(ref_list:read('a') .. math.floor(os.time()) .. ' Test_article', list:read('a'))
ref_list:close()
list:close()
end)
it('Updates if entry exists', function()
local list = io.open(assets_dir .. 'list.db', 'a')
list:write('5647546 Test_article\n')
list:close()
NetwOps.insert_article(assets_dir, 'Test_article')
local ref_list = io.open(assets_dir .. 'ref_list.db', 'r')
list = io.open(assets_dir .. 'list.db', 'r')
assert.equal(ref_list:read('a') .. math.floor(os.time()) .. ' Test_article', list:read('a'))
ref_list:close()
list:close()
end)
end)
end)