diff options
author | Jiale Zhi <vipcalio@gmail.com> | 2013-10-29 11:26:14 -0700 |
---|---|---|
committer | Jiale Zhi <vipcalio@gmail.com> | 2013-10-29 11:26:14 -0700 |
commit | b4f8a86cd6ea00c13c7604c959c2f993e5e4e2cb (patch) | |
tree | 7eb7c64e5d99b43a6fed79924c3787602fa1df4e /lib | |
parent | 5399f7514c90c3a332229efd15264655dafc366a (diff) | |
download | lua-resty-cookie-b4f8a86cd6ea00c13c7604c959c2f993e5e4e2cb.tar.gz lua-resty-cookie-b4f8a86cd6ea00c13c7604c959c2f993e5e4e2cb.tar.bz2 lua-resty-cookie-b4f8a86cd6ea00c13c7604c959c2f993e5e4e2cb.zip |
Add test cases for empty value and no cookie header
Diffstat (limited to 'lib')
-rw-r--r-- | lib/resty/cookie.lua | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/lib/resty/cookie.lua b/lib/resty/cookie.lua index 652df57..87f8e74 100644 --- a/lib/resty/cookie.lua +++ b/lib/resty/cookie.lua @@ -1,10 +1,14 @@ -- Copyright (C) 2013 Jiale Zhi (calio), Cloudflare Inc. -require "luacov" +-- require "luacov" local type = type local get_string_byte = string.byte local get_string_sub = string.sub +local EQUAL = get_string_byte("=") +local SEMICOLON = get_string_byte(";") +local SPACE = get_string_byte(" ") + local ok, new_tab = pcall(require, "table.new") if not ok then @@ -13,7 +17,6 @@ end local _M = new_tab(0, 2) - _M._VERSION = '0.01' @@ -22,9 +25,10 @@ local mt = { __index = _M } local function get_cookie_table(text_cookie) if type(text_cookie) ~= "string" then - return nil, string.format( + ngx.log(ngx.ERR, string.format( "expect text_cookie to be \"string\" but found %s", - type(text_cookie)) + type(text_cookie))) + return {} end local cookie_table = {} @@ -39,13 +43,13 @@ local function get_cookie_table(text_cookie) while j <= #text_cookie do if state == EXPECT_KEY then - if get_string_byte(text_cookie, j) == get_string_byte("=") then + if get_string_byte(text_cookie, j) == EQUAL then key = get_string_sub(text_cookie, i, j - 1) state = EXPECT_VALUE i = j + 1 end elseif state == EXPECT_VALUE then - if get_string_byte(text_cookie, j) == get_string_byte(";") then + if get_string_byte(text_cookie, j) == SEMICOLON then value = get_string_sub(text_cookie, i, j - 1) cookie_table[key] = value @@ -54,7 +58,7 @@ local function get_cookie_table(text_cookie) i = j + 1 end elseif state == EXPECT_SP then - if get_string_byte(text_cookie, j) ~= get_string_byte(" ") then + if get_string_byte(text_cookie, j) ~= SPACE then state = EXPECT_KEY i = j j = j - 1 @@ -90,12 +94,7 @@ function _M.get_all(self) local err if self.cookie_table == nil then - ngx.log(ngx.NOTICE, "call get_cookie_table") - self.cookie_table, err = get_cookie_table(self._cookie) - if self.cookie_table == nil then - ngx.log(ngx.ERR, "failed to get all cookies: ", err) - return {} - end + self.cookie_table = get_cookie_table(self._cookie) end return self.cookie_table |