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"
24 // TODO: Add tests for the CardDAV object.
26 TEST(CardDAV, Use_Fake_To_Setup_And_Check_Connection_Settings_With_TestMode_True){
28 std::string ServerAddress1 = "gibberish.invalid";
29 std::string ServerUser1 = "user";
30 std::string ServerPass1 = "pass";
32 std::string ServerAddress2 = "gibberish2.invalid";
33 std::string ServerUser2 = "user2";
34 std::string ServerPass2 = "pass2";
36 std::string ServerAddress3 = "gibberish3.invalid";
37 std::string ServerUser3 = "user3";
38 std::string ServerPass3 = "pass3";
40 FakeConnectionObject FakeConnection1(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
41 FakeConnectionObject FakeConnection2(ServerAddress2, 8800, ServerUser2, ServerPass2, true);
42 FakeConnectionObject FakeConnection3(ServerAddress3, 8008, ServerUser3, ServerPass3, false);
44 EXPECT_EQ("gibberish.invalid", FakeConnection1.GetServerAddress());
45 EXPECT_EQ(8080, FakeConnection1.GetServerPort());
46 EXPECT_EQ("user", FakeConnection1.GetServerUser());
47 EXPECT_EQ("pass", FakeConnection1.GetServerPass());
48 EXPECT_EQ(true, FakeConnection1.GetServerSSL());
49 EXPECT_EQ(true, FakeConnection1.GetTestMode());
51 EXPECT_EQ("gibberish2.invalid", FakeConnection2.GetServerAddress());
52 EXPECT_EQ(8800, FakeConnection2.GetServerPort());
53 EXPECT_EQ("user2", FakeConnection2.GetServerUser());
54 EXPECT_EQ("pass2", FakeConnection2.GetServerPass());
55 EXPECT_EQ(true, FakeConnection2.GetServerSSL());
56 EXPECT_EQ(true, FakeConnection2.GetTestMode());
58 EXPECT_EQ("gibberish3.invalid", FakeConnection3.GetServerAddress());
59 EXPECT_EQ(8008, FakeConnection3.GetServerPort());
60 EXPECT_EQ("user3", FakeConnection3.GetServerUser());
61 EXPECT_EQ("pass3", FakeConnection3.GetServerPass());
62 EXPECT_EQ(false, FakeConnection3.GetServerSSL());
63 EXPECT_EQ(true, FakeConnection3.GetTestMode());
67 TEST(CardDAV, Use_Fake_To_Setup_And_Check_Connection_Settings_With_TestMode_False){
69 std::string ServerAddress1 = "gibberish.invalid";
70 std::string ServerUser1 = "user";
71 std::string ServerPass1 = "pass";
72 std::string ServerPrefix1 = "/prefix";
73 std::string ServerAccount1 = "Account1";
75 std::string ServerAddress2 = "gibberish2.invalid";
76 std::string ServerUser2 = "user2";
77 std::string ServerPass2 = "pass2";
78 std::string ServerPrefix2 = "/prefix2";
79 std::string ServerAccount2 = "Account2";
81 std::string ServerAddress3 = "gibberish3.invalid";
82 std::string ServerUser3 = "user3";
83 std::string ServerPass3 = "pass3";
84 std::string ServerPrefix3 = "/prefix3";
85 std::string ServerAccount3 = "Account3";
87 FakeConnectionObject FakeConnection1(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
88 FakeConnectionObject FakeConnection2(ServerAddress2, 8800, ServerUser2, ServerPass2, true, "/prefix2", "Account2");
89 FakeConnectionObject FakeConnection3(ServerAddress3, 8008, ServerUser3, ServerPass3, false, "/prefix3", "Account3");
91 EXPECT_EQ("gibberish.invalid", FakeConnection1.GetServerAddress());
92 EXPECT_EQ(8080, FakeConnection1.GetServerPort());
93 EXPECT_EQ("user", FakeConnection1.GetServerUser());
94 EXPECT_EQ("pass", FakeConnection1.GetServerPass());
95 EXPECT_EQ(true, FakeConnection1.GetServerSSL());
96 EXPECT_EQ(false, FakeConnection1.GetTestMode());
97 EXPECT_EQ("/prefix", FakeConnection1.GetServerPrefix());
98 EXPECT_EQ("Account1", FakeConnection1.GetServerAccount());
100 EXPECT_EQ("gibberish2.invalid", FakeConnection2.GetServerAddress());
101 EXPECT_EQ(8800, FakeConnection2.GetServerPort());
102 EXPECT_EQ("user2", FakeConnection2.GetServerUser());
103 EXPECT_EQ("pass2", FakeConnection2.GetServerPass());
104 EXPECT_EQ(true, FakeConnection2.GetServerSSL());
105 EXPECT_EQ(false, FakeConnection2.GetTestMode());
106 EXPECT_EQ("/prefix2", FakeConnection2.GetServerPrefix());
107 EXPECT_EQ("Account2", FakeConnection2.GetServerAccount());
109 EXPECT_EQ("gibberish3.invalid", FakeConnection3.GetServerAddress());
110 EXPECT_EQ(8008, FakeConnection3.GetServerPort());
111 EXPECT_EQ("user3", FakeConnection3.GetServerUser());
112 EXPECT_EQ("pass3", FakeConnection3.GetServerPass());
113 EXPECT_EQ(false, FakeConnection3.GetServerSSL());
114 EXPECT_EQ(false, FakeConnection3.GetTestMode());
115 EXPECT_EQ("/prefix3", FakeConnection3.GetServerPrefix());
116 EXPECT_EQ("Account3", FakeConnection3.GetServerAccount());
120 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Success){
122 std::string ServerAddress1 = "gibberish.invalid";
123 std::string ServerUser1 = "user";
124 std::string ServerPass1 = "pass";
126 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
127 FakeConnection.ResultStatus = COCONNECT_OK;
129 EXPECT_EQ(COCONNECT_OK, FakeConnection.Connect());
133 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_InvalidAddress){
135 std::string ServerAddress1 = "gibberish.invalid";
136 std::string ServerUser1 = "user";
137 std::string ServerPass1 = "pass";
139 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
140 FakeConnection.ResultStatus = COCONNECT_INVALID;
142 EXPECT_EQ(COCONNECT_INVALID, FakeConnection.Connect());
146 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Timeout){
148 std::string ServerAddress1 = "gibberish.invalid";
149 std::string ServerUser1 = "user";
150 std::string ServerPass1 = "pass";
152 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
153 FakeConnection.ResultStatus = COCONNECT_TIMEOUT;
155 EXPECT_EQ(COCONNECT_TIMEOUT, FakeConnection.Connect());
159 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Authentication_Failure){
161 std::string ServerAddress1 = "gibberish.invalid";
162 std::string ServerUser1 = "user";
163 std::string ServerPass1 = "pass";
165 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
166 FakeConnection.ResultStatus = COCONNECT_AUTHFAIL;
168 EXPECT_EQ(COCONNECT_AUTHFAIL, FakeConnection.Connect());
172 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Is_Able_To_Login){
174 std::string ServerAddress1 = "gibberish.invalid";
175 std::string ServerUser1 = "user";
176 std::string ServerPass1 = "pass";
178 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
179 FakeConnection.ResultAuthPassed = true;
180 FakeConnection.Connect();
182 EXPECT_EQ(true, FakeConnection.AbleToLogin());
186 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Is_Unable_To_Login){
188 std::string ServerAddress1 = "gibberish.invalid";
189 std::string ServerUser1 = "user";
190 std::string ServerPass1 = "pass";
192 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
193 FakeConnection.ResultAuthPassed = false;
194 FakeConnection.Connect();
196 EXPECT_EQ(false, FakeConnection.AbleToLogin());
200 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Can_Do_Processing){
202 std::string ServerAddress1 = "gibberish.invalid";
203 std::string ServerUser1 = "user";
204 std::string ServerPass1 = "pass";
206 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
207 FakeConnection.ResultCanProcess = true;
208 FakeConnection.Connect();
210 EXPECT_EQ(true, FakeConnection.CanDoProcessing());
214 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Supports_SSL){
216 std::string ServerAddress1 = "gibberish.invalid";
217 std::string ServerUser1 = "user";
218 std::string ServerPass1 = "pass";
220 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
221 FakeConnection.ResultSSLStatus = true;
222 FakeConnection.Connect();
224 EXPECT_EQ(true, FakeConnection.CanDoSSL());
228 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Does_Not_Support_SSL){
230 std::string ServerAddress1 = "gibberish.invalid";
231 std::string ServerUser1 = "user";
232 std::string ServerPass1 = "pass";
234 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
235 FakeConnection.ResultSSLStatus = false;
236 FakeConnection.Connect();
238 EXPECT_EQ(false, FakeConnection.CanDoSSL());
242 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_Valid_SSL_Certificate_Data){
244 std::string ServerAddress1 = "gibberish.invalid";
245 std::string ServerUser1 = "user";
246 std::string ServerPass1 = "pass";
248 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
249 FakeConnection.ResultSSLVerified = COSSL_VERIFIED;
250 FakeConnection.Connect();
252 EXPECT_EQ(COSSL_VERIFIED, FakeConnection.SSLVerify());
256 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_Invalid_SSL_Certificate_Data){
258 std::string ServerAddress1 = "gibberish.invalid";
259 std::string ServerUser1 = "user";
260 std::string ServerPass1 = "pass";
262 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
263 FakeConnection.ResultSSLVerified = COSSL_UNABLETOVERIFY;
264 FakeConnection.Connect();
266 EXPECT_EQ(COSSL_UNABLETOVERIFY, FakeConnection.SSLVerify());
270 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_User_Verified_SSL_Cerficiate_Data){
272 std::string ServerAddress1 = "gibberish.invalid";
273 std::string ServerUser1 = "user";
274 std::string ServerPass1 = "pass";
276 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
277 FakeConnection.ResultSSLVerified = COSSL_VERIFIED_USER;
278 FakeConnection.Connect();
280 EXPECT_EQ(COSSL_VERIFIED_USER, FakeConnection.SSLVerify());
284 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Doesnt_Use_SSL_Return_Not_Applicable_SSL_Result){
286 std::string ServerAddress1 = "gibberish.invalid";
287 std::string ServerUser1 = "user";
288 std::string ServerPass1 = "pass";
290 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, false);
291 FakeConnection.ResultSSLVerified = COSSL_NOTAPPLICABLE;
292 FakeConnection.Connect();
294 EXPECT_EQ(COSSL_NOTAPPLICABLE, FakeConnection.SSLVerify());
298 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_A_Valid_Response){
300 std::string ServerAddress1 = "gibberish.invalid";
301 std::string ServerUser1 = "user";
302 std::string ServerPass1 = "pass";
304 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
305 FakeConnection.ResultValidResponse = true;
306 FakeConnection.Connect();
308 EXPECT_EQ(true, FakeConnection.HasValidResponse());
312 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_A_Invalid_Response){
314 std::string ServerAddress1 = "gibberish.invalid";
315 std::string ServerUser1 = "user";
316 std::string ServerPass1 = "pass";
318 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
319 FakeConnection.ResultValidResponse = false;
320 FakeConnection.Connect();
322 EXPECT_EQ(false, FakeConnection.HasValidResponse());
326 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Uses_A_Self_Signed_SSL_Certificate){
328 std::string ServerAddress1 = "gibberish.invalid";
329 std::string ServerUser1 = "user";
330 std::string ServerPass1 = "pass";
332 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
333 FakeConnection.ResultSelfSigned = true;
334 FakeConnection.Connect();
336 EXPECT_EQ(true, FakeConnection.IsSelfSigned());
340 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Doesnt_Use_A_Self_Signed_SSL_Certificate){
342 std::string ServerAddress1 = "gibberish.invalid";
343 std::string ServerUser1 = "user";
344 std::string ServerPass1 = "pass";
346 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
347 FakeConnection.ResultSelfSigned = false;
348 FakeConnection.Connect();
350 EXPECT_EQ(false, FakeConnection.IsSelfSigned());
354 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_The_Server_Prefix_Of_Prefix_Test_A){
356 std::string ServerAddress1 = "gibberish.invalid";
357 std::string ServerUser1 = "user";
358 std::string ServerPass1 = "pass";
360 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
361 FakeConnection.ResultServerPrefix = "/prefix/test/a";
362 FakeConnection.Connect();
364 EXPECT_EQ("/prefix/test/a", FakeConnection.GetDefaultPrefix());
368 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_The_Server_Prefix_Of_Prefix_Test_B){
370 std::string ServerAddress1 = "gibberish.invalid";
371 std::string ServerUser1 = "user";
372 std::string ServerPass1 = "pass";
374 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
375 FakeConnection.ResultServerPrefix = "/prefix/test/b";
376 FakeConnection.Connect();
378 EXPECT_EQ("/prefix/test/b", FakeConnection.GetDefaultPrefix());
382 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Adds_A_Contact_Successfully){
384 std::string ServerAddress1 = "gibberish.invalid";
385 std::string ServerUser1 = "user";
386 std::string ServerPass1 = "pass";
388 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
389 FakeConnection.ResultServerPrefix = "/prefix/test/b";
390 FakeConnection.Connect();
392 std::string ContactFile =
395 "UID:84q2ioj13jofiujqwr\n"
400 FakeConnection.TestRequestResult = COREQUEST_OK;
401 FakeConnection.TestEntityTag = "4324svafhuiaffsdhui";
402 FakeConnection.TestResultCode = 201;
403 FakeConnection.TestSessionCode = 0;
404 FakeConnection.TestResultMessage = "";
406 COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile);
408 EXPECT_EQ(COREQUEST_OK, AddContactResult.RequestResult);
409 EXPECT_EQ("4324svafhuiaffsdhui", AddContactResult.EntityTag);
410 EXPECT_EQ(201, AddContactResult.ResultCode);
411 EXPECT_EQ(0, AddContactResult.SessionCode);
412 EXPECT_EQ("", AddContactResult.ResultMessage);
416 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Add_A_Contact_Due_To_Permissions){
418 std::string ServerAddress1 = "gibberish.invalid";
419 std::string ServerUser1 = "user";
420 std::string ServerPass1 = "pass";
422 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
423 FakeConnection.ResultServerPrefix = "/prefix/test/b";
424 FakeConnection.Connect();
426 std::string ContactFile =
429 "UID:84q2ioj13jofiujqwr\n"
434 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
435 FakeConnection.TestEntityTag = "";
436 FakeConnection.TestResultCode = 403;
437 FakeConnection.TestSessionCode = 22;
438 FakeConnection.TestResultMessage = "You do not have permission to add this resource.";
440 COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile);
442 EXPECT_EQ(COREQUEST_ERROR_SERVER, AddContactResult.RequestResult);
443 EXPECT_EQ("", AddContactResult.EntityTag);
444 EXPECT_EQ(403, AddContactResult.ResultCode);
445 EXPECT_EQ(22, AddContactResult.SessionCode);
446 EXPECT_EQ("You do not have permission to add this resource.", AddContactResult.ResultMessage);
450 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Add_A_Contact_Due_To_Invalid_Path){
452 std::string ServerAddress1 = "gibberish.invalid";
453 std::string ServerUser1 = "user";
454 std::string ServerPass1 = "pass";
456 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
457 FakeConnection.ResultServerPrefix = "/prefix/test/b";
458 FakeConnection.Connect();
460 std::string ContactFile =
463 "UID:84q2ioj13jofiujqwr\n"
468 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
469 FakeConnection.TestEntityTag = "";
470 FakeConnection.TestResultCode = 404;
471 FakeConnection.TestSessionCode = 22;
472 FakeConnection.TestResultMessage = "The location cannot be found.";
474 COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile);
476 EXPECT_EQ(COREQUEST_ERROR_SERVER, AddContactResult.RequestResult);
477 EXPECT_EQ("", AddContactResult.EntityTag);
478 EXPECT_EQ(404, AddContactResult.ResultCode);
479 EXPECT_EQ(22, AddContactResult.SessionCode);
480 EXPECT_EQ("The location cannot be found.", AddContactResult.ResultMessage);
484 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Add_A_Contact_Due_To_No_Connection){
486 std::string ServerAddress1 = "gibberish.invalid";
487 std::string ServerUser1 = "user";
488 std::string ServerPass1 = "pass";
490 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
491 FakeConnection.ResultServerPrefix = "/prefix/test/b";
492 FakeConnection.Connect();
494 std::string ContactFile =
497 "UID:84q2ioj13jofiujqwr\n"
502 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
503 FakeConnection.TestEntityTag = "";
504 FakeConnection.TestResultCode = 0;
505 FakeConnection.TestSessionCode = 0;
506 FakeConnection.TestResultMessage = "";
508 COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile);
510 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, AddContactResult.RequestResult);
511 EXPECT_EQ("", AddContactResult.EntityTag);
512 EXPECT_EQ(0, AddContactResult.ResultCode);
513 EXPECT_EQ(0, AddContactResult.SessionCode);
514 EXPECT_EQ("", AddContactResult.ResultMessage);
518 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Edits_A_Server_Contact){
520 std::string ServerAddress1 = "gibberish.invalid";
521 std::string ServerUser1 = "user";
522 std::string ServerPass1 = "pass";
524 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
525 FakeConnection.ResultServerPrefix = "/prefix/test/b";
526 FakeConnection.Connect();
528 std::string ContactFile =
531 "UID:84q2ioj13jofiujqwrAAA\n"
536 FakeConnection.TestRequestResult = COREQUEST_OK;
537 FakeConnection.TestEntityTag = "a23124sfadfdvxc1646541bsdfaf";
538 FakeConnection.TestResultCode = 200;
539 FakeConnection.TestSessionCode = 0;
540 FakeConnection.TestResultMessage = "";
542 COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile);
544 EXPECT_EQ(COREQUEST_OK, EditContactResult.RequestResult);
545 EXPECT_EQ("a23124sfadfdvxc1646541bsdfaf", EditContactResult.EntityTag);
546 EXPECT_EQ(200, EditContactResult.ResultCode);
547 EXPECT_EQ(0, EditContactResult.SessionCode);
548 EXPECT_EQ("", EditContactResult.ResultMessage);
550 FakeConnection.TestRequestResult = COREQUEST_OK;
551 FakeConnection.TestEntityTag = "asf84sa484saf614as64asvada4s6fas";
552 FakeConnection.TestResultCode = 204;
553 FakeConnection.TestSessionCode = 0;
554 FakeConnection.TestResultMessage = "";
556 EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile);
558 EXPECT_EQ(COREQUEST_OK, EditContactResult.RequestResult);
559 EXPECT_EQ("asf84sa484saf614as64asvada4s6fas", EditContactResult.EntityTag);
560 EXPECT_EQ(204, EditContactResult.ResultCode);
561 EXPECT_EQ(0, EditContactResult.SessionCode);
562 EXPECT_EQ("", EditContactResult.ResultMessage);
566 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Edit_A_Server_Contact_Due_To_Invalid_Permissions){
568 std::string ServerAddress1 = "gibberish.invalid";
569 std::string ServerUser1 = "user";
570 std::string ServerPass1 = "pass";
572 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
573 FakeConnection.ResultServerPrefix = "/prefix/test/b";
574 FakeConnection.Connect();
576 std::string ContactFile =
579 "UID:84q2ioj13jofiujqwrAAA\n"
584 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
585 FakeConnection.TestEntityTag = "";
586 FakeConnection.TestResultCode = 403;
587 FakeConnection.TestSessionCode = 22;
588 FakeConnection.TestResultMessage = "You do not have permission to add this resource.";
590 COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile);
592 EXPECT_EQ(COREQUEST_ERROR_SERVER, EditContactResult.RequestResult);
593 EXPECT_EQ("", EditContactResult.EntityTag);
594 EXPECT_EQ(403, EditContactResult.ResultCode);
595 EXPECT_EQ(22, EditContactResult.SessionCode);
596 EXPECT_EQ("You do not have permission to add this resource.", EditContactResult.ResultMessage);
600 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Edit_A_Server_Contact_Due_To_Invalid_Location){
602 std::string ServerAddress1 = "gibberish.invalid";
603 std::string ServerUser1 = "user";
604 std::string ServerPass1 = "pass";
606 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
607 FakeConnection.ResultServerPrefix = "/prefix/test/b";
608 FakeConnection.Connect();
610 std::string ContactFile =
613 "UID:84q2ioj13jofiujqwrAAA\n"
618 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
619 FakeConnection.TestEntityTag = "";
620 FakeConnection.TestResultCode = 404;
621 FakeConnection.TestSessionCode = 22;
622 FakeConnection.TestResultMessage = "The resource could not be found.";
624 COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile);
626 EXPECT_EQ(COREQUEST_ERROR_SERVER, EditContactResult.RequestResult);
627 EXPECT_EQ("", EditContactResult.EntityTag);
628 EXPECT_EQ(404, EditContactResult.ResultCode);
629 EXPECT_EQ(22, EditContactResult.SessionCode);
630 EXPECT_EQ("The resource could not be found.", EditContactResult.ResultMessage);
634 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Edit_A_Server_Contact_Due_To_No_Connection){
636 std::string ServerAddress1 = "gibberish.invalid";
637 std::string ServerUser1 = "user";
638 std::string ServerPass1 = "pass";
640 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
641 FakeConnection.ResultServerPrefix = "/prefix/test/b";
642 FakeConnection.Connect();
644 std::string ContactFile =
647 "UID:84q2ioj13jofiujqwrAAA\n"
652 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
653 FakeConnection.TestEntityTag = "";
654 FakeConnection.TestResultCode = 0;
655 FakeConnection.TestSessionCode = 0;
656 FakeConnection.TestResultMessage = "";
658 COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile);
660 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, EditContactResult.RequestResult);
661 EXPECT_EQ("", EditContactResult.EntityTag);
662 EXPECT_EQ(0, EditContactResult.ResultCode);
663 EXPECT_EQ(0, EditContactResult.SessionCode);
664 EXPECT_EQ("", EditContactResult.ResultMessage);
668 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Deletes_A_Server_Contact){
670 std::string ServerAddress1 = "gibberish.invalid";
671 std::string ServerUser1 = "user";
672 std::string ServerPass1 = "pass";
674 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
675 FakeConnection.ResultServerPrefix = "/prefix/test/b";
676 FakeConnection.Connect();
678 FakeConnection.TestRequestResult = COREQUEST_OK;
679 FakeConnection.TestEntityTag = "";
680 FakeConnection.TestResultCode = 200;
681 FakeConnection.TestSessionCode = 0;
682 FakeConnection.TestResultMessage = "";
684 COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf", "a23124sfadfdvxc1646541bsdfaf");
686 EXPECT_EQ(COREQUEST_OK, DeleteContactResult.RequestResult);
687 EXPECT_EQ("", DeleteContactResult.EntityTag);
688 EXPECT_EQ(200, DeleteContactResult.ResultCode);
689 EXPECT_EQ(0, DeleteContactResult.SessionCode);
690 EXPECT_EQ("", DeleteContactResult.ResultMessage);
692 FakeConnection.TestRequestResult = COREQUEST_OK;
693 FakeConnection.TestEntityTag = "";
694 FakeConnection.TestResultCode = 204;
695 FakeConnection.TestSessionCode = 0;
696 FakeConnection.TestResultMessage = "";
698 DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf", "asf84sa484saf614as64asvada4s6fas");
700 EXPECT_EQ(COREQUEST_OK, DeleteContactResult.RequestResult);
701 EXPECT_EQ("", DeleteContactResult.EntityTag);
702 EXPECT_EQ(204, DeleteContactResult.ResultCode);
703 EXPECT_EQ(0, DeleteContactResult.SessionCode);
704 EXPECT_EQ("", DeleteContactResult.ResultMessage);
708 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Delete_A_Server_Contact_Due_To_Invalid_Permissions){
710 std::string ServerAddress1 = "gibberish.invalid";
711 std::string ServerUser1 = "user";
712 std::string ServerPass1 = "pass";
714 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
715 FakeConnection.ResultServerPrefix = "/prefix/test/b";
716 FakeConnection.Connect();
718 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
719 FakeConnection.TestEntityTag = "";
720 FakeConnection.TestResultCode = 403;
721 FakeConnection.TestSessionCode = 22;
722 FakeConnection.TestResultMessage = "You do not have permission to delete this resource.";
724 COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf", "a23124sfadfdvxc1646541bsdfaf");
726 EXPECT_EQ(COREQUEST_ERROR_SERVER, DeleteContactResult.RequestResult);
727 EXPECT_EQ("", DeleteContactResult.EntityTag);
728 EXPECT_EQ(403, DeleteContactResult.ResultCode);
729 EXPECT_EQ(22, DeleteContactResult.SessionCode);
730 EXPECT_EQ("You do not have permission to delete this resource.", DeleteContactResult.ResultMessage);
734 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Delete_A_Server_Contact_Due_To_Missing_Location){
736 std::string ServerAddress1 = "gibberish.invalid";
737 std::string ServerUser1 = "user";
738 std::string ServerPass1 = "pass";
740 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
741 FakeConnection.ResultServerPrefix = "/prefix/test/b";
742 FakeConnection.Connect();
744 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
745 FakeConnection.TestEntityTag = "";
746 FakeConnection.TestResultCode = 404;
747 FakeConnection.TestSessionCode = 22;
748 FakeConnection.TestResultMessage = "The resource could not be found.";
750 COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf", "a23124sfadfdvxc1646541bsdfaf");
752 EXPECT_EQ(COREQUEST_ERROR_SERVER, DeleteContactResult.RequestResult);
753 EXPECT_EQ("", DeleteContactResult.EntityTag);
754 EXPECT_EQ(404, DeleteContactResult.ResultCode);
755 EXPECT_EQ(22, DeleteContactResult.SessionCode);
756 EXPECT_EQ("The resource could not be found.", DeleteContactResult.ResultMessage);
760 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Delete_A_Server_Contact_Due_To_No_Connection){
762 std::string ServerAddress1 = "gibberish.invalid";
763 std::string ServerUser1 = "user";
764 std::string ServerPass1 = "pass";
766 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
767 FakeConnection.ResultServerPrefix = "/prefix/test/b";
768 FakeConnection.Connect();
770 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
771 FakeConnection.TestEntityTag = "";
772 FakeConnection.TestResultCode = 0;
773 FakeConnection.TestSessionCode = 0;
774 FakeConnection.TestResultMessage = "";
776 COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf", "a23124sfadfdvxc1646541bsdfaf");
778 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, DeleteContactResult.RequestResult);
779 EXPECT_EQ("", DeleteContactResult.EntityTag);
780 EXPECT_EQ(0, DeleteContactResult.ResultCode);
781 EXPECT_EQ(0, DeleteContactResult.SessionCode);
782 EXPECT_EQ("", DeleteContactResult.ResultMessage);
786 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_Server_Entity_Tag_Value){
788 std::string ServerAddress1 = "gibberish.invalid";
789 std::string ServerUser1 = "user";
790 std::string ServerPass1 = "pass";
792 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
793 FakeConnection.ResultServerPrefix = "/prefix/test/b";
794 FakeConnection.Connect();
796 FakeConnection.TestRequestResult = COREQUEST_OK;
797 FakeConnection.TestEntityTag = "a23124sfadfdvxc1646541bsdfaf";
798 FakeConnection.TestResultCode = 200;
799 FakeConnection.TestSessionCode = 0;
800 FakeConnection.TestResultMessage = "";
802 COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf");
804 EXPECT_EQ(COREQUEST_OK, EntityTagResult.RequestResult);
805 EXPECT_EQ("a23124sfadfdvxc1646541bsdfaf", EntityTagResult.EntityTag);
806 EXPECT_EQ(200, EntityTagResult.ResultCode);
807 EXPECT_EQ(0, EntityTagResult.SessionCode);
808 EXPECT_EQ("", EntityTagResult.ResultMessage);
812 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Entity_Tag_Value_Due_To_Invalid_Permissions){
814 std::string ServerAddress1 = "gibberish.invalid";
815 std::string ServerUser1 = "user";
816 std::string ServerPass1 = "pass";
818 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
819 FakeConnection.ResultServerPrefix = "/prefix/test/b";
820 FakeConnection.Connect();
822 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
823 FakeConnection.TestEntityTag = "";
824 FakeConnection.TestResultCode = 403;
825 FakeConnection.TestSessionCode = 22;
826 FakeConnection.TestResultMessage = "You do not have permission to access this resource.";
828 COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf");
830 EXPECT_EQ(COREQUEST_ERROR_SERVER, EntityTagResult.RequestResult);
831 EXPECT_EQ("", EntityTagResult.EntityTag);
832 EXPECT_EQ(403, EntityTagResult.ResultCode);
833 EXPECT_EQ(22, EntityTagResult.SessionCode);
834 EXPECT_EQ("You do not have permission to access this resource.", EntityTagResult.ResultMessage);
838 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Entity_Tag_Value_Due_To_Missing_Resource){
840 std::string ServerAddress1 = "gibberish.invalid";
841 std::string ServerUser1 = "user";
842 std::string ServerPass1 = "pass";
844 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
845 FakeConnection.ResultServerPrefix = "/prefix/test/b";
846 FakeConnection.Connect();
848 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
849 FakeConnection.TestEntityTag = "";
850 FakeConnection.TestResultCode = 404;
851 FakeConnection.TestSessionCode = 22;
852 FakeConnection.TestResultMessage = "The resource cannot be found.";
854 COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf");
856 EXPECT_EQ(COREQUEST_ERROR_SERVER, EntityTagResult.RequestResult);
857 EXPECT_EQ("", EntityTagResult.EntityTag);
858 EXPECT_EQ(404, EntityTagResult.ResultCode);
859 EXPECT_EQ(22, EntityTagResult.SessionCode);
860 EXPECT_EQ("The resource cannot be found.", EntityTagResult.ResultMessage);
864 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Entity_Tag_Value_Due_To_No_Connection){
866 std::string ServerAddress1 = "gibberish.invalid";
867 std::string ServerUser1 = "user";
868 std::string ServerPass1 = "pass";
870 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
871 FakeConnection.ResultServerPrefix = "/prefix/test/b";
872 FakeConnection.Connect();
874 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
875 FakeConnection.TestEntityTag = "";
876 FakeConnection.TestResultCode = 0;
877 FakeConnection.TestSessionCode = 0;
878 FakeConnection.TestResultMessage = "";
880 COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf");
882 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, EntityTagResult.RequestResult);
883 EXPECT_EQ("", EntityTagResult.EntityTag);
884 EXPECT_EQ(0, EntityTagResult.ResultCode);
885 EXPECT_EQ(0, EntityTagResult.SessionCode);
886 EXPECT_EQ("", EntityTagResult.ResultMessage);
890 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_Server_Contact_Data){
892 std::string ServerAddress1 = "gibberish.invalid";
893 std::string ServerUser1 = "user";
894 std::string ServerPass1 = "pass";
896 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
897 FakeConnection.ResultServerPrefix = "/prefix/test/b";
898 FakeConnection.Connect();
900 std::string ContactFile =
903 "UID:84q2ioj13jofiujqwrAAA\n"
908 FakeConnection.TestRequestResult = COREQUEST_OK;
909 FakeConnection.TestEntityTag = "";
910 FakeConnection.TestResultCode = 200;
911 FakeConnection.TestSessionCode = 0;
912 FakeConnection.TestResultMessage = ContactFile;
914 COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf");
916 EXPECT_EQ(COREQUEST_OK, ServerDataResult.RequestResult);
917 EXPECT_EQ("", ServerDataResult.EntityTag);
918 EXPECT_EQ(200, ServerDataResult.ResultCode);
919 EXPECT_EQ(0, ServerDataResult.SessionCode);
920 EXPECT_EQ(ContactFile, ServerDataResult.ResultMessage);
924 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Gets_Server_Contact_Data_Due_To_Invalid_Permissions){
926 std::string ServerAddress1 = "gibberish.invalid";
927 std::string ServerUser1 = "user";
928 std::string ServerPass1 = "pass";
930 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
931 FakeConnection.ResultServerPrefix = "/prefix/test/b";
932 FakeConnection.Connect();
934 FakeConnection.TestRequestResult = COREQUEST_OK;
935 FakeConnection.TestEntityTag = "";
936 FakeConnection.TestResultCode = 403;
937 FakeConnection.TestSessionCode = 22;
938 FakeConnection.TestResultMessage = "You do not have permission to access this resource.";
940 COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf");
942 EXPECT_EQ(COREQUEST_OK, ServerDataResult.RequestResult);
943 EXPECT_EQ("", ServerDataResult.EntityTag);
944 EXPECT_EQ(403, ServerDataResult.ResultCode);
945 EXPECT_EQ(22, ServerDataResult.SessionCode);
946 EXPECT_EQ("You do not have permission to access this resource.", ServerDataResult.ResultMessage);
950 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Gets_Server_Contact_Data_Due_To_Missing_Resource){
952 std::string ServerAddress1 = "gibberish.invalid";
953 std::string ServerUser1 = "user";
954 std::string ServerPass1 = "pass";
956 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
957 FakeConnection.ResultServerPrefix = "/prefix/test/b";
958 FakeConnection.Connect();
960 FakeConnection.TestRequestResult = COREQUEST_OK;
961 FakeConnection.TestEntityTag = "";
962 FakeConnection.TestResultCode = 404;
963 FakeConnection.TestSessionCode = 22;
964 FakeConnection.TestResultMessage = "The resource could not be found.";
966 COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf");
968 EXPECT_EQ(COREQUEST_OK, ServerDataResult.RequestResult);
969 EXPECT_EQ("", ServerDataResult.EntityTag);
970 EXPECT_EQ(404, ServerDataResult.ResultCode);
971 EXPECT_EQ(22, ServerDataResult.SessionCode);
972 EXPECT_EQ("The resource could not be found.", ServerDataResult.ResultMessage);
976 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Contact_Data_Due_To_No_Connection){
978 std::string ServerAddress1 = "gibberish.invalid";
979 std::string ServerUser1 = "user";
980 std::string ServerPass1 = "pass";
982 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
983 FakeConnection.ResultServerPrefix = "/prefix/test/b";
984 FakeConnection.Connect();
986 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
987 FakeConnection.TestEntityTag = "";
988 FakeConnection.TestResultCode = 0;
989 FakeConnection.TestSessionCode = 0;
990 FakeConnection.TestResultMessage = "";
992 COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf");
994 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, ServerDataResult.RequestResult);
995 EXPECT_EQ("", ServerDataResult.EntityTag);
996 EXPECT_EQ(0, ServerDataResult.ResultCode);
997 EXPECT_EQ(0, ServerDataResult.SessionCode);
998 EXPECT_EQ("", ServerDataResult.ResultMessage);
1002 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_A_Full_Server_Contact_List){
1004 std::string ServerAddress1 = "gibberish.invalid";
1005 std::string ServerUser1 = "user";
1006 std::string ServerPass1 = "pass";
1008 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1009 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1010 FakeConnection.Connect();
1012 std::string ContactFile1 =
1015 "UID:84q2ioj13jofiujqwrAAA-1\n"
1017 "FN:The Meep Moop\n"
1020 std::string ContactFile2 =
1023 "UID:84q2ioj13jofiujqwrAAA-2\n"
1025 "FN:The Meep Moop\n"
1028 std::string ContactFile3 =
1031 "UID:84q2ioj13jofiujqwrAAA-3\n"
1033 "FN:The Meep Moop\n"
1036 COContactList ContactListSetup;
1037 COContactData ContactPerson;
1039 ContactPerson.Location = "/location1.vcf";
1040 ContactPerson.Data = ContactFile1;
1041 ContactListSetup.ListData.push_back(ContactPerson);
1043 ContactPerson.Location = "/location2.vcf";
1044 ContactPerson.Data = ContactFile2;
1045 ContactListSetup.ListData.push_back(ContactPerson);
1047 ContactPerson.Location = "/location3.vcf";
1048 ContactPerson.Data = ContactFile3;
1049 ContactListSetup.ListData.push_back(ContactPerson);
1050 ContactListSetup.SyncToken = "2312312-12312312";
1052 FakeConnection.TestContactList = ContactListSetup;
1053 FakeConnection.TestRequestResult = COREQUEST_OK;
1054 FakeConnection.TestEntityTag = "";
1055 FakeConnection.TestResultCode = 200;
1056 FakeConnection.TestSessionCode = 0;
1057 FakeConnection.TestResultMessage = "";
1059 COContactList ServerDataResult = FakeConnection.GetContactList("");
1061 EXPECT_EQ(COREQUEST_OK, ServerDataResult.ServerResponse.RequestResult);
1062 EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag);
1063 EXPECT_EQ(200, ServerDataResult.ServerResponse.ResultCode);
1064 EXPECT_EQ(0, ServerDataResult.ServerResponse.SessionCode);
1065 EXPECT_EQ("", ServerDataResult.ServerResponse.ResultMessage);
1067 EXPECT_EQ("2312312-12312312", ServerDataResult.SyncToken);
1069 EXPECT_EQ(3, ServerDataResult.ListData.size());
1071 EXPECT_EQ("/location1.vcf", ServerDataResult.ListData[0].Location);
1072 EXPECT_EQ(ContactFile1, ServerDataResult.ListData[0].Data);
1074 EXPECT_EQ("/location2.vcf", ServerDataResult.ListData[1].Location);
1075 EXPECT_EQ(ContactFile2, ServerDataResult.ListData[1].Data);
1077 EXPECT_EQ("/location3.vcf", ServerDataResult.ListData[2].Location);
1078 EXPECT_EQ(ContactFile3, ServerDataResult.ListData[2].Data);
1082 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_A_Partial_Server_Contact_List){
1084 std::string ServerAddress1 = "gibberish.invalid";
1085 std::string ServerUser1 = "user";
1086 std::string ServerPass1 = "pass";
1088 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1089 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1090 FakeConnection.Connect();
1092 std::string ContactFile3 =
1095 "UID:84q2ioj13jofiujqwrAAA-3\n"
1097 "FN:The Meep Moop\n"
1100 COContactList ContactListSetup;
1101 COContactData ContactPerson;
1103 ContactPerson.Location = "/location3.vcf";
1104 ContactPerson.Data = ContactFile3;
1105 ContactListSetup.ListData.push_back(ContactPerson);
1106 ContactListSetup.SyncToken = "5964589-43543534";
1108 FakeConnection.TestContactList = ContactListSetup;
1109 FakeConnection.TestRequestResult = COREQUEST_OK;
1110 FakeConnection.TestEntityTag = "";
1111 FakeConnection.TestResultCode = 200;
1112 FakeConnection.TestSessionCode = 0;
1113 FakeConnection.TestResultMessage = "";
1115 COContactList ServerDataResult = FakeConnection.GetContactList("2312312-12312312");
1117 EXPECT_EQ(COREQUEST_OK, ServerDataResult.ServerResponse.RequestResult);
1118 EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag);
1119 EXPECT_EQ(200, ServerDataResult.ServerResponse.ResultCode);
1120 EXPECT_EQ(0, ServerDataResult.ServerResponse.SessionCode);
1121 EXPECT_EQ("", ServerDataResult.ServerResponse.ResultMessage);
1123 EXPECT_EQ("5964589-43543534", ServerDataResult.SyncToken);
1125 EXPECT_EQ(1, ServerDataResult.ListData.size());
1127 EXPECT_EQ("/location3.vcf", ServerDataResult.ListData[0].Location);
1128 EXPECT_EQ(ContactFile3, ServerDataResult.ListData[0].Data);
1132 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_A_Contact_List_Due_To_Invalid_Permissions){
1134 std::string ServerAddress1 = "gibberish.invalid";
1135 std::string ServerUser1 = "user";
1136 std::string ServerPass1 = "pass";
1138 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1139 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1140 FakeConnection.Connect();
1142 COContactList ContactListSetup;
1143 ContactListSetup.SyncToken = "";
1145 FakeConnection.TestContactList = ContactListSetup;
1146 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
1147 FakeConnection.TestEntityTag = "";
1148 FakeConnection.TestResultCode = 403;
1149 FakeConnection.TestSessionCode = 22;
1150 FakeConnection.TestResultMessage = "You do not have permission to access this resource.";
1152 COContactList ServerDataResult = FakeConnection.GetContactList("");
1154 EXPECT_EQ(COREQUEST_ERROR_SERVER, ServerDataResult.ServerResponse.RequestResult);
1155 EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag);
1156 EXPECT_EQ(403, ServerDataResult.ServerResponse.ResultCode);
1157 EXPECT_EQ(22, ServerDataResult.ServerResponse.SessionCode);
1158 EXPECT_EQ("You do not have permission to access this resource.", ServerDataResult.ServerResponse.ResultMessage);
1160 EXPECT_EQ(0, ServerDataResult.ListData.size());
1164 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_A_Contact_List_Due_To_Missing_Resource){
1166 std::string ServerAddress1 = "gibberish.invalid";
1167 std::string ServerUser1 = "user";
1168 std::string ServerPass1 = "pass";
1170 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1171 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1172 FakeConnection.Connect();
1174 COContactList ContactListSetup;
1175 ContactListSetup.SyncToken = "";
1177 FakeConnection.TestContactList = ContactListSetup;
1178 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
1179 FakeConnection.TestEntityTag = "";
1180 FakeConnection.TestResultCode = 404;
1181 FakeConnection.TestSessionCode = 22;
1182 FakeConnection.TestResultMessage = "The resource could not be found.";
1184 COContactList ServerDataResult = FakeConnection.GetContactList("");
1186 EXPECT_EQ(COREQUEST_ERROR_SERVER, ServerDataResult.ServerResponse.RequestResult);
1187 EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag);
1188 EXPECT_EQ(404, ServerDataResult.ServerResponse.ResultCode);
1189 EXPECT_EQ(22, ServerDataResult.ServerResponse.SessionCode);
1190 EXPECT_EQ("The resource could not be found.", ServerDataResult.ServerResponse.ResultMessage);
1192 EXPECT_EQ(0, ServerDataResult.ListData.size());
1196 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_A_Contact_List_Due_To_No_Connection){
1198 std::string ServerAddress1 = "gibberish.invalid";
1199 std::string ServerUser1 = "user";
1200 std::string ServerPass1 = "pass";
1202 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1203 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1204 FakeConnection.Connect();
1206 COContactList ContactListSetup;
1207 ContactListSetup.SyncToken = "";
1209 FakeConnection.TestContactList = ContactListSetup;
1210 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
1211 FakeConnection.TestEntityTag = "";
1212 FakeConnection.TestResultCode = 404;
1213 FakeConnection.TestSessionCode = 22;
1214 FakeConnection.TestResultMessage = "The resource could not be found.";
1216 COContactList ServerDataResult = FakeConnection.GetContactList("");
1218 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, ServerDataResult.ServerResponse.RequestResult);
1219 EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag);
1220 EXPECT_EQ(404, ServerDataResult.ServerResponse.ResultCode);
1221 EXPECT_EQ(22, ServerDataResult.ServerResponse.SessionCode);
1222 EXPECT_EQ("The resource could not be found.", ServerDataResult.ServerResponse.ResultMessage);
1224 EXPECT_EQ(0, ServerDataResult.ListData.size());
1228 TEST(CardDAV, Use_Fake_To_Simulate_A_Wait_For_A_Completed_Task){
1230 std::string ServerAddress1 = "gibberish.invalid";
1231 std::string ServerUser1 = "user";
1232 std::string ServerPass1 = "pass";
1234 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1235 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1236 FakeConnection.Connect();
1237 FakeConnection.ResultTaskCompleted = false;
1239 while (!FakeConnection.IsTaskCompleted()){
1241 std::this_thread::sleep_for(std::chrono::milliseconds(250));
1242 FakeConnection.ResultTaskCompleted = true;
1246 EXPECT_TRUE(FakeConnection.ResultTaskCompleted);