git.fiddlerwoaroof.com
session_test.cc
bb80149c
 #include <string>
 #include <memory>
 
 #include "session.h"
 #include "test_util.h"
 #include "sys_pam.h"
 #include "request.h"
 
 class fake_sys_pam : public pam_ifc {
     private:
         std::string user_name_;
     public:
     fake_sys_pam(std::string user_name) : user_name_(user_name) {}
     int get_user (pam_handle *handle, const char **out) const {
         *out = user_name_.c_str();
         return PAM_SUCCESS;
     }
 };
 
 int gets_user_from_pam() {
     //given
     std::string user_name("user");
     pam fake_sys_pam(std::make_shared<fake_sys_pam>(user_name));
328af6e0
     sessions sessions(sessions::create(fake_sys_pam));
bb80149c
     pam_request request(0, 0, 0, 0);
 
     //when
328af6e0
     std::string actual = sessions.user_name(request);
bb80149c
 
     //
     //then
     check(actual == user_name, "returned wrong user name");
     succeed();
 }
 
 int run_tests() {
     test(gets_user_from_pam);
     succeed();
 }
 
 int main(int argc, char *argv[]) {
     return !run_tests();
 }