Added hdr mock

squeeze-backports
Victor Seva 13 years ago
parent f8b0d04c3e
commit dd89f9aa88

@ -3,9 +3,88 @@ require ('logging.file')
require 'lemock'
require 'ngcp.utils'
hdrMock = {
__class__ = 'hdrMock',
headers = {},
headers_reply = {},
_logger = logging.file('reports/sr_hdr_%s.log', '%Y-%m-%d'),
_logger_levels = {
dbg = logging.DEBUG,
info = logging.INFO,
warn = logging.WARN,
err = logging.ERROR,
crit = logging.FATAL
}
}
function hdrMock:new()
local t = {}
t.__class__ = 'hdrMock'
t.headers = {}
t.headers_reply = {}
function t._is_header(text)
local result = string.match(text,'[^:]+: .+\r\n$')
if result then
return true
end
return false
end
function t._get_header(text)
local _,v, result
local pattern = "^" .. text .. ": (.+)\r\n$"
if text then
for _,v in ipairs(t.headers) do
result = string.match(v, pattern)
--print(string.format("v:%s pattern:%s result:%s", v, pattern, tostring(result)))
if result then
return result
end
end
end
end
function t.append(text)
if text then
if not t._is_header(text) then
error("text: " .. text .. " malformed header")
end
table.insert(t.headers, text)
end
end
function t.insert(text)
if text then
if not t._is_header(text) then
error("text: " .. text .. " malformed header")
end
table.insert(t.headers, 1, text)
end
end
function t.remove(text)
local i,v
if text then
for i,v in ipairs(t.headers) do
if string.starts(v, text .. ":") then
table.remove(t.headers, i)
return
end
end
end
end
hdrMock_MT = { __index = hdrMock }
setmetatable(t, hdrMock_MT)
return t
end
-- end class
pvMock = {
__class__ = 'pvMock',
vars = {},
hdr = nil,
_logger = logging.file('reports/sr_pv_%s.log', '%Y-%m-%d'),
_logger_levels = {
dbg = logging.DEBUG,
@ -15,11 +94,12 @@ pvMock = {
crit = logging.FATAL
}
}
function pvMock:new()
function pvMock:new(hdr)
local t = {}
t.__class__ = 'pvMock'
t.vars = {}
t.hdr = hdr
function t._is_xavp(id)
local _id, indx, key
@ -77,6 +157,18 @@ pvMock = {
end
end
function t._is_hdr(id)
local key, _, v
local patterns = {
'%$hdr%(([^:]+)%)$',
}
for _,v in pairs(patterns) do
for key in string.gmatch(id, v) do
return { id=key, clean=false, type='hdr' }
end
end
end
function t._is(id)
if not id then
error("id empty")
@ -89,6 +181,9 @@ pvMock = {
if not result then
result = t._is_var(id)
end
if not result then
result = t._is_hdr(id)
end
if not result then
error(string.format("not implemented or wrong id:%s", id))
end
@ -101,7 +196,7 @@ pvMock = {
if not result then
return
end
if result.type == 'var' then
return t.vars[result.private_id]
elseif result.type == 'xavp' then
@ -114,7 +209,7 @@ pvMock = {
else
result.real_indx = #t.vars[result.private_id]._et - result.indx
return t.vars[result.private_id]._et[result.real_indx]
end
end
end
if not result.indx then
result.indx = 0
@ -132,6 +227,10 @@ pvMock = {
return l[1]
end
end
elseif result.type == 'hdr' then
if t.hdr then
return t.hdr._get_header(result.id)
end
end
end
@ -267,7 +366,6 @@ pvMock = {
-- class srMock
srMock = {
__class__ = 'srMock',
pv = pvMock:new(),
_logger = logging.file("reports/sr_%s.log", "%Y-%m-%d"),
_logger_levels = {
dbg = logging.DEBUG,
@ -280,6 +378,8 @@ srMock = {
srMock_MT = { __index = srMock, __newindex = lemock.controller():mock() }
function srMock:new()
local t = {}
t.hdr = hdrMock:new()
t.pv = pvMock:new(t.hdr)
function t.log(level, message)
if not t._logger_levels[level] then
error(string.format("level %s unknown", level))

@ -11,6 +11,47 @@ TestMock = {}
m.toto( 33, "abc", { 21} )
end
TestHDRMock = {}
function TestHDRMock:setUp()
self.hdr = hdrMock:new()
end
function TestHDRMock:tearDown()
self.hdr.headers = {}
self.hdr.headers_reply = {}
end
function TestHDRMock:test_is_header()
assertTrue(self.hdr._is_header("From: hi@there.com\r\n"))
assertFalse(self.hdr._is_header("From hi@there.com\r\n"))
assertFalse(self.hdr._is_header("From: hi@there.com\r"))
assertFalse(self.hdr._is_header("From : hi@there.com\n"))
assertFalse(self.hdr._is_header("From : hi@there.com\n\r"))
assertTrue(self.hdr._is_header("From: hi@there.com:8080\r\n"))
end
function TestHDRMock:test_append()
assertFalse(self.hdr._get_header("From"))
self.hdr.append("From: hi@there.com\r\n")
assertEquals(self.hdr.headers, {"From: hi@there.com\r\n"})
self.hdr.append("To: bye@there.com\r\n")
assertEquals(self.hdr.headers, {"From: hi@there.com\r\n", "To: bye@there.com\r\n"})
end
function TestHDRMock:test_insert()
assertFalse(self.hdr._get_header("From"))
self.hdr.insert("From: hi@there.com\r\n")
assertEquals(self.hdr.headers, {"From: hi@there.com\r\n"})
self.hdr.insert("To: bye@there.com\r\n")
assertEquals(self.hdr.headers, {"To: bye@there.com\r\n", "From: hi@there.com\r\n"})
end
function TestHDRMock:test_get_header()
self:test_append()
assertEquals(self.hdr._get_header("From"), "hi@there.com")
end
-- end class
TestSRMock = {}
function TestSRMock:setUp()
self.sr = srMock:new()
@ -30,6 +71,26 @@ TestSRMock = {}
assertEquals(self.sr.pv._clean_id('u25'), 'u25')
end
function TestSRMock:test_is_hdr_simple()
local result
result = self.sr.pv._is_hdr("$hdr(id)")
assertTrue(result)
assertEquals(result.type, 'hdr')
assertEquals(result.id, 'id')
assertEquals(result.key, nil)
assertFalse(result.clean)
end
function TestSRMock:test_is_hdr_complex()
local result
result = self.sr.pv._is_hdr("$hdr($si)")
assertTrue(result)
assertEquals(result.type, 'hdr')
assertEquals(result.id, '$si')
assertEquals(result.key, nil)
assertFalse(result.clean)
end
function TestSRMock:test_is_xavp_simple()
local result
result = self.sr.pv._is_xavp("$xavp(id=>key)")
@ -235,7 +296,7 @@ TestSRMock = {}
v = 1
for i=#vals,1,-1 do
assertEquals(l[i],vals[v])
v = v + 1
v = v + 1
end
end
@ -250,6 +311,12 @@ TestSRMock = {}
assertEquals(self.sr.pv.get("$(avp(s:hithere)[*])"), {"new_value"})
end
function TestSRMock:test_hdr_get()
self.sr.hdr.insert("From: hola\r\n")
assertEquals(self.sr.hdr.headers, {"From: hola\r\n"})
assertEquals(self.sr.pv.get("$hdr(From)"), "hola")
end
function TestSRMock:test_unset_var()
self.sr.pv.sets("$var(hithere)", "value")
assertEquals(self.sr.pv.get("$var(hithere)"), "value")
@ -273,7 +340,7 @@ TestSRMock = {}
self.sr.pv.sets("$xavp(g=>t)", "value1")
assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), "value1")
assertEquals(self.sr.pv.get("$xavp(g[1]=>t)"), "value")
--
--
self.sr.pv.unset("$xavp(g[0]=>t)")
assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), nil)
assertEquals(self.sr.pv.get("$xavp(g[1]=>t)"), "value")
@ -293,7 +360,7 @@ TestSRMock = {}
assertEquals(self.sr.pv.get("$xavp(g[1]=>t)"), "value")
self.sr.pv.sets("$xavp(g[1]=>z)", "value_z")
assertEquals(self.sr.pv.get("$xavp(g[1]=>z)"), "value_z")
--
--
self.sr.pv.unset("$xavp(g[0])")
assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), nil)
assertEquals(self.sr.pv.get("$xavp(g[1]=>t)"), "value")

Loading…
Cancel
Save