diff options
Diffstat (limited to 'plugin/business/pangu-http/src/test_pattern_replace.cpp')
| -rw-r--r-- | plugin/business/pangu-http/src/test_pattern_replace.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/plugin/business/pangu-http/src/test_pattern_replace.cpp b/plugin/business/pangu-http/src/test_pattern_replace.cpp index ccd9c1d..c993b06 100644 --- a/plugin/business/pangu-http/src/test_pattern_replace.cpp +++ b/plugin/business/pangu-http/src/test_pattern_replace.cpp @@ -173,6 +173,61 @@ TEST(PatternReplace, QueryAdd) printf("%s\n", output); free(output); + + return; +} + +TEST(PatternReplace, UrlReplace) +{ + int i=0, n_rule=0; + char replace_with[TFE_SYMBOL_MAX]={0}; + struct replace_rule *rule; + char *rewrite_uri=NULL; + + const char *rd_url = "http://www.example.com/query?pageid=12345&policy_id={{tsg_policy_id}}&user_id={{tsg_subscriber_id}}&source_ip={{tsg_client_ip}}"; + + if(strstr(rd_url, "policy_id")==NULL && strstr(rd_url, "user_id")==NULL && strstr(rd_url, "source_ip")==NULL) + { + return; + } + + rule = ALLOC(struct replace_rule, 3); + n_rule=0; + rule[n_rule].zone = kZoneRequestUri; + rule[n_rule].find = tfe_strdup("policy_id={{tsg_policy_id}}"); + snprintf(replace_with, TFE_SYMBOL_MAX, "policy_id=%d", 23); + rule[n_rule].replace_with = tfe_strdup(replace_with); + + n_rule=1; + memset(replace_with, TFE_SYMBOL_MAX, 0); + rule[n_rule].zone = kZoneRequestUri; + rule[n_rule].find = tfe_strdup("user_id={{tsg_subscriber_id}}"); + rule[n_rule].replace_with = tfe_strdup("user_id=te&st01"); + + n_rule=2; + memset(replace_with, TFE_SYMBOL_MAX, 0); + rule[n_rule].zone = kZoneRequestUri; + rule[n_rule].find = tfe_strdup("source_ip={{tsg_client_ip}}"); + rule[n_rule].replace_with = tfe_strdup("source_ip=192.168.50.71"); + + size_t rewrite_uri_sz = execute_replace_rule(rd_url, strlen(rd_url), kZoneRequestUri, rule, n_rule+1, &rewrite_uri, 1); + + for(i=0; i<n_rule+1; i++) + { + FREE(&(rule[i].find)); + FREE(&(rule[i].replace_with)); + } + FREE(&rule); + + if(rewrite_uri_sz > 0 && rewrite_uri != NULL) + { + printf("rewrite_uri = %s\n", rewrite_uri); + free(rewrite_uri); + } + else + { + printf("rd_url = %s\n", rd_url); + } return; } |
