27 "auth " UNITTEST_SOURCE_DIR
"/userpass/user.txt\n");
38 "auth " UNITTEST_SOURCE_DIR
"/userpass/userpass.txt\n");
43const std::vector<std::string>
onearg{
49 UNITTEST_SOURCE_DIR
"/userpass/useroverflow.txt",
50 UNITTEST_SOURCE_DIR
"/userpass/passoverflow.txt",
103 std::vector<std::string> userpass;
108 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
109 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
113 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
114 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
116 ASSERT_FALSE(
ret) <<
"flags: " <<
flags;
117 ASSERT_EQ(userpass.size(), 0) <<
"flags: " <<
flags;
123 std::vector<std::string> userpass;
129 UserPass::creds_error)
130 <<
"flags: " <<
flags;
131 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
132 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
137 UserPass::creds_error)
138 <<
"flags: " <<
flags;
139 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
140 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
143 UserPass::creds_error)
144 <<
"flags: " <<
flags;
145 ASSERT_EQ(userpass.size(), 0) <<
"flags: " <<
flags;
155 std::vector<std::string> userpass;
160 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
161 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
165 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
166 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
168 ASSERT_TRUE(
ret) <<
"flags: " <<
flags;
169 ASSERT_EQ(userpass.size(), 0) <<
"flags: " <<
flags;
175 std::vector<std::string> userpass;
181 UserPass::creds_error)
182 <<
"flags: " <<
flags;
183 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
184 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
189 UserPass::creds_error)
190 <<
"flags: " <<
flags;
191 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
192 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
195 UserPass::creds_error)
196 <<
"flags: " <<
flags;
197 ASSERT_EQ(userpass.size(), 0) <<
"flags: " <<
flags;
209 std::vector<std::string> userpass;
214 ASSERT_EQ(user,
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
215 ASSERT_TRUE(pass.empty()) <<
"config: " << config_text <<
"flags: " <<
flags;
219 ASSERT_EQ(user,
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
220 ASSERT_TRUE(pass.empty()) <<
"config: " << config_text <<
"flags: " <<
flags;
222 ASSERT_TRUE(
ret) <<
"config: " << config_text <<
"flags: " <<
flags;
223 ASSERT_EQ(userpass.size(), 1) <<
"config: " << config_text <<
"flags: " <<
flags;
224 ASSERT_EQ(userpass[0],
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
230 std::vector<std::string> userpass;
235 ASSERT_EQ(user, UNITTEST_SOURCE_DIR
"/userpass/userpass.txt") <<
"flags: " <<
flags;
236 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
240 ASSERT_EQ(user, UNITTEST_SOURCE_DIR
"/userpass/userpass.txt") <<
"flags: " <<
flags;
241 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
243 ASSERT_TRUE(
ret) <<
"flags: " <<
flags;
244 ASSERT_EQ(userpass.size(), 1) <<
"flags: " <<
flags;
245 ASSERT_EQ(userpass[0], UNITTEST_SOURCE_DIR
"/userpass/userpass.txt") <<
"flags: " <<
flags;
250 for (
auto &config_text :
onearg)
254 std::vector<std::string> userpass;
260 UserPass::creds_error)
261 <<
"config: " << config_text <<
"flags: " <<
flags;
266 UserPass::creds_error)
267 <<
"config: " << config_text <<
"flags: " <<
flags;
270 ASSERT_TRUE(
ret) <<
"config: " << config_text <<
"flags: " <<
flags;
283 std::vector<std::string> userpass;
289 ASSERT_EQ(user,
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
290 ASSERT_EQ(pass,
"password") <<
"config: " << config_text <<
"flags: " <<
flags;
294 ASSERT_EQ(user,
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
295 ASSERT_EQ(pass,
"password") <<
"config: " << config_text <<
"flags: " <<
flags;
297 ASSERT_TRUE(
ret) <<
"config: " << config_text <<
"flags: " <<
flags;
298 ASSERT_EQ(userpass.size(), 2) <<
"config: " << config_text <<
"flags: " <<
flags;
299 ASSERT_EQ(userpass[0],
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
300 ASSERT_EQ(userpass[1],
"password") <<
"config: " << config_text <<
"flags: " <<
flags;
305TEST(UserPass, parse_file_user_only)
312 ASSERT_EQ(user,
"username") <<
"flags: " <<
flags;
313 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
317 ASSERT_EQ(user,
"username") <<
"flags: " <<
flags;
318 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
322 for (
auto &config_text :
onearg)
328 UserPass::creds_error)
329 <<
"config: " << config_text <<
"flags: " <<
flags;
334 UserPass::creds_error)
335 <<
"config: " << config_text <<
"flags: " <<
flags;
340TEST(UserPass, parse_file_user_pass)
347 ASSERT_EQ(user,
"username") <<
"flags: " <<
flags;
348 ASSERT_EQ(pass,
"password") <<
"flags: " <<
flags;
352 ASSERT_EQ(user,
"username") <<
"flags: " <<
flags;
353 ASSERT_EQ(pass,
"password") <<
"flags: " <<
flags;
357TEST(UserPass, parse_file_overflow)
366 <<
"file: " << filename <<
"flags: " <<
flags;
370 <<
"file: " << filename <<
"flags: " <<
flags;
372 std::string config_text = std::string(
"auth ") + filename;
373 std::vector<std::string> userpass;
378 <<
"file: " << filename <<
"flags: " <<
flags;
void parse_from_config(const std::string &str, Limits *lim)
@ OPT_REQUIRED
option must be present
@ PASSWORD_REQUIRED
password must be present
@ USERNAME_REQUIRED
username must be present
@ OPT_OPTIONAL
if option is not present, USERNAME_REQUIRED and PASSWORD_REQUIRED are ignored
@ TRY_FILE
option argument might be a filename, try to load creds from it
bool parse(const OptionList &options, const std::string &opt_name, const unsigned int flags, std::vector< std::string > *user_pass)
interpret user-pass option
void parse_file(const std::string &path, const unsigned int flags, std::string &user, std::string &pass)
read username/password from file
const std::string user_file("auth " UNITTEST_SOURCE_DIR "/userpass/user.txt\n")
const std::vector< unsigned int > flag_combos_noargs_okay
const std::vector< unsigned int > flag_combos_nofile
const std::vector< unsigned int > flag_combos_pw_not_required
const std::string optname
const std::vector< std::string > user_pass
const std::string userpass_file("auth " UNITTEST_SOURCE_DIR "/userpass/userpass.txt\n")
const std::string userpass_tag("<auth>\n" "username\n" "password\n" "</auth>\n")
const std::vector< unsigned int > flag_combos_missing_okay
const std::vector< std::string > user_only
const std::vector< std::string > overflow_files
const std::vector< std::string > onearg
const std::string user_simple("auth username\n")
const std::vector< unsigned int > flag_combos_pw_required
const std::vector< unsigned int > flag_combos_required
const std::string user_tag("<auth>\n" "username\n" "</auth>\n")