git.fiddlerwoaroof.com
validator_test.cc
f757e35b
 #include "validator.h"
3c673060
 #include "user.h"
f757e35b
 #include "test_util.h"
9af49688
 #include "token.h"
f757e35b
 
3c673060
 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;
         }
 };
 
9af49688
 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_;
         }
 };
 
3c673060
 
f757e35b
 bool validator_validates() {
 
9af49688
     // given
     std::string token = "token";
     user_token_supplier_p user_token_supplier(new fake_user_token_supplier(token));
3c673060
     std::string user_name = "msmith";
     directory_p directory(new fake_directory(user_name));
caf7db60
     old_validator validator(directory, user_token_supplier);
f757e35b
 
 
3c673060
     // when
     bool actual = validator.validate(user_name, "token");
f757e35b
 
 
3c673060
     // then
     check(actual, "should be valid");
     succeed();
92b68213
 }
 
 bool validator_fails_unknown_user() {
 
    // given
9af49688
    std::string token = "token";
    user_token_supplier_p user_token_supplier(new fake_user_token_supplier(token));
3c673060
    directory_p directory(new fake_directory);
caf7db60
    old_validator validator(directory, user_token_supplier);
92b68213
 
 
    // when
9af49688
    bool actual = validator.validate("notuser", token);
92b68213
 
 
    // then
    check(!actual, "should not be valid");
    succeed();
 }
 
 bool validator_fails_incorrect_token() {
 
    // given
9af49688
     user_token_supplier_p user_token_supplier(new fake_user_token_supplier);
     std::string user_name = "msmith";
3c673060
     directory_p directory(new fake_directory(user_name));
caf7db60
     old_validator validator(directory, user_token_supplier);
92b68213
 
 
    // when
9af49688
    bool actual = validator.validate(user_name, "token");
92b68213
 
 
    // then
    check(!actual, "should not be valid");
f757e35b
    succeed();
 }
 
 RESET_VARS_START
 RESET_VARS_END
 
 bool run_tests() {
     test(validator_validates);
92b68213
     test(validator_fails_unknown_user);
     test(validator_fails_incorrect_token);
f757e35b
     succeed();
 }
 
 int main(int argc, char *argv[]) {
     return !run_tests();
 }