git.fiddlerwoaroof.com
Browse code

supplier returns empty string on file open fail

jbalcita authored on 24/04/2017 20:39:01
Showing 2 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,106 @@
1
+/* Copyright (C) CJ Affiliate
2
+ *
3
+ * You may use, distribute and modify this code under  the
4
+ * terms of the  GNU General Public License  version 2  or
5
+ * later.
6
+ *
7
+ * You should have received a copy of the license with this
8
+ * file. If not, you will find a copy in the "LICENSE" file
9
+ * at https://github.com/cjdev/dual-control.
10
+ */
11
+
12
+#include <memory>
13
+#include <cstring>
14
+#include <pwd.h>
15
+#include <cstdio>
16
+#include <sys/stat.h>
17
+#include <fstream>
18
+#include <istream>
19
+
20
+#include "token.h"
21
+#include "test_util.h"
22
+#include "user.h"
23
+
24
+class fake_file_reader : public file_reader_ifc
25
+{
26
+private:
27
+    std::string file_path_;
28
+public:
29
+    bool open (std::ifstream &token_file, const std::string &file_path)
30
+    {
31
+        file_path_ = file_path;
32
+        return true;
33
+    }
34
+    std::string getline (std::ifstream &token_file, std::string &fetched_token)
35
+    {
36
+        return file_path_;
37
+    }
38
+};
39
+
40
+class file_reader_with_open_err : public file_reader_ifc {
41
+    public:
42
+        bool open (std::ifstream &token_file, std::string &fetched_token) {
43
+            return false;
44
+        }
45
+};
46
+
47
+class fake_user : public user_ifc
48
+{
49
+private:
50
+    std::string home_directory_;
51
+public:
52
+    fake_user (std::string &user_name) :
53
+        home_directory_ ("home/" + user_name)
54
+    {
55
+    }
56
+    std::string home_directory()
57
+    {
58
+        return home_directory_;
59
+    }
60
+};
61
+
62
+int reads_from_the_right_file ()
63
+{
64
+    //given
65
+    file_reader test_file_reader (file_reader::delegate (new fake_file_reader));
66
+    std::string user_name = "user";
67
+    std::string expected = "home/" + user_name + "/.dual_control";
68
+    user test_user (user::delegate (new fake_user (user_name)));
69
+    user_token_supplier supplier (user_token_supplier::create (
70
+                                      test_file_reader));
71
+
72
+    //when
73
+    std::string actual = supplier.token (test_user);
74
+
75
+    //then
76
+    check (actual == expected, "read wrong file");
77
+    succeed();
78
+}
79
+
80
+int returns_empty_string_if_file_open_error() {
81
+    //given
82
+    file_reader test_file_reader (file_reader::delegate (new file_reader_with_open_err));
83
+    user_token_supplier supplier (user_token_supplier::create (
84
+                                      test_file_reader));
85
+
86
+
87
+    //when
88
+
89
+    //then
90
+}
91
+
92
+RESET_VARS_START
93
+RESET_VARS_END
94
+
95
+int run_tests()
96
+{
97
+    test (reads_from_the_right_file);
98
+    test (returns_empty_string_if_file_open_error);
99
+    succeed();
100
+}
101
+
102
+int main (int argc, char *argv[])
103
+{
104
+    return !run_tests();
105
+}
106
+
... ...
@@ -37,11 +37,19 @@ public:
37 37
     }
38 38
 };
39 39
 
40
+class file_reader_with_open_err : public file_reader_ifc {
41
+    public:
42
+        bool open (std::ifstream &token_file, std::string &fetched_token) {
43
+            return false;
44
+        }
45
+};
46
+
40 47
 class fake_user : public user_ifc
41 48
 {
42 49
 private:
43 50
     std::string home_directory_;
44 51
 public:
52
+    fake_user() {}
45 53
     fake_user (std::string &user_name) :
46 54
         home_directory_ ("home/" + user_name)
47 55
     {
... ...
@@ -55,9 +63,9 @@ public:
55 63
 int reads_from_the_right_file ()
56 64
 {
57 65
     //given
58
-    file_reader test_file_reader (file_reader::delegate (new fake_file_reader));
59 66
     std::string user_name = "user";
60 67
     std::string expected = "home/" + user_name + "/.dual_control";
68
+    file_reader test_file_reader (file_reader::delegate (new fake_file_reader));
61 69
     user test_user (user::delegate (new fake_user (user_name)));
62 70
     user_token_supplier supplier (user_token_supplier::create (
63 71
                                       test_file_reader));
... ...
@@ -70,12 +78,28 @@ int reads_from_the_right_file ()
70 78
     succeed();
71 79
 }
72 80
 
81
+int returns_empty_string_if_file_open_error() {
82
+    //given
83
+    file_reader test_file_reader (file_reader::delegate (new file_reader_with_open_err));
84
+    user test_user (user::delegate (new fake_user));
85
+    user_token_supplier supplier (user_token_supplier::create (
86
+                                      test_file_reader));
87
+
88
+    //when
89
+    std::string actual = supplier.token (test_user);
90
+
91
+    //then
92
+    check(actual == "", "should have returned empty string");
93
+    succeed();
94
+}
95
+
73 96
 RESET_VARS_START
74 97
 RESET_VARS_END
75 98
 
76 99
 int run_tests()
77 100
 {
78 101
     test (reads_from_the_right_file);
102
+    test (returns_empty_string_if_file_open_error);
79 103
     succeed();
80 104
 }
81 105