Skip to content

Commit 19955e0

Browse files
committed
Merge pull request #7 from adobe-apiplatform/issue-6
Issue 6
2 parents 612fedf + cff310b commit 19955e0

File tree

2 files changed

+50
-4
lines changed

2 files changed

+50
-4
lines changed

src/lua/api-gateway/validation/oauth2/userProfileValidator.lua

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,11 @@ end
101101
function _M:getContextPropertiesObject(obj)
102102
local props = {}
103103
for k, v in pairs(obj) do
104-
props[k] = v
105-
if k == "user_name" or k == "user_first_name" or k == "user_last_name" then
106-
props[k] = ngx.escape_uri(v)
104+
if v ~= nil then
105+
props[k] = v
106+
if k == "user_name" or k == "user_first_name" or k == "user_last_name" then
107+
props[k] = ngx.escape_uri(tostring(v))
108+
end
107109
end
108110
end
109111
return props

test/perl/api-gateway/validation/oauth2/userProfileValidator.t

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use Cwd qw(cwd);
3131

3232
repeat_each(2);
3333

34-
plan tests => repeat_each() * (blocks() * 8 ) - 2;
34+
plan tests => repeat_each() * (blocks() * 8 ) - 6;
3535

3636
my $pwd = cwd();
3737

@@ -275,3 +275,47 @@ X-User-Name: display_name-%E5%B7%A5%EF%BC%8D%E5%A5%B3%EF%BC%8D%E9%95%BF
275275
--- error_code: 200
276276
--- no_error_log
277277
[error]
278+
279+
=== TEST 5: test ims_profile with a null name field
280+
--- http_config eval: $::HttpConfig
281+
--- config
282+
include ../../api-gateway/api-gateway-cache.conf;
283+
include ../../api-gateway/default_validators.conf;
284+
285+
error_log ../test-logs/userProfileValidator_test5_error.log debug;
286+
287+
location /test-validate-user {
288+
set $service_id s-123;
289+
# get OAuth token either from header or from the user_token query string
290+
set $authtoken $http_authorization;
291+
set_if_empty $authtoken $arg_user_token;
292+
set_by_lua $authtoken 'return ngx.re.gsub(ngx.arg[1], "bearer ", "","ijo") ' $authtoken;
293+
294+
set $validate_user_profile on;
295+
296+
access_by_lua "ngx.apiGateway.validation.validateRequest()";
297+
content_by_lua 'ngx.say("user_email=" .. ngx.var.user_email .. ",user_country_code=" .. ngx.var.user_country_code .. ",user_region=" .. ngx.var.user_region .. ",user_name=" .. ngx.var.user_name)';
298+
299+
add_header X-User-Id $user_email;
300+
add_header X-User-Country-Code $user_country_code;
301+
add_header X-User-Region $user_region;
302+
add_header X-User-Name $user_name;
303+
}
304+
305+
location /validate-user {
306+
internal;
307+
return 200 '{"countryCode":null,"emailVerified":"true","email":"noreply-ăâ@domain.com","userId":"1234","name":"full name","displayName":"display_name-工-女-长","last_name": null,"first_name": null}';
308+
}
309+
--- more_headers
310+
Authorization: Bearer SOME_OAUTH_TOKEN_TEST_FIVE
311+
--- request
312+
GET /test-validate-user
313+
--- response_body_like eval
314+
"^user_email=noreply-ăâ\@domain.com,user_country_code=,user_region=US,user_name=display_name-%E5%B7%A5%EF%BC%8D%E5%A5%B3%EF%BC%8D%E9%95%BF.*"
315+
--- response_headers_like
316+
X-User-Id: noreply-ăâ@domain.com
317+
X-User-Region: US
318+
X-User-Name: display_name-%E5%B7%A5%EF%BC%8D%E5%A5%B3%EF%BC%8D%E9%95%BF
319+
--- error_code: 200
320+
--- no_error_log
321+
[error]

0 commit comments

Comments
 (0)