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 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 FakeConnection1.ResultTestMode = true;
43 FakeConnection2.ResultTestMode = true;
44 FakeConnection3.ResultTestMode = true;
46 EXPECT_EQ("gibberish.invalid", FakeConnection1.GetServerAddress());
47 EXPECT_EQ(8080, FakeConnection1.GetServerPort());
48 EXPECT_EQ("user", FakeConnection1.GetServerUser());
49 EXPECT_EQ("pass", FakeConnection1.GetServerPass());
50 EXPECT_EQ(true, FakeConnection1.GetServerSSL());
51 EXPECT_EQ(true, FakeConnection1.GetTestMode());
53 EXPECT_EQ("gibberish2.invalid", FakeConnection2.GetServerAddress());
54 EXPECT_EQ(8800, FakeConnection2.GetServerPort());
55 EXPECT_EQ("user2", FakeConnection2.GetServerUser());
56 EXPECT_EQ("pass2", FakeConnection2.GetServerPass());
57 EXPECT_EQ(true, FakeConnection2.GetServerSSL());
58 EXPECT_EQ(true, FakeConnection2.GetTestMode());
60 EXPECT_EQ("gibberish3.invalid", FakeConnection3.GetServerAddress());
61 EXPECT_EQ(8008, FakeConnection3.GetServerPort());
62 EXPECT_EQ("user3", FakeConnection3.GetServerUser());
63 EXPECT_EQ("pass3", FakeConnection3.GetServerPass());
64 EXPECT_EQ(false, FakeConnection3.GetServerSSL());
65 EXPECT_EQ(true, FakeConnection3.GetTestMode());
69 TEST(CardDAV, Use_Fake_To_Setup_And_Check_Connection_Settings_With_TestMode_False){
71 std::string ServerAddress1 = "gibberish.invalid";
72 std::string ServerUser1 = "user";
73 std::string ServerPass1 = "pass";
74 std::string ServerPrefix1 = "/prefix";
75 std::string ServerAccount1 = "Account1";
77 std::string ServerAddress2 = "gibberish2.invalid";
78 std::string ServerUser2 = "user2";
79 std::string ServerPass2 = "pass2";
80 std::string ServerPrefix2 = "/prefix2";
81 std::string ServerAccount2 = "Account2";
83 std::string ServerAddress3 = "gibberish3.invalid";
84 std::string ServerUser3 = "user3";
85 std::string ServerPass3 = "pass3";
86 std::string ServerPrefix3 = "/prefix3";
87 std::string ServerAccount3 = "Account3";
89 FakeConnectionObject FakeConnection1(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
90 FakeConnectionObject FakeConnection2(ServerAddress2, 8800, ServerUser2, ServerPass2, true, "/prefix2", "Account2");
91 FakeConnectionObject FakeConnection3(ServerAddress3, 8008, ServerUser3, ServerPass3, false, "/prefix3", "Account3");
93 FakeConnection1.ResultTestMode = false;
94 FakeConnection2.ResultTestMode = false;
95 FakeConnection3.ResultTestMode = false;
97 EXPECT_EQ("gibberish.invalid", FakeConnection1.GetServerAddress());
98 EXPECT_EQ(8080, FakeConnection1.GetServerPort());
99 EXPECT_EQ("user", FakeConnection1.GetServerUser());
100 EXPECT_EQ("pass", FakeConnection1.GetServerPass());
101 EXPECT_EQ(true, FakeConnection1.GetServerSSL());
102 EXPECT_EQ(false, FakeConnection1.GetTestMode());
103 EXPECT_EQ("/prefix", FakeConnection1.GetServerPrefix());
104 EXPECT_EQ("Account1", FakeConnection1.GetServerAccount());
106 EXPECT_EQ("gibberish2.invalid", FakeConnection2.GetServerAddress());
107 EXPECT_EQ(8800, FakeConnection2.GetServerPort());
108 EXPECT_EQ("user2", FakeConnection2.GetServerUser());
109 EXPECT_EQ("pass2", FakeConnection2.GetServerPass());
110 EXPECT_EQ(true, FakeConnection2.GetServerSSL());
111 EXPECT_EQ(false, FakeConnection2.GetTestMode());
112 EXPECT_EQ("/prefix2", FakeConnection2.GetServerPrefix());
113 EXPECT_EQ("Account2", FakeConnection2.GetServerAccount());
115 EXPECT_EQ("gibberish3.invalid", FakeConnection3.GetServerAddress());
116 EXPECT_EQ(8008, FakeConnection3.GetServerPort());
117 EXPECT_EQ("user3", FakeConnection3.GetServerUser());
118 EXPECT_EQ("pass3", FakeConnection3.GetServerPass());
119 EXPECT_EQ(false, FakeConnection3.GetServerSSL());
120 EXPECT_EQ(false, FakeConnection3.GetTestMode());
121 EXPECT_EQ("/prefix3", FakeConnection3.GetServerPrefix());
122 EXPECT_EQ("Account3", FakeConnection3.GetServerAccount());
126 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Success){
128 std::string ServerAddress1 = "gibberish.invalid";
129 std::string ServerUser1 = "user";
130 std::string ServerPass1 = "pass";
132 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
133 FakeConnection.ResultStatus = COCONNECT_OK;
135 EXPECT_EQ(COCONNECT_OK, FakeConnection.Connect(false));
139 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_InvalidAddress){
141 std::string ServerAddress1 = "gibberish.invalid";
142 std::string ServerUser1 = "user";
143 std::string ServerPass1 = "pass";
145 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
146 FakeConnection.ResultStatus = COCONNECT_INVALID;
148 EXPECT_EQ(COCONNECT_INVALID, FakeConnection.Connect(false));
152 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Timeout){
154 std::string ServerAddress1 = "gibberish.invalid";
155 std::string ServerUser1 = "user";
156 std::string ServerPass1 = "pass";
158 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
159 FakeConnection.ResultStatus = COCONNECT_TIMEOUT;
161 EXPECT_EQ(COCONNECT_TIMEOUT, FakeConnection.Connect(false));
165 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Authentication_Failure){
167 std::string ServerAddress1 = "gibberish.invalid";
168 std::string ServerUser1 = "user";
169 std::string ServerPass1 = "pass";
171 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
172 FakeConnection.ResultStatus = COCONNECT_AUTHFAIL;
174 EXPECT_EQ(COCONNECT_AUTHFAIL, FakeConnection.Connect(false));
178 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Is_Able_To_Login){
180 std::string ServerAddress1 = "gibberish.invalid";
181 std::string ServerUser1 = "user";
182 std::string ServerPass1 = "pass";
184 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
185 FakeConnection.ResultAuthPassed = true;
186 FakeConnection.Connect(false);
188 EXPECT_EQ(true, FakeConnection.AbleToLogin());
192 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Is_Unable_To_Login){
194 std::string ServerAddress1 = "gibberish.invalid";
195 std::string ServerUser1 = "user";
196 std::string ServerPass1 = "pass";
198 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
199 FakeConnection.ResultAuthPassed = false;
200 FakeConnection.Connect(false);
202 EXPECT_EQ(false, FakeConnection.AbleToLogin());
206 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Can_Do_Processing){
208 std::string ServerAddress1 = "gibberish.invalid";
209 std::string ServerUser1 = "user";
210 std::string ServerPass1 = "pass";
212 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
213 FakeConnection.ResultCanProcess = true;
214 FakeConnection.Connect(false);
216 EXPECT_EQ(true, FakeConnection.CanDoProcessing());
220 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Supports_SSL){
222 std::string ServerAddress1 = "gibberish.invalid";
223 std::string ServerUser1 = "user";
224 std::string ServerPass1 = "pass";
226 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
227 FakeConnection.ResultSSLStatus = true;
228 FakeConnection.Connect(false);
230 EXPECT_EQ(true, FakeConnection.CanDoSSL());
234 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Does_Not_Support_SSL){
236 std::string ServerAddress1 = "gibberish.invalid";
237 std::string ServerUser1 = "user";
238 std::string ServerPass1 = "pass";
240 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
241 FakeConnection.ResultSSLStatus = false;
242 FakeConnection.Connect(false);
244 EXPECT_EQ(false, FakeConnection.CanDoSSL());
248 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_Valid_SSL_Certificate_Data){
250 std::string ServerAddress1 = "gibberish.invalid";
251 std::string ServerUser1 = "user";
252 std::string ServerPass1 = "pass";
254 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
255 FakeConnection.ResultSSLVerified = COSSL_VERIFIED;
256 FakeConnection.Connect(false);
258 EXPECT_EQ(COSSL_VERIFIED, FakeConnection.SSLVerify());
262 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_Invalid_SSL_Certificate_Data){
264 std::string ServerAddress1 = "gibberish.invalid";
265 std::string ServerUser1 = "user";
266 std::string ServerPass1 = "pass";
268 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
269 FakeConnection.ResultSSLVerified = COSSL_UNABLETOVERIFY;
270 FakeConnection.ResultStatus = COCONNECT_SSLFAIL;
272 EXPECT_EQ(COCONNECT_SSLFAIL, FakeConnection.Connect(false));
273 EXPECT_EQ(COSSL_UNABLETOVERIFY, FakeConnection.SSLVerify());
277 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_User_Verified_SSL_Cerficiate_Data){
279 std::string ServerAddress1 = "gibberish.invalid";
280 std::string ServerUser1 = "user";
281 std::string ServerPass1 = "pass";
283 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
284 FakeConnection.ResultSSLVerified = COSSL_VERIFIED_USER;
285 FakeConnection.Connect(false);
287 EXPECT_EQ(COSSL_VERIFIED_USER, FakeConnection.SSLVerify());
291 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Doesnt_Use_SSL_Return_Not_Applicable_SSL_Result){
293 std::string ServerAddress1 = "gibberish.invalid";
294 std::string ServerUser1 = "user";
295 std::string ServerPass1 = "pass";
297 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, false);
298 FakeConnection.ResultSSLVerified = COSSL_NOTAPPLICABLE;
299 FakeConnection.Connect(false);
301 EXPECT_EQ(COSSL_NOTAPPLICABLE, FakeConnection.SSLVerify());
305 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_A_Valid_Response){
307 std::string ServerAddress1 = "gibberish.invalid";
308 std::string ServerUser1 = "user";
309 std::string ServerPass1 = "pass";
311 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
312 FakeConnection.ResultValidResponse = true;
313 FakeConnection.Connect(false);
315 EXPECT_EQ(true, FakeConnection.HasValidResponse());
319 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_A_Invalid_Response){
321 std::string ServerAddress1 = "gibberish.invalid";
322 std::string ServerUser1 = "user";
323 std::string ServerPass1 = "pass";
325 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
326 FakeConnection.ResultValidResponse = false;
327 FakeConnection.Connect(false);
329 EXPECT_EQ(false, FakeConnection.HasValidResponse());
333 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Uses_A_Self_Signed_SSL_Certificate){
335 std::string ServerAddress1 = "gibberish.invalid";
336 std::string ServerUser1 = "user";
337 std::string ServerPass1 = "pass";
339 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
340 FakeConnection.ResultSelfSigned = true;
341 FakeConnection.Connect(false);
343 EXPECT_EQ(true, FakeConnection.IsSelfSigned());
347 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Doesnt_Use_A_Self_Signed_SSL_Certificate){
349 std::string ServerAddress1 = "gibberish.invalid";
350 std::string ServerUser1 = "user";
351 std::string ServerPass1 = "pass";
353 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
354 FakeConnection.ResultSelfSigned = false;
355 FakeConnection.Connect(false);
357 EXPECT_EQ(false, FakeConnection.IsSelfSigned());
361 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_The_Server_Prefix_Of_Prefix_Test_A){
363 std::string ServerAddress1 = "gibberish.invalid";
364 std::string ServerUser1 = "user";
365 std::string ServerPass1 = "pass";
367 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
368 FakeConnection.ResultServerPrefix = "/prefix/test/a";
369 FakeConnection.Connect(false);
371 EXPECT_EQ("/prefix/test/a", FakeConnection.GetDefaultPrefix());
375 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_The_Server_Prefix_Of_Prefix_Test_B){
377 std::string ServerAddress1 = "gibberish.invalid";
378 std::string ServerUser1 = "user";
379 std::string ServerPass1 = "pass";
381 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true);
382 FakeConnection.ResultServerPrefix = "/prefix/test/b";
383 FakeConnection.Connect(false);
385 EXPECT_EQ("/prefix/test/b", FakeConnection.GetDefaultPrefix());
389 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Adds_A_Contact_Successfully){
391 std::string ServerAddress1 = "gibberish.invalid";
392 std::string ServerUser1 = "user";
393 std::string ServerPass1 = "pass";
395 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
396 FakeConnection.ResultServerPrefix = "/prefix/test/b";
397 FakeConnection.Connect(false);
399 std::string ContactFile =
402 "UID:84q2ioj13jofiujqwr\n"
407 FakeConnection.TestRequestResult = COREQUEST_OK;
408 FakeConnection.TestEntityTag = "4324svafhuiaffsdhui";
409 FakeConnection.TestResultCode = 201;
410 FakeConnection.TestSessionCode = 0;
411 FakeConnection.TestResultMessage = "";
413 COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile);
415 EXPECT_EQ(COREQUEST_OK, AddContactResult.RequestResult);
416 EXPECT_EQ("4324svafhuiaffsdhui", AddContactResult.EntityTag);
417 EXPECT_EQ(201, AddContactResult.ResultCode);
418 EXPECT_EQ(0, AddContactResult.SessionCode);
419 EXPECT_EQ("", AddContactResult.ResultMessage);
423 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Add_A_Contact_Due_To_Permissions){
425 std::string ServerAddress1 = "gibberish.invalid";
426 std::string ServerUser1 = "user";
427 std::string ServerPass1 = "pass";
429 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
430 FakeConnection.ResultServerPrefix = "/prefix/test/b";
431 FakeConnection.Connect(false);
433 std::string ContactFile =
436 "UID:84q2ioj13jofiujqwr\n"
441 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
442 FakeConnection.TestEntityTag = "";
443 FakeConnection.TestResultCode = 403;
444 FakeConnection.TestSessionCode = 22;
445 FakeConnection.TestResultMessage = "You do not have permission to add this resource.";
447 COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile);
449 EXPECT_EQ(COREQUEST_ERROR_SERVER, AddContactResult.RequestResult);
450 EXPECT_EQ("", AddContactResult.EntityTag);
451 EXPECT_EQ(403, AddContactResult.ResultCode);
452 EXPECT_EQ(22, AddContactResult.SessionCode);
453 EXPECT_EQ("You do not have permission to add this resource.", AddContactResult.ResultMessage);
457 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Add_A_Contact_Due_To_Invalid_Path){
459 std::string ServerAddress1 = "gibberish.invalid";
460 std::string ServerUser1 = "user";
461 std::string ServerPass1 = "pass";
463 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
464 FakeConnection.ResultServerPrefix = "/prefix/test/b";
465 FakeConnection.Connect(false);
467 std::string ContactFile =
470 "UID:84q2ioj13jofiujqwr\n"
475 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
476 FakeConnection.TestEntityTag = "";
477 FakeConnection.TestResultCode = 404;
478 FakeConnection.TestSessionCode = 22;
479 FakeConnection.TestResultMessage = "The location cannot be found.";
481 COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile);
483 EXPECT_EQ(COREQUEST_ERROR_SERVER, AddContactResult.RequestResult);
484 EXPECT_EQ("", AddContactResult.EntityTag);
485 EXPECT_EQ(404, AddContactResult.ResultCode);
486 EXPECT_EQ(22, AddContactResult.SessionCode);
487 EXPECT_EQ("The location cannot be found.", AddContactResult.ResultMessage);
491 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Add_A_Contact_Due_To_No_Connection){
493 std::string ServerAddress1 = "gibberish.invalid";
494 std::string ServerUser1 = "user";
495 std::string ServerPass1 = "pass";
497 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
498 FakeConnection.ResultServerPrefix = "/prefix/test/b";
499 FakeConnection.Connect(false);
501 std::string ContactFile =
504 "UID:84q2ioj13jofiujqwr\n"
509 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
510 FakeConnection.TestEntityTag = "";
511 FakeConnection.TestResultCode = 0;
512 FakeConnection.TestSessionCode = 0;
513 FakeConnection.TestResultMessage = "";
515 COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile);
517 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, AddContactResult.RequestResult);
518 EXPECT_EQ("", AddContactResult.EntityTag);
519 EXPECT_EQ(0, AddContactResult.ResultCode);
520 EXPECT_EQ(0, AddContactResult.SessionCode);
521 EXPECT_EQ("", AddContactResult.ResultMessage);
525 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Edits_A_Server_Contact){
527 std::string ServerAddress1 = "gibberish.invalid";
528 std::string ServerUser1 = "user";
529 std::string ServerPass1 = "pass";
531 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
532 FakeConnection.ResultServerPrefix = "/prefix/test/b";
533 FakeConnection.Connect(false);
535 std::string ContactFile =
538 "UID:84q2ioj13jofiujqwrAAA\n"
543 FakeConnection.TestRequestResult = COREQUEST_OK;
544 FakeConnection.TestEntityTag = "a23124sfadfdvxc1646541bsdfaf";
545 FakeConnection.TestResultCode = 200;
546 FakeConnection.TestSessionCode = 0;
547 FakeConnection.TestResultMessage = "";
549 COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile);
551 EXPECT_EQ(COREQUEST_OK, EditContactResult.RequestResult);
552 EXPECT_EQ("a23124sfadfdvxc1646541bsdfaf", EditContactResult.EntityTag);
553 EXPECT_EQ(200, EditContactResult.ResultCode);
554 EXPECT_EQ(0, EditContactResult.SessionCode);
555 EXPECT_EQ("", EditContactResult.ResultMessage);
557 FakeConnection.TestRequestResult = COREQUEST_OK;
558 FakeConnection.TestEntityTag = "asf84sa484saf614as64asvada4s6fas";
559 FakeConnection.TestResultCode = 204;
560 FakeConnection.TestSessionCode = 0;
561 FakeConnection.TestResultMessage = "";
563 EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile);
565 EXPECT_EQ(COREQUEST_OK, EditContactResult.RequestResult);
566 EXPECT_EQ("asf84sa484saf614as64asvada4s6fas", EditContactResult.EntityTag);
567 EXPECT_EQ(204, EditContactResult.ResultCode);
568 EXPECT_EQ(0, EditContactResult.SessionCode);
569 EXPECT_EQ("", EditContactResult.ResultMessage);
573 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Edit_A_Server_Contact_Due_To_Invalid_Permissions){
575 std::string ServerAddress1 = "gibberish.invalid";
576 std::string ServerUser1 = "user";
577 std::string ServerPass1 = "pass";
579 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
580 FakeConnection.ResultServerPrefix = "/prefix/test/b";
581 FakeConnection.Connect(false);
583 std::string ContactFile =
586 "UID:84q2ioj13jofiujqwrAAA\n"
591 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
592 FakeConnection.TestEntityTag = "";
593 FakeConnection.TestResultCode = 403;
594 FakeConnection.TestSessionCode = 22;
595 FakeConnection.TestResultMessage = "You do not have permission to add this resource.";
597 COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile);
599 EXPECT_EQ(COREQUEST_ERROR_SERVER, EditContactResult.RequestResult);
600 EXPECT_EQ("", EditContactResult.EntityTag);
601 EXPECT_EQ(403, EditContactResult.ResultCode);
602 EXPECT_EQ(22, EditContactResult.SessionCode);
603 EXPECT_EQ("You do not have permission to add this resource.", EditContactResult.ResultMessage);
607 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Edit_A_Server_Contact_Due_To_Invalid_Location){
609 std::string ServerAddress1 = "gibberish.invalid";
610 std::string ServerUser1 = "user";
611 std::string ServerPass1 = "pass";
613 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
614 FakeConnection.ResultServerPrefix = "/prefix/test/b";
615 FakeConnection.Connect(false);
617 std::string ContactFile =
620 "UID:84q2ioj13jofiujqwrAAA\n"
625 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
626 FakeConnection.TestEntityTag = "";
627 FakeConnection.TestResultCode = 404;
628 FakeConnection.TestSessionCode = 22;
629 FakeConnection.TestResultMessage = "The resource could not be found.";
631 COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile);
633 EXPECT_EQ(COREQUEST_ERROR_SERVER, EditContactResult.RequestResult);
634 EXPECT_EQ("", EditContactResult.EntityTag);
635 EXPECT_EQ(404, EditContactResult.ResultCode);
636 EXPECT_EQ(22, EditContactResult.SessionCode);
637 EXPECT_EQ("The resource could not be found.", EditContactResult.ResultMessage);
641 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Edit_A_Server_Contact_Due_To_No_Connection){
643 std::string ServerAddress1 = "gibberish.invalid";
644 std::string ServerUser1 = "user";
645 std::string ServerPass1 = "pass";
647 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
648 FakeConnection.ResultServerPrefix = "/prefix/test/b";
649 FakeConnection.Connect(false);
651 std::string ContactFile =
654 "UID:84q2ioj13jofiujqwrAAA\n"
659 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
660 FakeConnection.TestEntityTag = "";
661 FakeConnection.TestResultCode = 0;
662 FakeConnection.TestSessionCode = 0;
663 FakeConnection.TestResultMessage = "";
665 COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile);
667 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, EditContactResult.RequestResult);
668 EXPECT_EQ("", EditContactResult.EntityTag);
669 EXPECT_EQ(0, EditContactResult.ResultCode);
670 EXPECT_EQ(0, EditContactResult.SessionCode);
671 EXPECT_EQ("", EditContactResult.ResultMessage);
675 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Deletes_A_Server_Contact){
677 std::string ServerAddress1 = "gibberish.invalid";
678 std::string ServerUser1 = "user";
679 std::string ServerPass1 = "pass";
681 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
682 FakeConnection.ResultServerPrefix = "/prefix/test/b";
683 FakeConnection.Connect(false);
685 FakeConnection.TestRequestResult = COREQUEST_OK;
686 FakeConnection.TestEntityTag = "";
687 FakeConnection.TestResultCode = 200;
688 FakeConnection.TestSessionCode = 0;
689 FakeConnection.TestResultMessage = "";
691 COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf");
693 EXPECT_EQ(COREQUEST_OK, DeleteContactResult.RequestResult);
694 EXPECT_EQ("", DeleteContactResult.EntityTag);
695 EXPECT_EQ(200, DeleteContactResult.ResultCode);
696 EXPECT_EQ(0, DeleteContactResult.SessionCode);
697 EXPECT_EQ("", DeleteContactResult.ResultMessage);
699 FakeConnection.TestRequestResult = COREQUEST_OK;
700 FakeConnection.TestEntityTag = "";
701 FakeConnection.TestResultCode = 204;
702 FakeConnection.TestSessionCode = 0;
703 FakeConnection.TestResultMessage = "";
705 DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf");
707 EXPECT_EQ(COREQUEST_OK, DeleteContactResult.RequestResult);
708 EXPECT_EQ("", DeleteContactResult.EntityTag);
709 EXPECT_EQ(204, DeleteContactResult.ResultCode);
710 EXPECT_EQ(0, DeleteContactResult.SessionCode);
711 EXPECT_EQ("", DeleteContactResult.ResultMessage);
715 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Delete_A_Server_Contact_Due_To_Invalid_Permissions){
717 std::string ServerAddress1 = "gibberish.invalid";
718 std::string ServerUser1 = "user";
719 std::string ServerPass1 = "pass";
721 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
722 FakeConnection.ResultServerPrefix = "/prefix/test/b";
723 FakeConnection.Connect(false);
725 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
726 FakeConnection.TestEntityTag = "";
727 FakeConnection.TestResultCode = 403;
728 FakeConnection.TestSessionCode = 22;
729 FakeConnection.TestResultMessage = "You do not have permission to delete this resource.";
731 COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf");
733 EXPECT_EQ(COREQUEST_ERROR_SERVER, DeleteContactResult.RequestResult);
734 EXPECT_EQ("", DeleteContactResult.EntityTag);
735 EXPECT_EQ(403, DeleteContactResult.ResultCode);
736 EXPECT_EQ(22, DeleteContactResult.SessionCode);
737 EXPECT_EQ("You do not have permission to delete this resource.", DeleteContactResult.ResultMessage);
741 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Delete_A_Server_Contact_Due_To_Missing_Location){
743 std::string ServerAddress1 = "gibberish.invalid";
744 std::string ServerUser1 = "user";
745 std::string ServerPass1 = "pass";
747 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
748 FakeConnection.ResultServerPrefix = "/prefix/test/b";
749 FakeConnection.Connect(false);
751 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
752 FakeConnection.TestEntityTag = "";
753 FakeConnection.TestResultCode = 404;
754 FakeConnection.TestSessionCode = 22;
755 FakeConnection.TestResultMessage = "The resource could not be found.";
757 COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf");
759 EXPECT_EQ(COREQUEST_ERROR_SERVER, DeleteContactResult.RequestResult);
760 EXPECT_EQ("", DeleteContactResult.EntityTag);
761 EXPECT_EQ(404, DeleteContactResult.ResultCode);
762 EXPECT_EQ(22, DeleteContactResult.SessionCode);
763 EXPECT_EQ("The resource could not be found.", DeleteContactResult.ResultMessage);
767 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Delete_A_Server_Contact_Due_To_No_Connection){
769 std::string ServerAddress1 = "gibberish.invalid";
770 std::string ServerUser1 = "user";
771 std::string ServerPass1 = "pass";
773 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
774 FakeConnection.ResultServerPrefix = "/prefix/test/b";
775 FakeConnection.Connect(false);
777 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
778 FakeConnection.TestEntityTag = "";
779 FakeConnection.TestResultCode = 0;
780 FakeConnection.TestSessionCode = 0;
781 FakeConnection.TestResultMessage = "";
783 COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf");
785 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, DeleteContactResult.RequestResult);
786 EXPECT_EQ("", DeleteContactResult.EntityTag);
787 EXPECT_EQ(0, DeleteContactResult.ResultCode);
788 EXPECT_EQ(0, DeleteContactResult.SessionCode);
789 EXPECT_EQ("", DeleteContactResult.ResultMessage);
793 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_Server_Entity_Tag_Value){
795 std::string ServerAddress1 = "gibberish.invalid";
796 std::string ServerUser1 = "user";
797 std::string ServerPass1 = "pass";
799 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
800 FakeConnection.ResultServerPrefix = "/prefix/test/b";
801 FakeConnection.Connect(false);
803 FakeConnection.TestRequestResult = COREQUEST_OK;
804 FakeConnection.TestEntityTag = "a23124sfadfdvxc1646541bsdfaf";
805 FakeConnection.TestResultCode = 200;
806 FakeConnection.TestSessionCode = 0;
807 FakeConnection.TestResultMessage = "";
809 COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf");
811 EXPECT_EQ(COREQUEST_OK, EntityTagResult.RequestResult);
812 EXPECT_EQ("a23124sfadfdvxc1646541bsdfaf", EntityTagResult.EntityTag);
813 EXPECT_EQ(200, EntityTagResult.ResultCode);
814 EXPECT_EQ(0, EntityTagResult.SessionCode);
815 EXPECT_EQ("", EntityTagResult.ResultMessage);
819 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Entity_Tag_Value_Due_To_Invalid_Permissions){
821 std::string ServerAddress1 = "gibberish.invalid";
822 std::string ServerUser1 = "user";
823 std::string ServerPass1 = "pass";
825 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
826 FakeConnection.ResultServerPrefix = "/prefix/test/b";
827 FakeConnection.Connect(false);
829 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
830 FakeConnection.TestEntityTag = "";
831 FakeConnection.TestResultCode = 403;
832 FakeConnection.TestSessionCode = 22;
833 FakeConnection.TestResultMessage = "You do not have permission to access this resource.";
835 COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf");
837 EXPECT_EQ(COREQUEST_ERROR_SERVER, EntityTagResult.RequestResult);
838 EXPECT_EQ("", EntityTagResult.EntityTag);
839 EXPECT_EQ(403, EntityTagResult.ResultCode);
840 EXPECT_EQ(22, EntityTagResult.SessionCode);
841 EXPECT_EQ("You do not have permission to access this resource.", EntityTagResult.ResultMessage);
845 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Entity_Tag_Value_Due_To_Missing_Resource){
847 std::string ServerAddress1 = "gibberish.invalid";
848 std::string ServerUser1 = "user";
849 std::string ServerPass1 = "pass";
851 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
852 FakeConnection.ResultServerPrefix = "/prefix/test/b";
853 FakeConnection.Connect(false);
855 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
856 FakeConnection.TestEntityTag = "";
857 FakeConnection.TestResultCode = 404;
858 FakeConnection.TestSessionCode = 22;
859 FakeConnection.TestResultMessage = "The resource cannot be found.";
861 COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf");
863 EXPECT_EQ(COREQUEST_ERROR_SERVER, EntityTagResult.RequestResult);
864 EXPECT_EQ("", EntityTagResult.EntityTag);
865 EXPECT_EQ(404, EntityTagResult.ResultCode);
866 EXPECT_EQ(22, EntityTagResult.SessionCode);
867 EXPECT_EQ("The resource cannot be found.", EntityTagResult.ResultMessage);
871 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Entity_Tag_Value_Due_To_No_Connection){
873 std::string ServerAddress1 = "gibberish.invalid";
874 std::string ServerUser1 = "user";
875 std::string ServerPass1 = "pass";
877 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
878 FakeConnection.ResultServerPrefix = "/prefix/test/b";
879 FakeConnection.Connect(false);
881 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
882 FakeConnection.TestEntityTag = "";
883 FakeConnection.TestResultCode = 0;
884 FakeConnection.TestSessionCode = 0;
885 FakeConnection.TestResultMessage = "";
887 COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf");
889 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, EntityTagResult.RequestResult);
890 EXPECT_EQ("", EntityTagResult.EntityTag);
891 EXPECT_EQ(0, EntityTagResult.ResultCode);
892 EXPECT_EQ(0, EntityTagResult.SessionCode);
893 EXPECT_EQ("", EntityTagResult.ResultMessage);
897 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_Server_Contact_Data){
899 std::string ServerAddress1 = "gibberish.invalid";
900 std::string ServerUser1 = "user";
901 std::string ServerPass1 = "pass";
903 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
904 FakeConnection.ResultServerPrefix = "/prefix/test/b";
905 FakeConnection.Connect(false);
907 std::string ContactFile =
910 "UID:84q2ioj13jofiujqwrAAA\n"
915 FakeConnection.TestRequestResult = COREQUEST_OK;
916 FakeConnection.TestEntityTag = "";
917 FakeConnection.TestResultCode = 200;
918 FakeConnection.TestSessionCode = 0;
919 FakeConnection.TestResultMessage = ContactFile;
921 COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf");
923 EXPECT_EQ(COREQUEST_OK, ServerDataResult.RequestResult);
924 EXPECT_EQ("", ServerDataResult.EntityTag);
925 EXPECT_EQ(200, ServerDataResult.ResultCode);
926 EXPECT_EQ(0, ServerDataResult.SessionCode);
927 EXPECT_EQ(ContactFile, ServerDataResult.ResultMessage);
931 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Gets_Server_Contact_Data_Due_To_Invalid_Permissions){
933 std::string ServerAddress1 = "gibberish.invalid";
934 std::string ServerUser1 = "user";
935 std::string ServerPass1 = "pass";
937 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
938 FakeConnection.ResultServerPrefix = "/prefix/test/b";
939 FakeConnection.Connect(false);
941 FakeConnection.TestRequestResult = COREQUEST_OK;
942 FakeConnection.TestEntityTag = "";
943 FakeConnection.TestResultCode = 403;
944 FakeConnection.TestSessionCode = 22;
945 FakeConnection.TestResultMessage = "You do not have permission to access this resource.";
947 COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf");
949 EXPECT_EQ(COREQUEST_OK, ServerDataResult.RequestResult);
950 EXPECT_EQ("", ServerDataResult.EntityTag);
951 EXPECT_EQ(403, ServerDataResult.ResultCode);
952 EXPECT_EQ(22, ServerDataResult.SessionCode);
953 EXPECT_EQ("You do not have permission to access this resource.", ServerDataResult.ResultMessage);
957 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Gets_Server_Contact_Data_Due_To_Missing_Resource){
959 std::string ServerAddress1 = "gibberish.invalid";
960 std::string ServerUser1 = "user";
961 std::string ServerPass1 = "pass";
963 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
964 FakeConnection.ResultServerPrefix = "/prefix/test/b";
965 FakeConnection.Connect(false);
967 FakeConnection.TestRequestResult = COREQUEST_OK;
968 FakeConnection.TestEntityTag = "";
969 FakeConnection.TestResultCode = 404;
970 FakeConnection.TestSessionCode = 22;
971 FakeConnection.TestResultMessage = "The resource could not be found.";
973 COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf");
975 EXPECT_EQ(COREQUEST_OK, ServerDataResult.RequestResult);
976 EXPECT_EQ("", ServerDataResult.EntityTag);
977 EXPECT_EQ(404, ServerDataResult.ResultCode);
978 EXPECT_EQ(22, ServerDataResult.SessionCode);
979 EXPECT_EQ("The resource could not be found.", ServerDataResult.ResultMessage);
983 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Contact_Data_Due_To_No_Connection){
985 std::string ServerAddress1 = "gibberish.invalid";
986 std::string ServerUser1 = "user";
987 std::string ServerPass1 = "pass";
989 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
990 FakeConnection.ResultServerPrefix = "/prefix/test/b";
991 FakeConnection.Connect(false);
993 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
994 FakeConnection.TestEntityTag = "";
995 FakeConnection.TestResultCode = 0;
996 FakeConnection.TestSessionCode = 0;
997 FakeConnection.TestResultMessage = "";
999 COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf");
1001 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, ServerDataResult.RequestResult);
1002 EXPECT_EQ("", ServerDataResult.EntityTag);
1003 EXPECT_EQ(0, ServerDataResult.ResultCode);
1004 EXPECT_EQ(0, ServerDataResult.SessionCode);
1005 EXPECT_EQ("", ServerDataResult.ResultMessage);
1009 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_A_Full_Server_Contact_List){
1011 std::string ServerAddress1 = "gibberish.invalid";
1012 std::string ServerUser1 = "user";
1013 std::string ServerPass1 = "pass";
1015 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1016 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1017 FakeConnection.Connect(false);
1019 std::string ContactFile1 =
1022 "UID:84q2ioj13jofiujqwrAAA-1\n"
1024 "FN:The Meep Moop\n"
1027 std::string ContactFile2 =
1030 "UID:84q2ioj13jofiujqwrAAA-2\n"
1032 "FN:The Meep Moop\n"
1035 std::string ContactFile3 =
1038 "UID:84q2ioj13jofiujqwrAAA-3\n"
1040 "FN:The Meep Moop\n"
1043 COContactList ContactListSetup;
1044 COContactData ContactPerson;
1046 ContactPerson.Location = "/location1.vcf";
1047 ContactPerson.Data = ContactFile1;
1048 ContactListSetup.ListData.push_back(ContactPerson);
1050 ContactPerson.Location = "/location2.vcf";
1051 ContactPerson.Data = ContactFile2;
1052 ContactListSetup.ListData.push_back(ContactPerson);
1054 ContactPerson.Location = "/location3.vcf";
1055 ContactPerson.Data = ContactFile3;
1056 ContactListSetup.ListData.push_back(ContactPerson);
1057 ContactListSetup.SyncToken = "2312312-12312312";
1059 FakeConnection.TestContactList = ContactListSetup;
1060 FakeConnection.TestRequestResult = COREQUEST_OK;
1061 FakeConnection.TestEntityTag = "";
1062 FakeConnection.TestResultCode = 200;
1063 FakeConnection.TestSessionCode = 0;
1064 FakeConnection.TestResultMessage = "";
1066 COContactList ServerDataResult = FakeConnection.GetContactList("");
1068 EXPECT_EQ(COREQUEST_OK, ServerDataResult.ServerResponse.RequestResult);
1069 EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag);
1070 EXPECT_EQ(200, ServerDataResult.ServerResponse.ResultCode);
1071 EXPECT_EQ(0, ServerDataResult.ServerResponse.SessionCode);
1072 EXPECT_EQ("", ServerDataResult.ServerResponse.ResultMessage);
1074 EXPECT_EQ("2312312-12312312", ServerDataResult.SyncToken);
1076 EXPECT_EQ(3, ServerDataResult.ListData.size());
1078 EXPECT_EQ("/location1.vcf", ServerDataResult.ListData[0].Location);
1079 EXPECT_EQ(ContactFile1, ServerDataResult.ListData[0].Data);
1081 EXPECT_EQ("/location2.vcf", ServerDataResult.ListData[1].Location);
1082 EXPECT_EQ(ContactFile2, ServerDataResult.ListData[1].Data);
1084 EXPECT_EQ("/location3.vcf", ServerDataResult.ListData[2].Location);
1085 EXPECT_EQ(ContactFile3, ServerDataResult.ListData[2].Data);
1089 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_A_Partial_Server_Contact_List){
1091 std::string ServerAddress1 = "gibberish.invalid";
1092 std::string ServerUser1 = "user";
1093 std::string ServerPass1 = "pass";
1095 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1096 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1097 FakeConnection.Connect(false);
1099 std::string ContactFile3 =
1102 "UID:84q2ioj13jofiujqwrAAA-3\n"
1104 "FN:The Meep Moop\n"
1107 COContactList ContactListSetup;
1108 COContactData ContactPerson;
1110 ContactPerson.Location = "/location3.vcf";
1111 ContactPerson.Data = ContactFile3;
1112 ContactListSetup.ListData.push_back(ContactPerson);
1113 ContactListSetup.SyncToken = "5964589-43543534";
1115 FakeConnection.TestContactList = ContactListSetup;
1116 FakeConnection.TestRequestResult = COREQUEST_OK;
1117 FakeConnection.TestEntityTag = "";
1118 FakeConnection.TestResultCode = 200;
1119 FakeConnection.TestSessionCode = 0;
1120 FakeConnection.TestResultMessage = "";
1122 COContactList ServerDataResult = FakeConnection.GetContactList("2312312-12312312");
1124 EXPECT_EQ(COREQUEST_OK, ServerDataResult.ServerResponse.RequestResult);
1125 EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag);
1126 EXPECT_EQ(200, ServerDataResult.ServerResponse.ResultCode);
1127 EXPECT_EQ(0, ServerDataResult.ServerResponse.SessionCode);
1128 EXPECT_EQ("", ServerDataResult.ServerResponse.ResultMessage);
1130 EXPECT_EQ("5964589-43543534", ServerDataResult.SyncToken);
1132 EXPECT_EQ(1, ServerDataResult.ListData.size());
1134 EXPECT_EQ("/location3.vcf", ServerDataResult.ListData[0].Location);
1135 EXPECT_EQ(ContactFile3, ServerDataResult.ListData[0].Data);
1139 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_A_Contact_List_Due_To_Invalid_Permissions){
1141 std::string ServerAddress1 = "gibberish.invalid";
1142 std::string ServerUser1 = "user";
1143 std::string ServerPass1 = "pass";
1145 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1146 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1147 FakeConnection.Connect(false);
1149 COContactList ContactListSetup;
1150 ContactListSetup.SyncToken = "";
1152 FakeConnection.TestContactList = ContactListSetup;
1153 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
1154 FakeConnection.TestEntityTag = "";
1155 FakeConnection.TestResultCode = 403;
1156 FakeConnection.TestSessionCode = 22;
1157 FakeConnection.TestResultMessage = "You do not have permission to access this resource.";
1159 COContactList ServerDataResult = FakeConnection.GetContactList("");
1161 EXPECT_EQ(COREQUEST_ERROR_SERVER, ServerDataResult.ServerResponse.RequestResult);
1162 EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag);
1163 EXPECT_EQ(403, ServerDataResult.ServerResponse.ResultCode);
1164 EXPECT_EQ(22, ServerDataResult.ServerResponse.SessionCode);
1165 EXPECT_EQ("You do not have permission to access this resource.", ServerDataResult.ServerResponse.ResultMessage);
1167 EXPECT_EQ(0, ServerDataResult.ListData.size());
1171 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_A_Contact_List_Due_To_Missing_Resource){
1173 std::string ServerAddress1 = "gibberish.invalid";
1174 std::string ServerUser1 = "user";
1175 std::string ServerPass1 = "pass";
1177 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1178 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1179 FakeConnection.Connect(false);
1181 COContactList ContactListSetup;
1182 ContactListSetup.SyncToken = "";
1184 FakeConnection.TestContactList = ContactListSetup;
1185 FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER;
1186 FakeConnection.TestEntityTag = "";
1187 FakeConnection.TestResultCode = 404;
1188 FakeConnection.TestSessionCode = 22;
1189 FakeConnection.TestResultMessage = "The resource could not be found.";
1191 COContactList ServerDataResult = FakeConnection.GetContactList("");
1193 EXPECT_EQ(COREQUEST_ERROR_SERVER, ServerDataResult.ServerResponse.RequestResult);
1194 EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag);
1195 EXPECT_EQ(404, ServerDataResult.ServerResponse.ResultCode);
1196 EXPECT_EQ(22, ServerDataResult.ServerResponse.SessionCode);
1197 EXPECT_EQ("The resource could not be found.", ServerDataResult.ServerResponse.ResultMessage);
1199 EXPECT_EQ(0, ServerDataResult.ListData.size());
1203 TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_A_Contact_List_Due_To_No_Connection){
1205 std::string ServerAddress1 = "gibberish.invalid";
1206 std::string ServerUser1 = "user";
1207 std::string ServerPass1 = "pass";
1209 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1210 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1211 FakeConnection.Connect(false);
1213 COContactList ContactListSetup;
1214 ContactListSetup.SyncToken = "";
1216 FakeConnection.TestContactList = ContactListSetup;
1217 FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED;
1218 FakeConnection.TestEntityTag = "";
1219 FakeConnection.TestResultCode = 404;
1220 FakeConnection.TestSessionCode = 22;
1221 FakeConnection.TestResultMessage = "The resource could not be found.";
1223 COContactList ServerDataResult = FakeConnection.GetContactList("");
1225 EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, ServerDataResult.ServerResponse.RequestResult);
1226 EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag);
1227 EXPECT_EQ(404, ServerDataResult.ServerResponse.ResultCode);
1228 EXPECT_EQ(22, ServerDataResult.ServerResponse.SessionCode);
1229 EXPECT_EQ("The resource could not be found.", ServerDataResult.ServerResponse.ResultMessage);
1231 EXPECT_EQ(0, ServerDataResult.ListData.size());
1235 TEST(CardDAV, Use_Fake_To_Simulate_A_Wait_For_A_Completed_Task){
1237 std::string ServerAddress1 = "gibberish.invalid";
1238 std::string ServerUser1 = "user";
1239 std::string ServerPass1 = "pass";
1241 FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1");
1242 FakeConnection.ResultServerPrefix = "/prefix/test/b";
1243 FakeConnection.Connect(false);
1244 FakeConnection.ResultTaskCompleted = false;
1246 while (!FakeConnection.IsTaskCompleted()){
1248 std::this_thread::sleep_for(std::chrono::milliseconds(250));
1249 FakeConnection.ResultTaskCompleted = true;
1253 EXPECT_TRUE(FakeConnection.ResultTaskCompleted);