#include #include "edit_element.h" #include #include #include #include #include TEST(EditElement, Libxml_Whole_Remove_Index01) { char* output=NULL; size_t output_sz=0; const char *input = "\n\n\nindex\n\n\n\n

body

\n

hello world

\n跳转\n\n\n\n\n"; const char *user_region = "{\"rules\":[{\"anchor_element\":{\"search_scope\":\"whole_file\",\"contained_keyword\":\"hello world\"},\ \"target_element\":{\"target_distance_from_matching\":0,\"element_treatment\":\"remove\"}}]}"; simple_edit_element(user_region, input, strlen(input), &output, &output_sz, 0); EXPECT_TRUE(output_sz>0); printf("output = %s\n", output); EXPECT_TRUE(NULL==strstr(output, "hello world")); free(output); } TEST(EditElement, Libxml_Whole_Mark_Index01) { char* output=NULL; size_t output_sz=0; const char *input = "\n\n\nindex\n\n\n\n

body

\n

hello world

\n跳转\n\n\n\n\n"; const char *user_region = "{\"rules\":[{\"anchor_element\":{\"search_scope\":\"whole_file\",\"contained_keyword\":\"hello world\"},\ \"target_element\":{\"target_distance_from_matching\":0,\"element_treatment\":\"mark\"}}]}"; simple_edit_element(user_region, input, strlen(input), &output, &output_sz, 0); EXPECT_TRUE(output_sz>0); const char *expect_output = "\n\n\nindex\n\n\n\n

body

\n

hello world

\n跳转\n\n\n\n\n"; printf("output = %s\n", output); EXPECT_TRUE(0==strcmp(output, expect_output)); free(output); } TEST(EditElement, Libxml_Inside_Remove_Index01) { char* output=NULL; size_t output_sz=0; const char *input = "\n\n\nindex\n\n\n\n

body

\n

hello world

\n\ 跳转\n\n\n\n\n"; const char *user_region = "{\"rules\":[{\"anchor_element\":{\"search_scope\":\"inside_element\",\"start_indicator\":\"LC20lb\",\"contained_keyword\":\"hello world\"},\ \"target_element\":{\"target_distance_from_matching\":0,\"element_treatment\":\"remove\"}}]}"; simple_edit_element(user_region, input, strlen(input), &output, &output_sz, 0); EXPECT_TRUE(output_sz>0); printf("output = %s\n", output); EXPECT_TRUE(NULL==strstr(output, "hello world")); free(output); } TEST(EditElement, Cjson_Whole_Remove_Simple) { char* output=NULL; size_t output_sz=0; const char *input = "{\"testkey\":\"value\",\"verifyList\":[{\"policyType\":\"tsg_security\",\"verifySession\":{\"attributes\":[{\"attributeType\":\"ip\",\"attributeValue\":{\"ip\":\"192.168.50.37\"}},{\"attributeType\":\"ip\",\"attributeValue\":{\"ip\":\"2.5.6.7\"}},{\"attributeType\":\"ip\",\"attributeValue\":{\"ip\":\"192.168.50.37\"}}]}}]}"; const char *user_region = "{\"rules\":[{\"anchor_element\":{\"search_scope\":\"whole_file\",\"contained_keyword\":\"192.168.50.37\"},\ \"target_element\":{\"target_distance_from_matching\":2,\"element_treatment\":\"remove\"}}]}"; simple_edit_element(user_region, input, strlen(input), &output, &output_sz, 0); EXPECT_TRUE(output_sz>0); printf("output = %s\n", output); EXPECT_TRUE(NULL==strstr(output, "192.168.50.37")); free(output); } TEST(EditElement, Cjson_Whole_mark_Simple) { char* output=NULL; size_t output_sz=0; const char *input = "{\"testkey\":\"value\",\"verifyList\":[{\"policyType\":\"tsg_security\",\"verifySession\":{\"attributes\":[{\"attributeType\":\"ip\",\"attributeValue\":{\"ip\":\"192.168.50.37\"}},{\"attributeType\":\"ip\",\"attributeValue\":{\"ip\":\"2.5.6.7\"}},{\"attributeType\":\"ip\",\"attributeValue\":{\"ip\":\"192.168.50.37\"}}]}}]}"; const char *user_region = "{\"rules\":[{\"anchor_element\":{\"search_scope\":\"whole_file\",\"contained_keyword\":\"192.168.50.37\"},\ \"target_element\":{\"target_distance_from_matching\":2,\"element_treatment\":\"mark\"}}]}"; simple_edit_element(user_region, input, strlen(input), &output, &output_sz, 0); EXPECT_TRUE(output_sz>0); const char *expect_output = "{\"testkey\":\"value\",\"verifyList\":[{\"policyType\":\"tsg_security\",\"verifySession\":{\"attributes\":[{\"attributeType\":\"ip\",\"attributeValue\":{\"ip\":\"192.168.50.37\"},\"need_filter\":true},{\"attributeType\":\"ip\",\"attributeValue\":{\"ip\":\"2.5.6.7\"}},{\"attributeType\":\"ip\",\"attributeValue\":{\"ip\":\"192.168.50.37\"},\"need_filter\":true}]}}],\"need_check\":true}"; printf("output = %s\n", output); EXPECT_TRUE(0==strcmp(output, expect_output)); free(output); } TEST(EditElement, Libxml_Inside_Remove_Facebook) { char* output=NULL; size_t output_sz=0,input_len=0; const char* filename="./test_data/facebook_index.html"; FILE* fp=NULL; struct stat file_info; stat(filename, &file_info); size_t input_sz=file_info.st_size; fp=fopen(filename,"r"); ASSERT_FALSE(fp==NULL); if(fp==NULL) { return; } char* input=(char*)malloc(input_sz); fread(input,1,input_sz,fp); fclose(fp); const char *user_region = "{\"rules\":[{\"anchor_element\":{\"search_scope\":\"inside_element\",\"start_indicator\":\"_2t-a _4pmj _2t-d\",\"contained_keyword\":\"Facebook\"},\ \"target_element\":{\"target_distance_from_matching\":5,\"element_treatment\":\"remove\"}}]}"; simple_edit_element(user_region, input, input_len, &output, &output_sz, 0); EXPECT_TRUE(output_sz>0); EXPECT_TRUE(NULL==strstr(output, "_2t-a _4pmj _2t-d")); free(input); free(output); } int main(int argc, char ** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }