1 // xestiaab_carddav.h - Xestia Address Book CardDAV Object Unit Tests.
3 // (c) 2012-2015 Xestia Software Development.
5 // This file is part of Xestia Address Book.
7 // Xestia Address Book is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
11 // Xestia Address Book is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
19 #include <gtest/gtest.h>
20 #include "classes/FakeConnectionObject.h"
22 // TODO: Add tests for the CardDAV object.
24 TEST(CardDAV, Use_Fake_To_Setup_And_Check_Connection_Settings_With_TestMode_True){
26 std::string ServerAddress1 = "gibberish.invalid";
27 std::string ServerUser1 = "user";
28 std::string ServerPass1 = "pass";
30 std::string ServerAddress2 = "gibberish2.invalid";
31 std::string ServerUser2 = "user2";
32 std::string ServerPass2 = "pass2";
34 std::string ServerAddress3 = "gibberish3.invalid";
35 std::string ServerUser3 = "user3";
36 std::string ServerPass3 = "pass3";
38 FakeConnectionObject FakeConnection1(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
39 FakeConnectionObject FakeConnection2(ServerAddress2, 8800, ServerUser2, ServerPass2, true);
40 FakeConnectionObject FakeConnection3(ServerAddress3, 8008, ServerUser3, ServerPass3, false);
42 EXPECT_EQ("gibberish.invalid", FakeConnection1.GetServerAddress());
43 EXPECT_EQ(8080, FakeConnection1.GetServerPort());
44 EXPECT_EQ("user", FakeConnection1.GetServerUser());
45 EXPECT_EQ("pass", FakeConnection1.GetServerPass());
46 EXPECT_EQ(true, FakeConnection1.GetServerSSL());
47 EXPECT_EQ(true, FakeConnection1.GetTestMode());
49 EXPECT_EQ("gibberish2.invalid", FakeConnection2.GetServerAddress());
50 EXPECT_EQ(8800, FakeConnection2.GetServerPort());
51 EXPECT_EQ("user2", FakeConnection2.GetServerUser());
52 EXPECT_EQ("pass2", FakeConnection2.GetServerPass());
53 EXPECT_EQ(true, FakeConnection2.GetServerSSL());
54 EXPECT_EQ(true, FakeConnection2.GetTestMode());
56 EXPECT_EQ("gibberish3.invalid", FakeConnection3.GetServerAddress());
57 EXPECT_EQ(8008, FakeConnection3.GetServerPort());
58 EXPECT_EQ("user3", FakeConnection3.GetServerUser());
59 EXPECT_EQ("pass3", FakeConnection3.GetServerPass());
60 EXPECT_EQ(false, FakeConnection3.GetServerSSL());
61 EXPECT_EQ(true, FakeConnection3.GetTestMode());
65 TEST(CardDAV, Use_Fake_To_Setup_And_Check_Connection_Settings_With_TestMode_False){
67 std::string ServerAddress1 = "gibberish.invalid";
68 std::string ServerUser1 = "user";
69 std::string ServerPass1 = "pass";
70 std::string ServerPrefix1 = "/prefix";
71 std::string ServerAccount1 = "Account1";
73 std::string ServerAddress2 = "gibberish2.invalid";
74 std::string ServerUser2 = "user2";
75 std::string ServerPass2 = "pass2";
76 std::string ServerPrefix2 = "/prefix2";
77 std::string ServerAccount2 = "Account2";
79 std::string ServerAddress3 = "gibberish3.invalid";
80 std::string ServerUser3 = "user3";
81 std::string ServerPass3 = "pass3";
82 std::string ServerPrefix3 = "/prefix3";
83 std::string ServerAccount3 = "Account3";
85 FakeConnectionObject FakeConnection1(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
86 FakeConnectionObject FakeConnection2(ServerAddress2, 8800, ServerUser2, ServerPass2, true, "/prefix2", "Account2");
87 FakeConnectionObject FakeConnection3(ServerAddress3, 8008, ServerUser3, ServerPass3, false, "/prefix3", "Account3");
89 EXPECT_EQ("gibberish.invalid", FakeConnection1.GetServerAddress());
90 EXPECT_EQ(8080, FakeConnection1.GetServerPort());
91 EXPECT_EQ("user", FakeConnection1.GetServerUser());
92 EXPECT_EQ("pass", FakeConnection1.GetServerPass());
93 EXPECT_EQ(true, FakeConnection1.GetServerSSL());
94 EXPECT_EQ(false, FakeConnection1.GetTestMode());
95 EXPECT_EQ("/prefix", FakeConnection1.GetServerPrefix());
96 EXPECT_EQ("Account1", FakeConnection1.GetServerAccount());
98 EXPECT_EQ("gibberish2.invalid", FakeConnection2.GetServerAddress());
99 EXPECT_EQ(8800, FakeConnection2.GetServerPort());
100 EXPECT_EQ("user2", FakeConnection2.GetServerUser());
101 EXPECT_EQ("pass2", FakeConnection2.GetServerPass());
102 EXPECT_EQ(true, FakeConnection2.GetServerSSL());
103 EXPECT_EQ(false, FakeConnection2.GetTestMode());
104 EXPECT_EQ("/prefix2", FakeConnection2.GetServerPrefix());
105 EXPECT_EQ("Account2", FakeConnection2.GetServerAccount());
107 EXPECT_EQ("gibberish3.invalid", FakeConnection3.GetServerAddress());
108 EXPECT_EQ(8008, FakeConnection3.GetServerPort());
109 EXPECT_EQ("user3", FakeConnection3.GetServerUser());
110 EXPECT_EQ("pass3", FakeConnection3.GetServerPass());
111 EXPECT_EQ(false, FakeConnection3.GetServerSSL());
112 EXPECT_EQ(false, FakeConnection3.GetTestMode());
113 EXPECT_EQ("/prefix3", FakeConnection3.GetServerPrefix());
114 EXPECT_EQ("Account3", FakeConnection3.GetServerAccount());
118 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Success){
120 std::string ServerAddress1 = "gibberish.invalid";
121 std::string ServerUser1 = "user";
122 std::string ServerPass1 = "pass";
124 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
125 FakeConnection.ResultStatus = COCONNECT_OK;
127 EXPECT_EQ(COCONNECT_OK, FakeConnection.Connect());
131 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_InvalidAddress){
133 std::string ServerAddress1 = "gibberish.invalid";
134 std::string ServerUser1 = "user";
135 std::string ServerPass1 = "pass";
137 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
138 FakeConnection.ResultStatus = COCONNECT_INVALID;
140 EXPECT_EQ(COCONNECT_INVALID, FakeConnection.Connect());
144 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Timeout){
146 std::string ServerAddress1 = "gibberish.invalid";
147 std::string ServerUser1 = "user";
148 std::string ServerPass1 = "pass";
150 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
151 FakeConnection.ResultStatus = COCONNECT_TIMEOUT;
153 EXPECT_EQ(COCONNECT_TIMEOUT, FakeConnection.Connect());
157 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Authentication_Failure){
159 std::string ServerAddress1 = "gibberish.invalid";
160 std::string ServerUser1 = "user";
161 std::string ServerPass1 = "pass";
163 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
164 FakeConnection.ResultStatus = COCONNECT_AUTHFAIL;
166 EXPECT_EQ(COCONNECT_AUTHFAIL, FakeConnection.Connect());
170 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Is_Able_To_Login){
172 std::string ServerAddress1 = "gibberish.invalid";
173 std::string ServerUser1 = "user";
174 std::string ServerPass1 = "pass";
176 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
177 FakeConnection.ResultAuthPassed = true;
178 FakeConnection.Connect();
180 EXPECT_EQ(true, FakeConnection.AbleToLogin());
184 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Is_Unable_To_Login){
186 std::string ServerAddress1 = "gibberish.invalid";
187 std::string ServerUser1 = "user";
188 std::string ServerPass1 = "pass";
190 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
191 FakeConnection.ResultAuthPassed = false;
192 FakeConnection.Connect();
194 EXPECT_EQ(false, FakeConnection.AbleToLogin());
198 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Can_Do_Processing){
200 std::string ServerAddress1 = "gibberish.invalid";
201 std::string ServerUser1 = "user";
202 std::string ServerPass1 = "pass";
204 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
205 FakeConnection.ResultCanProcess = true;
206 FakeConnection.Connect();
208 EXPECT_EQ(true, FakeConnection.CanDoProcessing());
212 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Supports_SSL){
214 std::string ServerAddress1 = "gibberish.invalid";
215 std::string ServerUser1 = "user";
216 std::string ServerPass1 = "pass";
218 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
219 FakeConnection.ResultSSLStatus = true;
220 FakeConnection.Connect();
222 EXPECT_EQ(true, FakeConnection.CanDoSSL());
226 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Does_Not_Support_SSL){
228 std::string ServerAddress1 = "gibberish.invalid";
229 std::string ServerUser1 = "user";
230 std::string ServerPass1 = "pass";
232 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
233 FakeConnection.ResultSSLStatus = false;
234 FakeConnection.Connect();
236 EXPECT_EQ(false, FakeConnection.CanDoSSL());
240 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_Valid_SSL_Certificate_Data){
242 std::string ServerAddress1 = "gibberish.invalid";
243 std::string ServerUser1 = "user";
244 std::string ServerPass1 = "pass";
246 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
247 FakeConnection.ResultSSLVerified = true;
248 FakeConnection.Connect();
250 EXPECT_EQ(true, FakeConnection.SSLVerify());
254 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_Invalid_SSL_Certificate_Data){
256 std::string ServerAddress1 = "gibberish.invalid";
257 std::string ServerUser1 = "user";
258 std::string ServerPass1 = "pass";
260 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
261 FakeConnection.ResultSSLVerified = false;
262 FakeConnection.Connect();
264 EXPECT_EQ(false, FakeConnection.SSLVerify());
268 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_A_Valid_Response){
270 std::string ServerAddress1 = "gibberish.invalid";
271 std::string ServerUser1 = "user";
272 std::string ServerPass1 = "pass";
274 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
275 FakeConnection.ResultValidResponse = true;
276 FakeConnection.Connect();
278 EXPECT_EQ(true, FakeConnection.HasValidResponse());
282 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_A_Invalid_Response){
284 std::string ServerAddress1 = "gibberish.invalid";
285 std::string ServerUser1 = "user";
286 std::string ServerPass1 = "pass";
288 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
289 FakeConnection.ResultValidResponse = false;
290 FakeConnection.Connect();
292 EXPECT_EQ(false, FakeConnection.HasValidResponse());
296 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Uses_A_Self_Signed_SSL_Certificate){
298 std::string ServerAddress1 = "gibberish.invalid";
299 std::string ServerUser1 = "user";
300 std::string ServerPass1 = "pass";
302 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
303 FakeConnection.ResultSelfSigned = true;
304 FakeConnection.Connect();
306 EXPECT_EQ(true, FakeConnection.IsSelfSigned());
310 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Doesnt_Use_A_Self_Signed_SSL_Certificate){
312 std::string ServerAddress1 = "gibberish.invalid";
313 std::string ServerUser1 = "user";
314 std::string ServerPass1 = "pass";
316 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
317 FakeConnection.ResultSelfSigned = false;
318 FakeConnection.Connect();
320 EXPECT_EQ(false, FakeConnection.IsSelfSigned());
324 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_The_Server_Prefix_Of_Prefix_Test_A){
326 std::string ServerAddress1 = "gibberish.invalid";
327 std::string ServerUser1 = "user";
328 std::string ServerPass1 = "pass";
330 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
331 FakeConnection.ResultServerPrefix = "/prefix/test/a";
332 FakeConnection.Connect();
334 EXPECT_EQ("/prefix/test/a", FakeConnection.GetDefaultPrefix());
338 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_The_Server_Prefix_Of_Prefix_Test_B){
340 std::string ServerAddress1 = "gibberish.invalid";
341 std::string ServerUser1 = "user";
342 std::string ServerPass1 = "pass";
344 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
345 FakeConnection.ResultServerPrefix = "/prefix/test/b";
346 FakeConnection.Connect();
348 EXPECT_EQ("/prefix/test/b", FakeConnection.GetDefaultPrefix());
352 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Adds_A_Contact_Successfully){
354 std::string ServerAddress1 = "gibberish.invalid";
355 std::string ServerUser1 = "user";
356 std::string ServerPass1 = "pass";
358 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
359 FakeConnection.ResultServerPrefix = "/prefix/test/b";
360 FakeConnection.Connect();
362 std::string ContactFile =
365 "UID:84q2ioj13jofiujqwr\n"
370 FakeConnection.TestRequestResult = COREQUEST_OK;
371 FakeConnection.TestEntityTag = "4324svafhuiaffsdhui";
372 FakeConnection.TestResultCode = 200;
373 FakeConnection.TestResultMessage = "";
375 COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile);
377 EXPECT_EQ(COREQUEST_OK, AddContactResult.RequestResult);
378 EXPECT_EQ("4324svafhuiaffsdhui", AddContactResult.EntityTag);
379 EXPECT_EQ(200, AddContactResult.ResultCode);
380 EXPECT_EQ("", AddContactResult.ResultMessage);