#include #include #include #include #include "token.h" #include "test_util.h" const char *fake_user = ""; const char *fake_user_token = ""; // all the fake system calls const char *fake_home_dir = ""; int fake_getpwnam_r (const char *nam, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result) { strcpy (buffer, fake_home_dir); pwd->pw_dir = buffer; int ok = !strcmp (nam, fake_user); *result = ok ? pwd : 0; return !ok; } const char *fake_stat_path = ""; int fake_stat (const char *path, struct stat *stat) { return (strcmp (fake_stat_path, path)); } const char *fake_fopen_path = ""; const char *fake_fopen_mode = ""; FILE *_fhandle = 0; FILE *fake_fopen (const char *path, const char *mode) { static FILE handle; int path_matches = !strcmp (fake_fopen_path, path); int mode_matches = !strcmp (fake_fopen_mode, mode); if (path_matches && mode_matches) { _fhandle = &handle; return &handle; } else { _fhandle = 0; return 0; } } char *fake_fgets (char *buf, int n, FILE *fp) { if (_fhandle == fp && fp != 0) { strncpy (buf, fake_user_token, n - 1); return buf; } else { return 0; } } int fake_fclose (FILE *fp) { return 0; } // STDIO RESET_VARS_START fake_user = "msmith"; fake_user_token = "123456"; fake_home_dir = "/home/msmith"; fake_stat_path = "/home/msmith/.dual_control"; fake_fopen_path = fake_stat_path; fake_fopen_mode = "r"; RESET_VARS_END int validate_compares_to_user_token() { // given // when int valid = validate_token ("msmith", "123456"); // then check (valid, "expected result to be valid"); succeed(); } int validates_from_the_right_user() { //given //when int valid = validate_token ("jbalcita", "12346"); //then check (!valid, "expected result to be invalid"); succeed(); } int validates_user_specific_token() { //given //when int valid = validate_token ("msmith", "654321"); //then check (!valid, "expected result to be invalid"); succeed(); } int runtests() { test (validate_compares_to_user_token); test (validates_from_the_right_user); test (validates_user_specific_token); succeed(); } int main (int argc, char **argv) { int rval = !runtests(); return rval; }