f757e35b |
#include "validator.h"
|
3c673060 |
#include "user.h"
|
f757e35b |
#include "test_util.h"
|
9af49688 |
#include "token.h"
|
f757e35b |
|
cdf7fd74 |
class fake_directory : public directory
{
private:
std::string user_name_;
public:
|
b017a4d2 |
fake_directory (const std::string &user_name) : user_name_ (user_name) {}
fake_directory() : user_name_ ("_NOT_A_USER") {}
|
cdf7fd74 |
|
b017a4d2 |
virtual const user_p find_user (const std::string &user_name)
|
cdf7fd74 |
{
user_p result;
|
b017a4d2 |
|
cdf7fd74 |
if (user_name == user_name_) {
|
b017a4d2 |
result.reset (new user);
|
3c673060 |
}
|
cdf7fd74 |
return result;
}
|
3c673060 |
};
|
cdf7fd74 |
class fake_user_token_supplier : public user_token_supplier
{
private:
std::string token_;
public:
|
b017a4d2 |
fake_user_token_supplier (const std::string &token) : token_ (token) {}
fake_user_token_supplier() : token_ ("_NOT_A_TOKEN") {}
virtual std::string token (const user_p user)
|
cdf7fd74 |
{
return token_;
}
|
9af49688 |
};
|
cdf7fd74 |
bool validator_validates()
{
|
f757e35b |
|
9af49688 |
// given
std::string token = "token";
|
b017a4d2 |
user_token_supplier_p user_token_supplier (new fake_user_token_supplier (
token));
|
3c673060 |
std::string user_name = "msmith";
|
b017a4d2 |
directory_p directory (new fake_directory (user_name));
old_validator validator (directory, user_token_supplier);
|
f757e35b |
|
3c673060 |
// when
|
b017a4d2 |
bool actual = validator.validate (user_name, "token");
|
f757e35b |
|
3c673060 |
// then
|
b017a4d2 |
check (actual, "should be valid");
|
3c673060 |
succeed();
|
92b68213 |
}
|
cdf7fd74 |
bool validator_fails_unknown_user()
{
|
92b68213 |
|
cdf7fd74 |
// given
std::string token = "token";
|
b017a4d2 |
user_token_supplier_p user_token_supplier (new fake_user_token_supplier (
token));
directory_p directory (new fake_directory);
old_validator validator (directory, user_token_supplier);
|
92b68213 |
|
cdf7fd74 |
// when
|
b017a4d2 |
bool actual = validator.validate ("notuser", token);
|
92b68213 |
|
cdf7fd74 |
// then
|
b017a4d2 |
check (!actual, "should not be valid");
|
cdf7fd74 |
succeed();
|
92b68213 |
}
|
cdf7fd74 |
bool validator_fails_incorrect_token()
{
|
92b68213 |
|
cdf7fd74 |
// given
|
b017a4d2 |
user_token_supplier_p user_token_supplier (new fake_user_token_supplier);
|
9af49688 |
std::string user_name = "msmith";
|
b017a4d2 |
directory_p directory (new fake_directory (user_name));
old_validator validator (directory, user_token_supplier);
|
92b68213 |
|
cdf7fd74 |
// when
|
b017a4d2 |
bool actual = validator.validate (user_name, "token");
|
92b68213 |
|
cdf7fd74 |
// then
|
b017a4d2 |
check (!actual, "should not be valid");
|
cdf7fd74 |
succeed();
|
f757e35b |
}
RESET_VARS_START
RESET_VARS_END
|
cdf7fd74 |
bool run_tests()
{
|
b017a4d2 |
test (validator_validates);
test (validator_fails_unknown_user);
test (validator_fails_incorrect_token);
|
f757e35b |
succeed();
}
|
b017a4d2 |
int main (int argc, char *argv[])
|
cdf7fd74 |
{
|
f757e35b |
return !run_tests();
}
|