X-Git-Url: http://Server1/repobrowser/?p=xestiaab%2F.git;a=blobdiff_plain;f=source%2Ftests%2Fxestiaab_carddav.cpp;h=6dd7bab42c63cfe9950ff04a389163ec1e3d7945;hp=e71f4d56a94830bda77111e95dacc4361ac4140b;hb=3c4b20954ac161e85084a6f5960b7d38d2d48396;hpb=1a669f2f2ab771fac49d859851bd1cdba28ab3f8 diff --git a/source/tests/xestiaab_carddav.cpp b/source/tests/xestiaab_carddav.cpp index e71f4d5..6dd7bab 100644 --- a/source/tests/xestiaab_carddav.cpp +++ b/source/tests/xestiaab_carddav.cpp @@ -18,8 +18,8 @@ #include #include "classes/FakeConnectionObject.h" - -// TODO: Add tests for the CardDAV object. +#include +#include TEST(CardDAV, Use_Fake_To_Setup_And_Check_Connection_Settings_With_TestMode_True){ @@ -39,6 +39,10 @@ TEST(CardDAV, Use_Fake_To_Setup_And_Check_Connection_Settings_With_TestMode_True FakeConnectionObject FakeConnection2(ServerAddress2, 8800, ServerUser2, ServerPass2, true); FakeConnectionObject FakeConnection3(ServerAddress3, 8008, ServerUser3, ServerPass3, false); + FakeConnection1.ResultTestMode = true; + FakeConnection2.ResultTestMode = true; + FakeConnection3.ResultTestMode = true; + EXPECT_EQ("gibberish.invalid", FakeConnection1.GetServerAddress()); EXPECT_EQ(8080, FakeConnection1.GetServerPort()); EXPECT_EQ("user", FakeConnection1.GetServerUser()); @@ -86,6 +90,10 @@ TEST(CardDAV, Use_Fake_To_Setup_And_Check_Connection_Settings_With_TestMode_Fals FakeConnectionObject FakeConnection2(ServerAddress2, 8800, ServerUser2, ServerPass2, true, "/prefix2", "Account2"); FakeConnectionObject FakeConnection3(ServerAddress3, 8008, ServerUser3, ServerPass3, false, "/prefix3", "Account3"); + FakeConnection1.ResultTestMode = false; + FakeConnection2.ResultTestMode = false; + FakeConnection3.ResultTestMode = false; + EXPECT_EQ("gibberish.invalid", FakeConnection1.GetServerAddress()); EXPECT_EQ(8080, FakeConnection1.GetServerPort()); EXPECT_EQ("user", FakeConnection1.GetServerUser()); @@ -124,7 +132,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Success){ FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultStatus = COCONNECT_OK; - EXPECT_EQ(COCONNECT_OK, FakeConnection.Connect()); + EXPECT_EQ(COCONNECT_OK, FakeConnection.Connect(false)); } @@ -137,7 +145,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_InvalidAddress){ FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultStatus = COCONNECT_INVALID; - EXPECT_EQ(COCONNECT_INVALID, FakeConnection.Connect()); + EXPECT_EQ(COCONNECT_INVALID, FakeConnection.Connect(false)); } @@ -150,7 +158,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Timeout){ FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultStatus = COCONNECT_TIMEOUT; - EXPECT_EQ(COCONNECT_TIMEOUT, FakeConnection.Connect()); + EXPECT_EQ(COCONNECT_TIMEOUT, FakeConnection.Connect(false)); } @@ -163,7 +171,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_Returning_Authentication_Failure FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultStatus = COCONNECT_AUTHFAIL; - EXPECT_EQ(COCONNECT_AUTHFAIL, FakeConnection.Connect()); + EXPECT_EQ(COCONNECT_AUTHFAIL, FakeConnection.Connect(false)); } @@ -175,7 +183,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Is_Able_To_Login){ FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultAuthPassed = true; - FakeConnection.Connect(); + FakeConnection.Connect(false); EXPECT_EQ(true, FakeConnection.AbleToLogin()); @@ -189,7 +197,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Is_Unable_To_Login){ FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultAuthPassed = false; - FakeConnection.Connect(); + FakeConnection.Connect(false); EXPECT_EQ(false, FakeConnection.AbleToLogin()); @@ -203,7 +211,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Can_Do_Processing){ FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultCanProcess = true; - FakeConnection.Connect(); + FakeConnection.Connect(false); EXPECT_EQ(true, FakeConnection.CanDoProcessing()); @@ -217,7 +225,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Supports_SSL){ FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultSSLStatus = true; - FakeConnection.Connect(); + FakeConnection.Connect(false); EXPECT_EQ(true, FakeConnection.CanDoSSL()); @@ -231,7 +239,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Does_Not_Support_SSL){ FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultSSLStatus = false; - FakeConnection.Connect(); + FakeConnection.Connect(false); EXPECT_EQ(false, FakeConnection.CanDoSSL()); @@ -244,10 +252,10 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_Valid_SSL_Certificate_D std::string ServerPass1 = "pass"; FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); - FakeConnection.ResultSSLVerified = true; - FakeConnection.Connect(); + FakeConnection.ResultSSLVerified = COSSL_VERIFIED; + FakeConnection.Connect(false); - EXPECT_EQ(true, FakeConnection.SSLVerify()); + EXPECT_EQ(COSSL_VERIFIED, FakeConnection.SSLVerify()); } @@ -258,10 +266,39 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_Invalid_SSL_Certificate std::string ServerPass1 = "pass"; FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); - FakeConnection.ResultSSLVerified = false; - FakeConnection.Connect(); + FakeConnection.ResultSSLVerified = COSSL_UNABLETOVERIFY; + FakeConnection.ResultStatus = COCONNECT_SSLFAIL; - EXPECT_EQ(false, FakeConnection.SSLVerify()); + EXPECT_EQ(COCONNECT_SSLFAIL, FakeConnection.Connect(false)); + EXPECT_EQ(COSSL_UNABLETOVERIFY, FakeConnection.SSLVerify()); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_User_Verified_SSL_Cerficiate_Data){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); + FakeConnection.ResultSSLVerified = COSSL_VERIFIED_USER; + FakeConnection.Connect(false); + + EXPECT_EQ(COSSL_VERIFIED_USER, FakeConnection.SSLVerify()); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Doesnt_Use_SSL_Return_Not_Applicable_SSL_Result){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, false); + FakeConnection.ResultSSLVerified = COSSL_NOTAPPLICABLE; + FakeConnection.Connect(false); + + EXPECT_EQ(COSSL_NOTAPPLICABLE, FakeConnection.SSLVerify()); } @@ -273,7 +310,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_A_Valid_Response){ FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultValidResponse = true; - FakeConnection.Connect(); + FakeConnection.Connect(false); EXPECT_EQ(true, FakeConnection.HasValidResponse()); @@ -287,7 +324,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Has_A_Invalid_Response){ FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultValidResponse = false; - FakeConnection.Connect(); + FakeConnection.Connect(false); EXPECT_EQ(false, FakeConnection.HasValidResponse()); @@ -301,7 +338,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Uses_A_Self_Signed_SSL_Cert FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultSelfSigned = true; - FakeConnection.Connect(); + FakeConnection.Connect(false); EXPECT_EQ(true, FakeConnection.IsSelfSigned()); @@ -315,7 +352,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Doesnt_Use_A_Self_Signed_SS FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultSelfSigned = false; - FakeConnection.Connect(); + FakeConnection.Connect(false); EXPECT_EQ(false, FakeConnection.IsSelfSigned()); @@ -329,7 +366,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_The_Server_Prefix_Of_P FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultServerPrefix = "/prefix/test/a"; - FakeConnection.Connect(); + FakeConnection.Connect(false); EXPECT_EQ("/prefix/test/a", FakeConnection.GetDefaultPrefix()); @@ -343,7 +380,7 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_The_Server_Prefix_Of_P FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); FakeConnection.ResultServerPrefix = "/prefix/test/b"; - FakeConnection.Connect(); + FakeConnection.Connect(false); EXPECT_EQ("/prefix/test/b", FakeConnection.GetDefaultPrefix()); @@ -355,9 +392,9 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Adds_A_Contact_Successfully std::string ServerUser1 = "user"; std::string ServerPass1 = "pass"; - FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true); + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); FakeConnection.ResultServerPrefix = "/prefix/test/b"; - FakeConnection.Connect(); + FakeConnection.Connect(false); std::string ContactFile = "BEGIN:VCARD\n" @@ -369,14 +406,850 @@ TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Adds_A_Contact_Successfully FakeConnection.TestRequestResult = COREQUEST_OK; FakeConnection.TestEntityTag = "4324svafhuiaffsdhui"; - FakeConnection.TestResultCode = 200; + FakeConnection.TestResultCode = 201; + FakeConnection.TestSessionCode = 0; FakeConnection.TestResultMessage = ""; COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile); EXPECT_EQ(COREQUEST_OK, AddContactResult.RequestResult); EXPECT_EQ("4324svafhuiaffsdhui", AddContactResult.EntityTag); - EXPECT_EQ(200, AddContactResult.ResultCode); + EXPECT_EQ(201, AddContactResult.ResultCode); + EXPECT_EQ(0, AddContactResult.SessionCode); EXPECT_EQ("", AddContactResult.ResultMessage); +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Add_A_Contact_Due_To_Permissions){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + std::string ContactFile = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwr\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 403; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "You do not have permission to add this resource."; + + COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile); + + EXPECT_EQ(COREQUEST_ERROR_SERVER, AddContactResult.RequestResult); + EXPECT_EQ("", AddContactResult.EntityTag); + EXPECT_EQ(403, AddContactResult.ResultCode); + EXPECT_EQ(22, AddContactResult.SessionCode); + EXPECT_EQ("You do not have permission to add this resource.", AddContactResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Add_A_Contact_Due_To_Invalid_Path){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + std::string ContactFile = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwr\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 404; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "The location cannot be found."; + + COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile); + + EXPECT_EQ(COREQUEST_ERROR_SERVER, AddContactResult.RequestResult); + EXPECT_EQ("", AddContactResult.EntityTag); + EXPECT_EQ(404, AddContactResult.ResultCode); + EXPECT_EQ(22, AddContactResult.SessionCode); + EXPECT_EQ("The location cannot be found.", AddContactResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Add_A_Contact_Due_To_No_Connection){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + std::string ContactFile = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwr\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 0; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + COServerResponse AddContactResult = FakeConnection.AddContact("testfile.vcf", ContactFile); + + EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, AddContactResult.RequestResult); + EXPECT_EQ("", AddContactResult.EntityTag); + EXPECT_EQ(0, AddContactResult.ResultCode); + EXPECT_EQ(0, AddContactResult.SessionCode); + EXPECT_EQ("", AddContactResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Edits_A_Server_Contact){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + std::string ContactFile = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwrAAA\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + FakeConnection.TestRequestResult = COREQUEST_OK; + FakeConnection.TestEntityTag = "a23124sfadfdvxc1646541bsdfaf"; + FakeConnection.TestResultCode = 200; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile); + + EXPECT_EQ(COREQUEST_OK, EditContactResult.RequestResult); + EXPECT_EQ("a23124sfadfdvxc1646541bsdfaf", EditContactResult.EntityTag); + EXPECT_EQ(200, EditContactResult.ResultCode); + EXPECT_EQ(0, EditContactResult.SessionCode); + EXPECT_EQ("", EditContactResult.ResultMessage); + + FakeConnection.TestRequestResult = COREQUEST_OK; + FakeConnection.TestEntityTag = "asf84sa484saf614as64asvada4s6fas"; + FakeConnection.TestResultCode = 204; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile); + + EXPECT_EQ(COREQUEST_OK, EditContactResult.RequestResult); + EXPECT_EQ("asf84sa484saf614as64asvada4s6fas", EditContactResult.EntityTag); + EXPECT_EQ(204, EditContactResult.ResultCode); + EXPECT_EQ(0, EditContactResult.SessionCode); + EXPECT_EQ("", EditContactResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Edit_A_Server_Contact_Due_To_Invalid_Permissions){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + std::string ContactFile = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwrAAA\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 403; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "You do not have permission to add this resource."; + + COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile); + + EXPECT_EQ(COREQUEST_ERROR_SERVER, EditContactResult.RequestResult); + EXPECT_EQ("", EditContactResult.EntityTag); + EXPECT_EQ(403, EditContactResult.ResultCode); + EXPECT_EQ(22, EditContactResult.SessionCode); + EXPECT_EQ("You do not have permission to add this resource.", EditContactResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Edit_A_Server_Contact_Due_To_Invalid_Location){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + std::string ContactFile = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwrAAA\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 404; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "The resource could not be found."; + + COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile); + + EXPECT_EQ(COREQUEST_ERROR_SERVER, EditContactResult.RequestResult); + EXPECT_EQ("", EditContactResult.EntityTag); + EXPECT_EQ(404, EditContactResult.ResultCode); + EXPECT_EQ(22, EditContactResult.SessionCode); + EXPECT_EQ("The resource could not be found.", EditContactResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Edit_A_Server_Contact_Due_To_No_Connection){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + std::string ContactFile = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwrAAA\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 0; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + COServerResponse EditContactResult = FakeConnection.EditContact("testfile.vcf", ContactFile); + + EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, EditContactResult.RequestResult); + EXPECT_EQ("", EditContactResult.EntityTag); + EXPECT_EQ(0, EditContactResult.ResultCode); + EXPECT_EQ(0, EditContactResult.SessionCode); + EXPECT_EQ("", EditContactResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Deletes_A_Server_Contact){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + FakeConnection.TestRequestResult = COREQUEST_OK; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 200; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf"); + + EXPECT_EQ(COREQUEST_OK, DeleteContactResult.RequestResult); + EXPECT_EQ("", DeleteContactResult.EntityTag); + EXPECT_EQ(200, DeleteContactResult.ResultCode); + EXPECT_EQ(0, DeleteContactResult.SessionCode); + EXPECT_EQ("", DeleteContactResult.ResultMessage); + + FakeConnection.TestRequestResult = COREQUEST_OK; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 204; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf"); + + EXPECT_EQ(COREQUEST_OK, DeleteContactResult.RequestResult); + EXPECT_EQ("", DeleteContactResult.EntityTag); + EXPECT_EQ(204, DeleteContactResult.ResultCode); + EXPECT_EQ(0, DeleteContactResult.SessionCode); + EXPECT_EQ("", DeleteContactResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Delete_A_Server_Contact_Due_To_Invalid_Permissions){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 403; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "You do not have permission to delete this resource."; + + COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf"); + + EXPECT_EQ(COREQUEST_ERROR_SERVER, DeleteContactResult.RequestResult); + EXPECT_EQ("", DeleteContactResult.EntityTag); + EXPECT_EQ(403, DeleteContactResult.ResultCode); + EXPECT_EQ(22, DeleteContactResult.SessionCode); + EXPECT_EQ("You do not have permission to delete this resource.", DeleteContactResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Delete_A_Server_Contact_Due_To_Missing_Location){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 404; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "The resource could not be found."; + + COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf"); + + EXPECT_EQ(COREQUEST_ERROR_SERVER, DeleteContactResult.RequestResult); + EXPECT_EQ("", DeleteContactResult.EntityTag); + EXPECT_EQ(404, DeleteContactResult.ResultCode); + EXPECT_EQ(22, DeleteContactResult.SessionCode); + EXPECT_EQ("The resource could not be found.", DeleteContactResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Delete_A_Server_Contact_Due_To_No_Connection){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 0; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + COServerResponse DeleteContactResult = FakeConnection.DeleteContact("testfile.vcf"); + + EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, DeleteContactResult.RequestResult); + EXPECT_EQ("", DeleteContactResult.EntityTag); + EXPECT_EQ(0, DeleteContactResult.ResultCode); + EXPECT_EQ(0, DeleteContactResult.SessionCode); + EXPECT_EQ("", DeleteContactResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_Server_Entity_Tag_Value){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + FakeConnection.TestRequestResult = COREQUEST_OK; + FakeConnection.TestEntityTag = "a23124sfadfdvxc1646541bsdfaf"; + FakeConnection.TestResultCode = 200; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf"); + + EXPECT_EQ(COREQUEST_OK, EntityTagResult.RequestResult); + EXPECT_EQ("a23124sfadfdvxc1646541bsdfaf", EntityTagResult.EntityTag); + EXPECT_EQ(200, EntityTagResult.ResultCode); + EXPECT_EQ(0, EntityTagResult.SessionCode); + EXPECT_EQ("", EntityTagResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Entity_Tag_Value_Due_To_Invalid_Permissions){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 403; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "You do not have permission to access this resource."; + + COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf"); + + EXPECT_EQ(COREQUEST_ERROR_SERVER, EntityTagResult.RequestResult); + EXPECT_EQ("", EntityTagResult.EntityTag); + EXPECT_EQ(403, EntityTagResult.ResultCode); + EXPECT_EQ(22, EntityTagResult.SessionCode); + EXPECT_EQ("You do not have permission to access this resource.", EntityTagResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Entity_Tag_Value_Due_To_Missing_Resource){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 404; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "The resource cannot be found."; + + COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf"); + + EXPECT_EQ(COREQUEST_ERROR_SERVER, EntityTagResult.RequestResult); + EXPECT_EQ("", EntityTagResult.EntityTag); + EXPECT_EQ(404, EntityTagResult.ResultCode); + EXPECT_EQ(22, EntityTagResult.SessionCode); + EXPECT_EQ("The resource cannot be found.", EntityTagResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Entity_Tag_Value_Due_To_No_Connection){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 0; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + COServerResponse EntityTagResult = FakeConnection.GetServerEntityTagValue("testfile.vcf"); + + EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, EntityTagResult.RequestResult); + EXPECT_EQ("", EntityTagResult.EntityTag); + EXPECT_EQ(0, EntityTagResult.ResultCode); + EXPECT_EQ(0, EntityTagResult.SessionCode); + EXPECT_EQ("", EntityTagResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_Server_Contact_Data){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + std::string ContactFile = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwrAAA\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + FakeConnection.TestRequestResult = COREQUEST_OK; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 200; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ContactFile; + + COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf"); + + EXPECT_EQ(COREQUEST_OK, ServerDataResult.RequestResult); + EXPECT_EQ("", ServerDataResult.EntityTag); + EXPECT_EQ(200, ServerDataResult.ResultCode); + EXPECT_EQ(0, ServerDataResult.SessionCode); + EXPECT_EQ(ContactFile, ServerDataResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Gets_Server_Contact_Data_Due_To_Invalid_Permissions){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + FakeConnection.TestRequestResult = COREQUEST_OK; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 403; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "You do not have permission to access this resource."; + + COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf"); + + EXPECT_EQ(COREQUEST_OK, ServerDataResult.RequestResult); + EXPECT_EQ("", ServerDataResult.EntityTag); + EXPECT_EQ(403, ServerDataResult.ResultCode); + EXPECT_EQ(22, ServerDataResult.SessionCode); + EXPECT_EQ("You do not have permission to access this resource.", ServerDataResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Gets_Server_Contact_Data_Due_To_Missing_Resource){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + FakeConnection.TestRequestResult = COREQUEST_OK; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 404; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "The resource could not be found."; + + COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf"); + + EXPECT_EQ(COREQUEST_OK, ServerDataResult.RequestResult); + EXPECT_EQ("", ServerDataResult.EntityTag); + EXPECT_EQ(404, ServerDataResult.ResultCode); + EXPECT_EQ(22, ServerDataResult.SessionCode); + EXPECT_EQ("The resource could not be found.", ServerDataResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_Server_Contact_Data_Due_To_No_Connection){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 0; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + COServerResponse ServerDataResult = FakeConnection.GetContact("/location/testfile.vcf"); + + EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, ServerDataResult.RequestResult); + EXPECT_EQ("", ServerDataResult.EntityTag); + EXPECT_EQ(0, ServerDataResult.ResultCode); + EXPECT_EQ(0, ServerDataResult.SessionCode); + EXPECT_EQ("", ServerDataResult.ResultMessage); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_A_Full_Server_Contact_List){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + std::string ContactFile1 = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwrAAA-1\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + std::string ContactFile2 = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwrAAA-2\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + std::string ContactFile3 = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwrAAA-3\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + COContactList ContactListSetup; + COContactData ContactPerson; + + ContactPerson.Location = "/location1.vcf"; + ContactPerson.Data = ContactFile1; + ContactListSetup.ListData.push_back(ContactPerson); + + ContactPerson.Location = "/location2.vcf"; + ContactPerson.Data = ContactFile2; + ContactListSetup.ListData.push_back(ContactPerson); + + ContactPerson.Location = "/location3.vcf"; + ContactPerson.Data = ContactFile3; + ContactListSetup.ListData.push_back(ContactPerson); + ContactListSetup.SyncToken = "2312312-12312312"; + + FakeConnection.TestContactList = ContactListSetup; + FakeConnection.TestRequestResult = COREQUEST_OK; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 200; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + COContactList ServerDataResult = FakeConnection.GetContactList(""); + + EXPECT_EQ(COREQUEST_OK, ServerDataResult.ServerResponse.RequestResult); + EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag); + EXPECT_EQ(200, ServerDataResult.ServerResponse.ResultCode); + EXPECT_EQ(0, ServerDataResult.ServerResponse.SessionCode); + EXPECT_EQ("", ServerDataResult.ServerResponse.ResultMessage); + + EXPECT_EQ("2312312-12312312", ServerDataResult.SyncToken); + + EXPECT_EQ(3, ServerDataResult.ListData.size()); + + EXPECT_EQ("/location1.vcf", ServerDataResult.ListData[0].Location); + EXPECT_EQ(ContactFile1, ServerDataResult.ListData[0].Data); + + EXPECT_EQ("/location2.vcf", ServerDataResult.ListData[1].Location); + EXPECT_EQ(ContactFile2, ServerDataResult.ListData[1].Data); + + EXPECT_EQ("/location3.vcf", ServerDataResult.ListData[2].Location); + EXPECT_EQ(ContactFile3, ServerDataResult.ListData[2].Data); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Gets_A_Partial_Server_Contact_List){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + std::string ContactFile3 = + "BEGIN:VCARD\n" + "VERSION:4.0\n" + "UID:84q2ioj13jofiujqwrAAA-3\n" + "N:;;Meep;Moop;;\n" + "FN:The Meep Moop\n" + "END:VCARD"; + + COContactList ContactListSetup; + COContactData ContactPerson; + + ContactPerson.Location = "/location3.vcf"; + ContactPerson.Data = ContactFile3; + ContactListSetup.ListData.push_back(ContactPerson); + ContactListSetup.SyncToken = "5964589-43543534"; + + FakeConnection.TestContactList = ContactListSetup; + FakeConnection.TestRequestResult = COREQUEST_OK; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 200; + FakeConnection.TestSessionCode = 0; + FakeConnection.TestResultMessage = ""; + + COContactList ServerDataResult = FakeConnection.GetContactList("2312312-12312312"); + + EXPECT_EQ(COREQUEST_OK, ServerDataResult.ServerResponse.RequestResult); + EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag); + EXPECT_EQ(200, ServerDataResult.ServerResponse.ResultCode); + EXPECT_EQ(0, ServerDataResult.ServerResponse.SessionCode); + EXPECT_EQ("", ServerDataResult.ServerResponse.ResultMessage); + + EXPECT_EQ("5964589-43543534", ServerDataResult.SyncToken); + + EXPECT_EQ(1, ServerDataResult.ListData.size()); + + EXPECT_EQ("/location3.vcf", ServerDataResult.ListData[0].Location); + EXPECT_EQ(ContactFile3, ServerDataResult.ListData[0].Data); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_A_Contact_List_Due_To_Invalid_Permissions){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + COContactList ContactListSetup; + ContactListSetup.SyncToken = ""; + + FakeConnection.TestContactList = ContactListSetup; + FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 403; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "You do not have permission to access this resource."; + + COContactList ServerDataResult = FakeConnection.GetContactList(""); + + EXPECT_EQ(COREQUEST_ERROR_SERVER, ServerDataResult.ServerResponse.RequestResult); + EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag); + EXPECT_EQ(403, ServerDataResult.ServerResponse.ResultCode); + EXPECT_EQ(22, ServerDataResult.ServerResponse.SessionCode); + EXPECT_EQ("You do not have permission to access this resource.", ServerDataResult.ServerResponse.ResultMessage); + + EXPECT_EQ(0, ServerDataResult.ListData.size()); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_A_Contact_List_Due_To_Missing_Resource){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + COContactList ContactListSetup; + ContactListSetup.SyncToken = ""; + + FakeConnection.TestContactList = ContactListSetup; + FakeConnection.TestRequestResult = COREQUEST_ERROR_SERVER; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 404; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "The resource could not be found."; + + COContactList ServerDataResult = FakeConnection.GetContactList(""); + + EXPECT_EQ(COREQUEST_ERROR_SERVER, ServerDataResult.ServerResponse.RequestResult); + EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag); + EXPECT_EQ(404, ServerDataResult.ServerResponse.ResultCode); + EXPECT_EQ(22, ServerDataResult.ServerResponse.SessionCode); + EXPECT_EQ("The resource could not be found.", ServerDataResult.ServerResponse.ResultMessage); + + EXPECT_EQ(0, ServerDataResult.ListData.size()); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Connection_That_Fails_To_Get_A_Contact_List_Due_To_No_Connection){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + + COContactList ContactListSetup; + ContactListSetup.SyncToken = ""; + + FakeConnection.TestContactList = ContactListSetup; + FakeConnection.TestRequestResult = COREQUEST_ERROR_NOTCONNECTED; + FakeConnection.TestEntityTag = ""; + FakeConnection.TestResultCode = 404; + FakeConnection.TestSessionCode = 22; + FakeConnection.TestResultMessage = "The resource could not be found."; + + COContactList ServerDataResult = FakeConnection.GetContactList(""); + + EXPECT_EQ(COREQUEST_ERROR_NOTCONNECTED, ServerDataResult.ServerResponse.RequestResult); + EXPECT_EQ("", ServerDataResult.ServerResponse.EntityTag); + EXPECT_EQ(404, ServerDataResult.ServerResponse.ResultCode); + EXPECT_EQ(22, ServerDataResult.ServerResponse.SessionCode); + EXPECT_EQ("The resource could not be found.", ServerDataResult.ServerResponse.ResultMessage); + + EXPECT_EQ(0, ServerDataResult.ListData.size()); + +} + +TEST(CardDAV, Use_Fake_To_Simulate_A_Wait_For_A_Completed_Task){ + + std::string ServerAddress1 = "gibberish.invalid"; + std::string ServerUser1 = "user"; + std::string ServerPass1 = "pass"; + + FakeConnectionObject FakeConnection(ServerAddress1, 8080, ServerUser1, ServerPass1, true, "/prefix", "Account1"); + FakeConnection.ResultServerPrefix = "/prefix/test/b"; + FakeConnection.Connect(false); + FakeConnection.ResultTaskCompleted = false; + + while (!FakeConnection.IsTaskCompleted()){ + + std::this_thread::sleep_for(std::chrono::milliseconds(250)); + FakeConnection.ResultTaskCompleted = true; + + } + + EXPECT_TRUE(FakeConnection.ResultTaskCompleted); + } \ No newline at end of file