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