예제 #1
0
        public void Connection_Connect_Behaviour_DisconnectUnconnectedUser()
        {
            User dummy = new User() { Name = "Crash Test Dummy", Password = "******" };
            PieServiceClient pieService = new PieServiceClient();

            pieService.Disconnect(dummy);
            //It's okay to disconnect a user even if he isn't connected
        }
예제 #2
0
        public void Connection_Connect_Behaviour_ConnectTwice()
        {
            User dummy = new User() { Name = "Crash Test Dummy", Password = "******" };
            PieServiceClient pieService = new PieServiceClient();

            pieService.Connect(dummy);
            pieService.Connect(dummy);
            //It's okay for a user to connect twice
        }
예제 #3
0
 public void Connection_Connect_Parameter_Null()
 {
     PieServiceClient pieService = new PieServiceClient();
     try
     {
         pieService.Connect(null);
         Assert.Fail("Was able to connect a null-user");
     }
     catch (Exception e)
     {
         if (!e.Message.Contains("Value cannot be null"))
             Assert.Fail(e.Message);
     }
 }
예제 #4
0
        public void Connection_Connect_Parameter_UnknownUserName()
        {
            User dummy = new User() { Name = "Unknown Crash Test Dummy", Password = "******" };
            PieServiceClient pieService = new PieServiceClient();

            try
            {
                pieService.Connect(dummy);
                Assert.Fail("Was able to connect a user that does not exist");
            }
            catch (Exception e)
            {
                if (!e.Message.Contains("Unknown user or password"))
                    Assert.Fail(e.Message);
            }
        }
예제 #5
0
        public void Connection_PushVersion_Parameter_UserPasswordNull()
        {
            User dummy = new User() { Name = "Crash Test Dummy", Password = "******" };
            int versionNumber = 1;

            PieServiceClient pieService = new PieServiceClient();

            pieService.Connect(dummy);

            string[] changes = new string[]{AbstractChange.ItemCreationMark + "SomeFileName.txt",
                                            AbstractChange.BlockSeparatorMark,
                                            AbstractChange.LineInsertionMark + "0" + AbstractChange.LineInsertionMark + "This is inserted",
                                            AbstractChange.BlockSeparatorMark};

            dummy.Password = null;

            try
            {
                pieService.PushVersion("", versionNumber, changes, dummy);
                Assert.Fail("Possible to submit changes when user's password is null");
            }
            catch (Exception e)
            {
                if (!e.Message.Contains("User's password is invalid"))
                    Assert.Fail(e.Message);
            }
        }
예제 #6
0
        public void Connection_PushVersion_Parameter_ChangesNull()
        {
            User dummy = new User() { Name = "Crash Test Dummy", Password = "******" };
            int versionNumber = 1;

            PieServiceClient pieService = new PieServiceClient();

            pieService.Connect(dummy);

            string[] changes = null;

            try
            {
                pieService.PushVersion("", versionNumber, changes, dummy);
                Assert.Fail("Possible to submit changes when null");
            }
            catch (Exception e)
            {
                if (!e.Message.Contains("Value cannot be null"))
                    Assert.Fail(e.Message);
            }
        }
예제 #7
0
        public void Connection_Disconnect_Parameter_UserWithEmptyPassword()
        {
            User dummy = new User() { Name = "Crash Test Dummy", Password = "" };
            PieServiceClient pieService = new PieServiceClient();

            try
            {
                pieService.Disconnect(dummy);
            }
            catch (Exception)
            {
                //This is good
            }
        }
예제 #8
0
        public void Connection_Disconnect_Parameter_UserWithNullPassword()
        {
            User user = new User() { Name = "Crash Test Dummy", Password = "******" };
            PieServiceClient pieService = new PieServiceClient();

            pieService.Connect(user);
            user.Password = null;
            try
            {
                pieService.Disconnect(user);
                Assert.Fail("Was able to disconnect a user with a null-password");
            }
            catch (Exception e)
            {
                if (!e.Message.Contains("Invalid string for username or password"))
                    Assert.Fail(e.Message);
            }
        }
예제 #9
0
        public void Connection_Disconnect_Parameter_User()
        {
            User user = new User() { Name = "Crash Test Dummy", Password = "******" };
            PieServiceClient pieService = new PieServiceClient();

            pieService.Connect(user);
            pieService.Disconnect(user);
        }
예제 #10
0
        public void Connection_Disconnect_Parameter_UserWithEmptyName()
        {
            User dummy = new User() { Name = "", Password = "******" };
            PieServiceClient pieService = new PieServiceClient();

            try
            {
                pieService.Disconnect(dummy);
                Assert.Fail("Was able to disconnect a user with an empty username");
            }
            catch (Exception e)
            {
                if (!e.Message.Contains("Invalid string for username or password - user is not disconnected"))
                    Assert.Fail(e.Message);
            }
        }
예제 #11
0
        public void Connection_Disconnect_Behaviour_DisconnectTwice()
        {
            User dummy = new User() { Name = "Crash Test Dummy", Password = "******" };
            PieServiceClient pieService = new PieServiceClient();

            pieService.Connect(dummy);

            pieService.Disconnect(dummy);
            pieService.Disconnect(dummy);
        }
예제 #12
0
        public void Connection_Connect_Parameter_WrongPassword()
        {
            User dummy = new User() { Name = "Crash Test Dummy", Password = "******" };
            PieServiceClient pieService = new PieServiceClient();

            try
            {
                pieService.Connect(dummy);
                Assert.Fail("Was able to connect a user with a wrong password");
            }
            catch (Exception e)
            {
                if (!e.Message.Contains("Unknown user or password"))
                    Assert.Fail(e.Message);
            }
        }
예제 #13
0
 public void Connection_Connect_Parameter_UserWithNullName()
 {
     User dummy = new User() { Name = null, Password = "******" };
     PieServiceClient pieService = new PieServiceClient();
     try
     {
         pieService.Connect(dummy);
         Assert.Fail("Was able to connect a user was null-name");
     }
     catch (Exception e)
     {
         if (!e.Message.Contains("Invalid string for username or password"))
             Assert.Fail(e.Message);
     }
 }
예제 #14
0
        public void Connection_Connect_Parameter_UserWithEmptyPassword()
        {
            User dummy = new User() { Name = "Crash Test Dummy", Password = "" };
            PieServiceClient pieService = new PieServiceClient();

            try
            {
                pieService.Connect(dummy);
                Assert.Fail("Was able to connect a user with an empty password");
            }
            catch (Exception e)
            {
                if (!e.Message.Contains("Invalid string for username or password"))
                    Assert.Fail(e.Message);
            }
        }
        /// <summary>
        /// Pushes the current changes to the server and handles any resulting conflicts.
        /// </summary>
        /// <returns>A number of conflicts received from the server that the caller should handle.</returns>
        private IList<Conflict> PushToServer()
        {
            //try
            //{
                using (
                    var pieService = new PieServiceClient())
                {
                    IList<Conflict> conflicts = new List<Conflict>();
                    var dummyUser = new User()
                        {
                            Name = "Morten",
                            Password = "******"
                        };

                    // First fetch the version number of the server and compare to the current
                    var versionNumber = UpdateClient(pieService, ref conflicts);

                    // Push the current version to the server
                    var versionPath = FileSystem.VERSION_DIR + GetCurrentVersion() + VersionExtension;
                    var version = ReadAllLines(versionPath);
                    var result = pieService.PushVersion(Root, versionNumber, version, dummyUser);

                    // If there are no conflicts, the current changes have been pushed and we can store the version locally and erase them from the current version
                    if (result.Any() == false)
                    {
                        FileSystemAdaptee.WriteAllLines(FileSystem.VERSION_DIR + versionNumber + VersionExtension, version);
                        FileSystemAdaptee.Delete(versionPath);
                        return conflicts;
                    }

                    // Instantiate all the conflicts
                    foreach (string[] t in result)
                    {
                        String[] oldFileContent = new string[t.Length - 1];
                        for (int j = 1; j < t.Length; j++)
                        {
                            oldFileContent[j - 1] = t[j];
                        }
                        conflicts.Add(new Conflict(t[0], oldFileContent, ReadAllLines(t[0])));
                    }

                    // Return the conflicts
                    return conflicts;
                }
            //}
            //catch (Exception)
            //{
                // If we hit an exception when pushing to server we simply ignore it
                // and avoid incrementing the version - the changes will be pushed once
                // the server is back on track
                return new List<Conflict>();
            //}
        }