26const std::string
user_file_fn(UNITTEST_SOURCE_DIR
"/userpass/user.txt");
39 UNITTEST_SOURCE_DIR
"/userpass/userpass.txt");
46const std::vector<std::string>
onearg{
52 UNITTEST_SOURCE_DIR
"/userpass/useroverflow.txt",
53 UNITTEST_SOURCE_DIR
"/userpass/passoverflow.txt",
106 std::vector<std::string> userpass;
111 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
112 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
116 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
117 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
119 ASSERT_FALSE(
ret) <<
"flags: " <<
flags;
120 ASSERT_EQ(userpass.size(), 0) <<
"flags: " <<
flags;
126 std::vector<std::string> userpass;
132 UserPass::creds_error)
133 <<
"flags: " <<
flags;
134 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
135 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
140 UserPass::creds_error)
141 <<
"flags: " <<
flags;
142 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
143 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
146 UserPass::creds_error)
147 <<
"flags: " <<
flags;
148 ASSERT_EQ(userpass.size(), 0) <<
"flags: " <<
flags;
158 std::vector<std::string> userpass;
163 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
164 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
168 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
169 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
171 ASSERT_TRUE(
ret) <<
"flags: " <<
flags;
172 ASSERT_EQ(userpass.size(), 0) <<
"flags: " <<
flags;
178 std::vector<std::string> userpass;
184 UserPass::creds_error)
185 <<
"flags: " <<
flags;
186 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
187 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
192 UserPass::creds_error)
193 <<
"flags: " <<
flags;
194 ASSERT_TRUE(user.empty()) <<
"flags: " <<
flags;
195 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
198 UserPass::creds_error)
199 <<
"flags: " <<
flags;
200 ASSERT_EQ(userpass.size(), 0) <<
"flags: " <<
flags;
212 std::vector<std::string> userpass;
217 ASSERT_EQ(user,
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
218 ASSERT_TRUE(pass.empty()) <<
"config: " << config_text <<
"flags: " <<
flags;
222 ASSERT_EQ(user,
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
223 ASSERT_TRUE(pass.empty()) <<
"config: " << config_text <<
"flags: " <<
flags;
225 ASSERT_TRUE(
ret) <<
"config: " << config_text <<
"flags: " <<
flags;
226 ASSERT_EQ(userpass.size(), 1) <<
"config: " << config_text <<
"flags: " <<
flags;
227 ASSERT_EQ(userpass[0],
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
233 std::vector<std::string> userpass;
239 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
244 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
246 ASSERT_TRUE(
ret) <<
"flags: " <<
flags;
247 ASSERT_EQ(userpass.size(), 1) <<
"flags: " <<
flags;
253 for (
auto &config_text :
onearg)
257 std::vector<std::string> userpass;
263 UserPass::creds_error)
264 <<
"config: " << config_text <<
"flags: " <<
flags;
269 UserPass::creds_error)
270 <<
"config: " << config_text <<
"flags: " <<
flags;
273 ASSERT_TRUE(
ret) <<
"config: " << config_text <<
"flags: " <<
flags;
286 std::vector<std::string> userpass;
292 ASSERT_EQ(user,
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
293 ASSERT_EQ(pass,
"password") <<
"config: " << config_text <<
"flags: " <<
flags;
297 ASSERT_EQ(user,
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
298 ASSERT_EQ(pass,
"password") <<
"config: " << config_text <<
"flags: " <<
flags;
300 ASSERT_TRUE(
ret) <<
"config: " << config_text <<
"flags: " <<
flags;
301 ASSERT_EQ(userpass.size(), 2) <<
"config: " << config_text <<
"flags: " <<
flags;
302 ASSERT_EQ(userpass[0],
"username") <<
"config: " << config_text <<
"flags: " <<
flags;
303 ASSERT_EQ(userpass[1],
"password") <<
"config: " << config_text <<
"flags: " <<
flags;
308TEST(UserPass, ParseFileUserOnly)
315 ASSERT_EQ(user,
"username") <<
"flags: " <<
flags;
316 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
320 ASSERT_EQ(user,
"username") <<
"flags: " <<
flags;
321 ASSERT_TRUE(pass.empty()) <<
"flags: " <<
flags;
325 for (
auto &config_text :
onearg)
331 UserPass::creds_error)
332 <<
"config: " << config_text <<
"flags: " <<
flags;
337 UserPass::creds_error)
338 <<
"config: " << config_text <<
"flags: " <<
flags;
343TEST(UserPass, ParseFileUserPass)
350 ASSERT_EQ(user,
"username") <<
"flags: " <<
flags;
351 ASSERT_EQ(pass,
"password") <<
"flags: " <<
flags;
355 ASSERT_EQ(user,
"username") <<
"flags: " <<
flags;
356 ASSERT_EQ(pass,
"password") <<
"flags: " <<
flags;
360TEST(UserPass, ParseFileOverflow)
369 <<
"file: " << filename <<
"flags: " <<
flags;
373 <<
"file: " << filename <<
"flags: " <<
flags;
375 const std::string config_text = std::string(
"auth ") + filename;
376 std::vector<std::string> userpass;
381 <<
"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::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_tag("<auth>\n" "username\n" "password\n" "</auth>\n")
const std::string userpass_file("auth "+userpass_file_fn+"\n")
const std::string user_file_fn(UNITTEST_SOURCE_DIR "/userpass/user.txt")
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 userpass_file_fn(UNITTEST_SOURCE_DIR "/userpass/userpass.txt")
const std::string user_tag("<auth>\n" "username\n" "</auth>\n")
const std::string user_file("auth "+user_file_fn+"\n")