123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- use Test::Nginx::Socket;
- our $HttpConfig = <<'_EOC_';
- lua_package_path "lib/?.lua;/usr/local/share/lua/5.1/?.lua;;";
- _EOC_
- repeat_each(3);
- plan tests => repeat_each() * (blocks() * 3);
- run_tests();
- __DATA__
- === TEST 1: int_to_char_length
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local utils = require "resty.t1k.utils"
- ngx.say("255 to char length: ", utils.int_to_char_length(255))
- ngx.print("16777216 to char length: ", utils.int_to_char_length(16777216))
- }
- }
- --- request
- GET /t
- --- response_body eval
- "255 to char length: \x{ff}\x{00}\x{00}\x{00}
- 16777216 to char length: \x{00}\x{00}\x{00}\x{01}"
- --- no_error_log
- [error]
- === TEST 2: int_to_char_length
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local utils = require "resty.t1k.utils"
- ngx.say("0xff 0x00 0x00 0x00 to int length: ", utils.char_to_int_length("\xff\x00\x00\x00"))
- ngx.say("0x00 0x00 0x00 0x01 to int length: ", utils.char_to_int_length("\x00\x00\x00\x01"))
- }
- }
- --- request
- GET /t
- --- response_body
- 0xff 0x00 0x00 0x00 to int length: 255
- 0x00 0x00 0x00 0x01 to int length: 16777216
- --- no_error_log
- [error]
- === TEST 3: is_mask_first
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local utils = require "resty.t1k.utils"
- ngx.say("0x30 is MASK FIRST: ", utils.is_mask_first(0x30))
- ngx.say("0x41 is MASK FIRST: ", utils.is_mask_first(0x41))
- ngx.say("0xc0 is MASK FIRST: ", utils.is_mask_first(0xc0))
- ngx.say("0xc1 is MASK FIRST: ", utils.is_mask_first(0xc1))
- }
- }
- --- request
- GET /t
- --- response_body
- 0x30 is MASK FIRST: false
- 0x41 is MASK FIRST: true
- 0xc0 is MASK FIRST: true
- 0xc1 is MASK FIRST: true
- --- no_error_log
- [error]
- === TEST 4: is_mask_last
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local utils = require "resty.t1k.utils"
- ngx.say("0x41 is MASK LAST: ", utils.is_mask_last(65))
- ngx.say("0x80 is MASK LAST: ", utils.is_mask_last(128))
- }
- }
- --- request
- GET /t
- --- response_body
- 0x41 is MASK LAST: false
- 0x80 is MASK LAST: true
- --- no_error_log
- [error]
- === TEST 5: packet_parser unfinished
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local utils = require "resty.t1k.utils"
- local finished, tag, length = utils.packet_parser("\x41\x59\x00\x00\x00")
- ngx.say("finished: ", finished)
- ngx.say("tag == TAG_HEAD: ", tag == 1)
- ngx.say("length: ", 89)
- }
- }
- --- request
- GET /t
- --- response_body
- finished: false
- tag == TAG_HEAD: true
- length: 89
- --- no_error_log
- [error]
- === TEST 6: packet_parser finished
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local utils = require "resty.t1k.utils"
- local finished, tag, length = utils.packet_parser("\xa0\x08\x00\x00\x00")
- ngx.say("finished: ", finished)
- ngx.say("tag == TAG_VERSION: ", tag == 32)
- ngx.say("length: ", 8)
- }
- }
- --- request
- GET /t
- --- response_body
- finished: true
- tag == TAG_VERSION: true
- length: 8
- --- no_error_log
- [error]
- === TEST 7: starts_with
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local utils = require "resty.t1k.utils"
- ngx.say("http://www.baidu.com starts with \"http\": ", utils.starts_with("http://www.baidu.com", "http"))
- ngx.say("http://www.baidu.com starts with \"https\": ", utils.starts_with("http://www.baidu.com", "https"))
- }
- }
- --- request
- GET /t
- --- response_body
- http://www.baidu.com starts with "http": true
- http://www.baidu.com starts with "https": false
- --- no_error_log
- [error]
- === TEST 8: to_var_idx
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local utils = require "resty.t1k.utils"
- local fmt = string.format
- ngx.say(fmt("http_x_real_ip is %s and %s", utils.to_var_idx("http_x_real_ip")))
- ngx.say(fmt("X_REAL_IP is %s and %s", utils.to_var_idx("X_REAL_IP")))
- ngx.say(fmt("X-Forwarded-For: 1 is %s and %d", utils.to_var_idx("X-Forwarded-For: 1")))
- ngx.say(fmt("X-Forwarded-For: -1 is %s and %d", utils.to_var_idx("X-Forwarded-For: -1")))
- ngx.say(fmt("X-FORWARDED-FOR:100 is %s and %d", utils.to_var_idx("X-FORWARDED-FOR:-100")))
- }
- }
- --- request
- GET /t
- --- response_body
- http_x_real_ip is http_x_real_ip and nil
- X_REAL_IP is http_x_real_ip and nil
- X-Forwarded-For: 1 is http_x_forwarded_for and 1
- X-Forwarded-For: -1 is http_x_forwarded_for and -1
- X-FORWARDED-FOR:100 is http_x_forwarded_for and -100
- --- no_error_log
- [error]
- === TEST 9: get_indexed_element
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local utils = require "resty.t1k.utils"
- ngx.say("X-Forwarded-For: 1 is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, 1))
- ngx.say("X-Forwarded-For: 2 is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, 2))
- ngx.say("X-Forwarded-For: 3 is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, 3))
- ngx.say("X-Forwarded-For: 4 is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, 4))
- ngx.say("X-Forwarded-For: 5 is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, 5))
- ngx.say("X-Forwarded-For: -1 is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, -1))
- ngx.say("X-Forwarded-For: -2 is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, -2))
- ngx.say("X-Forwarded-For: -3 is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, -3))
- ngx.say("X-Forwarded-For: -4 is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, -4))
- ngx.say("X-Forwarded-For: -5 is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, -5))
- ngx.say("X-Forwarded-For: 0 is ", utils.get_indexed_element(ngx.var.http_x_forwarded_for, 0))
- ngx.say("X-Non-Existent-Header is ", utils.get_indexed_element(ngx.var.http_non_existent_header))
- ngx.say("X-Real-IP is ", utils.get_indexed_element(ngx.var.http_x_real_ip))
- ngx.say("X-Real-IP: 1 is ", utils.get_indexed_element(ngx.var.http_x_real_ip, 1))
- ngx.say("X-Real-IP: 2 is ", utils.get_indexed_element(ngx.var.http_x_real_ip, 2))
- ngx.say("X-Real-IP: -1 is ", utils.get_indexed_element(ngx.var.http_x_real_ip, -1))
- ngx.say("X-Real-IP: -2 is ", utils.get_indexed_element(ngx.var.http_x_real_ip, -2))
- }
- }
- --- request
- GET /t
- --- more_headers
- X-Forwarded-For: 1.1.1.1, 2.2.2.2
- X-Forwarded-For: 3.3.3.3, 4.4.4.4
- X-Real-IP: 10.10.10.10
- --- response_body
- X-Forwarded-For: 1 is 1.1.1.1
- X-Forwarded-For: 2 is 2.2.2.2
- X-Forwarded-For: 3 is 3.3.3.3
- X-Forwarded-For: 4 is 4.4.4.4
- X-Forwarded-For: 5 is nil
- X-Forwarded-For: -1 is 4.4.4.4
- X-Forwarded-For: -2 is 3.3.3.3
- X-Forwarded-For: -3 is 2.2.2.2
- X-Forwarded-For: -4 is 1.1.1.1
- X-Forwarded-For: -5 is nil
- X-Forwarded-For: 0 is 1.1.1.1, 2.2.2.2, 3.3.3.3, 4.4.4.4
- X-Non-Existent-Header is nil
- X-Real-IP is 10.10.10.10
- X-Real-IP: 1 is 10.10.10.10
- X-Real-IP: 2 is nil
- X-Real-IP: -1 is 10.10.10.10
- X-Real-IP: -2 is nil
- --- no_error_log
- [error]
- === TEST 10: get_event_id
- --- http_config eval: $::HttpConfig
- --- config
- location /t {
- content_by_lua_block {
- local utils = require "resty.t1k.utils"
- ngx.say(utils.get_event_id("<!-- event_id: 0988987de04844c7a3ce6d27865c9513 -->"))
- ngx.say(utils.get_event_id("<!-- event_id: 8bae6adf33864c7f8bf715a9b7a65b2c TYPE: A -->"))
- ngx.say(utils.get_event_id("<!-- TYPE B -->"))
- }
- }
- --- request
- GET /t
- --- response_body
- 0988987de04844c7a3ce6d27865c9513
- 8bae6adf33864c7f8bf715a9b7a65b2c
- nil
- --- no_error_log
- [error]
|