9a0bfcb2 | #include <memory> |
717259b5 | #include <iostream> |
55259c47 | #include "user.h" #include "test_util.h" |
717259b5 | bool gets_home_directory() { |
55259c47 | //given const char *expected_home_directory = "home/msmith"; struct passwd test_passwd; test_passwd.pw_dir = const_cast<char *>(expected_home_directory); user test_user(&test_passwd); //when std::string actual_home_directory = test_user.home_directory(); //then check(expected_home_directory == actual_home_directory, "directories do not match"); return expected_home_directory == actual_home_directory; } |
717259b5 | std::shared_ptr<struct passwd> fake_passwd; |
9a0bfcb2 | int fake_getpwnam_r(const char *nam, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result) { |
717259b5 | if (fake_passwd) { *pwd = *fake_passwd; *result = pwd; return 0; } return -1; |
9a0bfcb2 | } |
717259b5 | bool create_user_succeeds() { |
9a0bfcb2 | // given std::string username("msmith"); std::string home_directory("this is my home"); |
717259b5 | fake_passwd.reset(new struct passwd); fake_passwd->pw_dir = const_cast<char *>(home_directory.c_str()); |
9a0bfcb2 | // when std::shared_ptr<user> user(create_user(username)); // then check(user, "user should be returned"); check(user->home_directory() == home_directory, "home directory does not match"); succeed(); } |
717259b5 | bool create_user_nonexistent() { // given std::string username("msmith"); // when std::shared_ptr<user> user(create_user(username)); // then check(!user, "no user should be returned"); succeed(); } |
55259c47 | RESET_VARS_START |
717259b5 | fake_passwd.reset((struct passwd *)0); |
55259c47 | RESET_VARS_END int run_tests() { test(gets_home_directory); |
717259b5 | test(create_user_succeeds); test(create_user_nonexistent); |
55259c47 | succeed(); } int main(int argc, char *argv[]) { return !run_tests(); } |