@@ -82,3 +82,40 @@ TEST(HttpServer, ParsePathAndToken)
8282 ASSERT_TRUE (HttpServer::BuildPathAndEnvOpaque (norm_hdrs, path, env_opaque));
8383 ASSERT_STREQ (" http/wizz" , env_opaque->Get (" eos.app" ));
8484}
85+
86+ static std::map<std::string,std::pair<std::string,std::string>> fullPathToPathAndOpaque = {
87+ {" " ,{" " ," " }},
88+ {" /eos/file.dat" ,{" /eos/file.dat" ," " }},
89+ {" /eos/file.dat?" ,{" /eos/file.dat" ," " }},
90+ {" /eos/file.dat?testopaque=1" ,{" /eos/file.dat" ," testopaque=1" }},
91+ {" /eos/file.dat?testopaque=1&authz=qwerty&test=2" ,{" /eos/file.dat" ," testopaque=1&authz=qwerty&test=2" }},
92+ };
93+
94+ TEST (HttpServer, ExtractPathAndOpaque) {
95+ for (const auto & [fullpath, pathAndOpaquePair]: fullPathToPathAndOpaque) {
96+ std::string extractedPath;
97+ std::string extractedOpaque;
98+ eos::mgm::HttpServer::extractPathAndOpaque (fullpath,extractedPath, extractedOpaque);
99+ ASSERT_EQ (pathAndOpaquePair.first ,extractedPath);
100+ ASSERT_EQ (pathAndOpaquePair.second ,extractedOpaque);
101+ }
102+ }
103+
104+ static std::map<std::string,std::string> fullPathToOpaque = {
105+ {" " ," " },
106+ {" /eos/lhcb/test/?eos.ruid=0" ," eos.ruid=0" },
107+ {" /eos/lhcb/" ," " },
108+ {" /eos/file.dat?" ," " },
109+ {" /eos/lhcb/passwd.txt?eos.test=0&oss.test=18&test=3" ," eos.test=0&oss.test=18&test=3" },
110+ {" /eos/lhcb/passwd.txt?authz=azerty&eos.test=0&oss.test=18&test=3" ," eos.test=0&oss.test=18&test=3" },
111+ {" /eos/lhcb/passwd.txt?eos.test=0&oss.test=18&authz=azerty&test=3" ," eos.test=0&oss.test=18&test=3" },
112+ {" /eos/lhcb/passwd.txt?eos.test=0&oss.test=18&test=3&authz=azerty" ," eos.test=0&oss.test=18&test=3" }
113+ };
114+
115+ TEST (HttpServer, ExtractOpaqueWithoutAuthz) {
116+ for (const auto & [fullpath,opaque]: fullPathToOpaque) {
117+ std::string extractedOpaque;
118+ eos::mgm::HttpServer::extractOpaqueWithoutAuthz (fullpath,extractedOpaque);
119+ ASSERT_EQ (opaque,extractedOpaque);
120+ }
121+ }
0 commit comments