git.fiddlerwoaroof.com
validator_test.cc
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();
 }