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