diff --git a/example/akamai.jsonnet b/example/akamai.jsonnet index bc0e979..55cb229 100644 --- a/example/akamai.jsonnet +++ b/example/akamai.jsonnet @@ -13,6 +13,9 @@ test.suite { query: [ { key: 'x-akamai-session-info', value: 'name=RO_ENABLED; value=false' }, { key: 'x-akamai-session-info', value: 'name=AKA_PM_CACHEABLE_OBJECT; value=true' }, + { key: 'x-akamai-session-info', value: 'name=PMUSER_EXTRACTED_1; value=key1=value1; key2=value2; full_location_id=Name1; separator=%s' % test.utils.escapeString('%3d') }, + { key: 'x-akamai-session-info', value: 'name=PMUSER_EXTRACTED_2; value=key3=value3; key4=value4; full_location_id=Name2' }, + ], }) + test.pragma.getExtractedValues, tests: [ @@ -20,6 +23,8 @@ test.suite { test.assertExtractedValueExists('test.assertExtractedValueExists', 'AKA_PM_CACHEABLE_OBJECT'), test.assertExtractedValueDoesNotExist('test.assertExtractedValueDoesNotExist', 'FAKE_VARIABLE'), test.assertExtractedValueEquals('test.assertExtractedValueEquals', 'RO_ENABLED', 'false'), + test.assertExtractedValueEquals('test.assertExtractedValueEquals with full_location_id', 'PMUSER_EXTRACTED_1', 'key1=value1; key2=value2'), + test.assertExtractedValueEquals('test.assertExtractedValueEquals with full_location_id and separator', 'PMUSER_EXTRACTED_2', 'key3=value3; key4=value4'), test.assertExtractedValueDoesNotEqual('test.assertExtractedValueDoesNotEqual', 'RO_ENABLED', 'true'), test.assertExtractedValueMatches('test.assertExtractedValueMatches', 'RO_ENABLED', 'f.lse'), test.assertExtractedValueDoesNotMatch('test.assertExtractedValueDoesNotMatch', 'RO_ENABLED', 'tr.e'), diff --git a/src/js/akamai.js b/src/js/akamai.js index 4e48646..925cf40 100644 --- a/src/js/akamai.js +++ b/src/js/akamai.js @@ -203,7 +203,7 @@ akamai = { * as an object. */ extractedValues(response) { - let pat = /^name=([^;]*); value=([^;]*).*$/; + let pat = /^name=([^\s]*); value=(.*?)(?:; full_location_id=[^;]*(?:; separator=[^;]*)?)?$/; return getResponseHeaderValues(response, "x-akamai-session-info") .reduce(function (vars, value) { if (pat.test(value)) {