kong/t/01-pdk/09-service/01-set-upstream.t (7 lines of code) (raw):

use strict; use warnings FATAL => 'all'; use Test::Nginx::Socket::Lua; do "./t/Util.pm"; plan tests => repeat_each() * (blocks() * 3); run_tests(); __DATA__ === TEST 1: service.set_upstream() errors if not a string --- http_config eval: $t::Util::HttpConfig --- config location = /t { content_by_lua_block { local PDK = require "kong.pdk" local pdk = PDK.new() local pok, err = pcall(pdk.service.set_upstream, 127001) ngx.say(err) } } --- request GET /t --- response_body host must be a string --- no_error_log [error] === TEST 2: service.set_upstream() sets ngx.ctx.balancer_data.host --- http_config eval: $t::Util::HttpConfig --- config location = /t { set $upstream_host ''; content_by_lua_block { -- mock kong.runloop.balancer package.loaded["kong.runloop.balancer"] = { get_upstream_by_name = function(name) if name == "my_upstream" then return {} end end } local PDK = require "kong.pdk" local pdk = PDK.new() ngx.ctx.balancer_data = { host = "foo.xyz" } local ok = pdk.service.set_upstream("my_upstream") ngx.say(tostring(ok)) ngx.say("host: ", ngx.ctx.balancer_data.host) } } --- request GET /t --- response_body true host: my_upstream --- no_error_log [error] === TEST 3: service.set_upstream() fails when given an invalid upstream --- http_config eval: $t::Util::HttpConfig --- config location = /t { set $upstream_host ''; content_by_lua_block { -- mock kong.runloop.balancer package.loaded["kong.runloop.balancer"] = { get_upstream_by_name = function(name) if name == "my_upstream" then return {} end end } local PDK = require "kong.pdk" local pdk = PDK.new() ngx.ctx.balancer_data = { host = "foo.xyz" } local ok, err = pdk.service.set_upstream("not_an_upstream") ngx.say(tostring(ok)) ngx.say("err: ", err) } } --- request GET /t --- response_body nil err: could not find an Upstream named 'not_an_upstream' --- no_error_log [error]