2021-08-27 03:09:29 +02:00
|
|
|
|
|
|
|
_G.spy = spy
|
|
|
|
local mock_env = require("spec.env_mock")
|
|
|
|
|
|
|
|
describe("smr cacheing",function()
|
|
|
|
setup(mock_env.setup)
|
|
|
|
teardown(mock_env.teardown)
|
|
|
|
it("caches a page if the page is requested twice #working",function()
|
|
|
|
local read_get = require("endpoints.read_get")
|
|
|
|
local cache = require("cache")
|
|
|
|
renderspy = spy.on(cache,"render")
|
|
|
|
configure()
|
|
|
|
local req = {
|
|
|
|
method = "GET",
|
|
|
|
path = "/a",
|
|
|
|
args = {},
|
|
|
|
host = "test.host"
|
|
|
|
}
|
|
|
|
assert.spy(renderspy).called(0)
|
|
|
|
read_get(req)
|
|
|
|
assert.spy(renderspy).called(1)
|
|
|
|
read_get(req)
|
|
|
|
assert.spy(renderspy).called(2)
|
|
|
|
for row in cache.cache:rows("SELECT COUNT(*) FROM cache") do
|
|
|
|
assert(row[1] == 1, string.format(
|
|
|
|
"Exepected only one cache entry after" ..
|
|
|
|
"calling test.host/a 2 times " ..
|
|
|
|
", but got %d rows.", row[1]
|
|
|
|
))
|
|
|
|
end
|
|
|
|
end)
|
|
|
|
it("does not cache the page if the user is logged in", function()
|
|
|
|
local read_get = require("endpoints.read_get")
|
|
|
|
local cache = require("cache")
|
|
|
|
renderspy = spy.on(cache,"render")
|
|
|
|
configure()
|
2021-10-22 01:44:23 +02:00
|
|
|
for row in cache.cache:rows("SELECT COUNT(*) FROM cache") do
|
|
|
|
assert(row[1] == 0, string.format(
|
|
|
|
"Cache should not have any rows before " ..
|
|
|
|
"request have been made."
|
|
|
|
))
|
|
|
|
end
|
|
|
|
local req = mock_env.session()
|
|
|
|
req.method = "GET"
|
|
|
|
req.path = "/a"
|
|
|
|
req.args = {}
|
|
|
|
read_get(req)
|
|
|
|
for row in cache.cache:rows("SELECT COUNT(*) FROM cache") do
|
|
|
|
assert(row[1] == 0, string.format(
|
|
|
|
"Cache should not cache requests made by " ..
|
|
|
|
"logged in users."
|
|
|
|
))
|
|
|
|
end
|
2021-08-27 03:09:29 +02:00
|
|
|
end)
|
|
|
|
it("caches one page for domain/id and author.domain/id",function()
|
|
|
|
local read_get = require("endpoints.read_get")
|
|
|
|
local cache = require("cache")
|
|
|
|
configure()
|
|
|
|
local req_m = {__index = {
|
|
|
|
method = "GET",
|
|
|
|
path = "/a",
|
|
|
|
args = {}
|
|
|
|
}}
|
|
|
|
local base_host = {host="test.host"}
|
|
|
|
local base_req = setmetatable({host="test.host"},req_m)
|
|
|
|
read_get(base_req)
|
|
|
|
local user_req = setmetatable({host="admin.test.host"},req_m)
|
|
|
|
read_get(user_req)
|
|
|
|
for row in cache.cache:rows("SELECT COUNT(*) FROM cache") do
|
|
|
|
assert(row[1] == 1, string.format(
|
|
|
|
"Exepected only one cache entry for" ..
|
|
|
|
"'test.host/a' and 'admin.test.host/a'" ..
|
|
|
|
", but got %d rows.", row[1]
|
|
|
|
))
|
|
|
|
end
|
|
|
|
end)
|
|
|
|
it("detours configure",function()
|
|
|
|
local s = {}
|
|
|
|
local c = false
|
|
|
|
local oldconfigure = configure
|
|
|
|
--local index_get = require("endpoints.index_get")
|
|
|
|
--configure(s)
|
|
|
|
--assert(c)
|
|
|
|
end)
|
|
|
|
describe("author home page",function()
|
|
|
|
it("lists all stories by that author",function()
|
2021-10-22 01:44:23 +02:00
|
|
|
local read_get = require("endpoints.index_get")
|
|
|
|
local cache = require("cache")
|
|
|
|
configure()
|
|
|
|
local req_m = {__index = {
|
|
|
|
method = "GET",
|
|
|
|
path = "/a",
|
|
|
|
args = {}
|
|
|
|
}}
|
|
|
|
local base_host = {host="user.test.host"}
|
|
|
|
for row in cache.cache:rows("SELECT COUNT(*) FROM cache") do
|
|
|
|
assert(row[1] == 0, string.format(
|
|
|
|
"Before requesting user homepage " ..
|
|
|
|
"there should not be any pages in the " ..
|
|
|
|
"cache."
|
|
|
|
))
|
|
|
|
end
|
|
|
|
local base_req = setmetatable({host="user.test.host"},req_m)
|
|
|
|
read_get(base_req)
|
|
|
|
for row in cache.cache:rows("SELECT COUNT(*) FROM cache") do
|
|
|
|
assert(row[1] == 1, string.format(
|
|
|
|
"After reading the autor home page, " ..
|
|
|
|
" only that page should be cached."
|
|
|
|
))
|
|
|
|
end
|
|
|
|
read_get(base_req)
|
|
|
|
for row in cache.cache:rows("SELECT COUNT(*) FROM cache") do
|
|
|
|
assert(row[1] == 1, string.format(
|
|
|
|
"After reading the autor home page " ..
|
|
|
|
" twice only that page should be cached."
|
|
|
|
))
|
|
|
|
end
|
2021-08-27 03:09:29 +02:00
|
|
|
end)
|
|
|
|
end)
|
|
|
|
end)
|