Пример #1
0
        private async void Window_Loaded(object sender, RoutedEventArgs e)
        {
            async Task <IClient> CreateClient()
            {
                var exists       = File.Exists(SettingsPath);
                var settingsFile = exists ? Some(SettingsPath) : None <string>();
                var storage      = new SqliteStorage($"{nameof(Chatter)}.db");
                var dispatcher   = new SynchronizationDispatcher(TaskScheduler.FromCurrentSynchronizationContext(), Application.Current.Dispatcher);
                var result       = await TryAsync(() => LinkFactory.CreateClientAsync(dispatcher, storage, settingsFile)).NoticeOnErrorAsync();

                var client = result.UnwrapOrDefault();

                if (exists == false && client != null)
                {
                    client.Profile.Name = $"{Environment.UserName}@{Environment.MachineName}";
                }
                if (result.IsError())
                {
                    Application.Current.Shutdown();
                }
                return(client);
            }

            this.IsEnabled = false;
            using var _0   = Disposable.Create(() => this.IsEnabled = true);

            this.client = App.CurrentClient ?? await CreateClient();

            this.DataContext = this.client?.Profile;
        }
            public void InitializeTest()
            {
                SqliteStorage Storage = new SqliteStorage("Data Source=:memory:", true);
                bool          Status  = Storage.Initialize();

                Assert.IsTrue(Status);
            }
Пример #3
0
        public void UpdateOnePreferenceTest()
        {
            SqliteStorage storage = _storage;

            Assert.True(_storage.CreatePreferenceTable());

            List <UserPreference> preferences = new List <UserPreference>();

            // When is the primary key set, at inserion or object creation?
            UserPreference u1 = new UserPreference("movies", 0.0, 0.0);
            UserPreference u2 = new UserPreference("games", 0.0, 100.0);

            preferences.Add(u1);
            preferences.Add(u2);

            bool result = storage.InsertUserPreferences(preferences);

            Assert.True(result);

            u1._category = "gardening";
            u1._minPrice = 95.0;
            u1._maxPrice = 165.75;
            result       = storage.UpdateUserPreference(u1);
            Assert.True(result);

            UserPreference updatedPref = storage.GetUserPreference("gardening");

            Assert.NotNull(updatedPref);

            Assert.Equal(95.0, updatedPref._minPrice);
            Assert.Equal(165.75, updatedPref._maxPrice);
        }
Пример #4
0
        private async void Window_Opened(object sender, EventArgs e)
        {
            this.AddHandler(Button.ClickEvent, Button_Click);

            async Task <IClient> CreateClient()
            {
                var exists       = File.Exists(SettingsPath);
                var settingsFile = exists ? Some(SettingsPath) : None <string>();
                var storage      = new SqliteStorage($"{nameof(Chatter)}.db");
                var dispatcher   = new SynchronizationDispatcher(Dispatcher.UIThread);
                var result       = await TryAsync(() => LinkFactory.CreateClientAsync(dispatcher, storage, settingsFile)).NoticeOnErrorAsync();

                var client = result.UnwrapOrDefault();

                if (exists == false && client != null)
                {
                    client.Profile.Name = $"{Environment.UserName}@{Environment.MachineName}";
                }
                if (result.IsError())
                {
                    this.Close();
                }
                return(client);
            }

            this.IsEnabled = false;
            using var _0   = Disposable.Create(() => this.IsEnabled = true);

            client = App.CurrentClient ?? await CreateClient();

            DataContext = client?.Profile;
        }
Пример #5
0
        private void Button_Clicked(object sender, EventArgs e)
        {
            var password    = ViewModel.MasterPassword;
            var serviceName = ServicePersistor.GetServiceName(ViewModel.ServiceName);

            if (!String.IsNullOrEmpty(password) && !String.IsNullOrEmpty(serviceName))
            {
                // Use one set of database vs a new database for a different master password
                var encryptedMaster = ServicePersistor.GetEncryptedFileName("DFtIETN"); // ServicePersistor.GetEncryptedFileName(password);
                var requirement     = PasswordRequirements.None;

                SqliteStorage.InitializeStorage(IoCProviders.GetProvider <IKnowStorage>().GetStoragePath(), encryptedMaster);

                var serviceEntity = ServicePersistor.GetPasswordSettings(serviceName);

                if (serviceEntity != null)
                {
                    requirement = (PasswordRequirements)serviceEntity.Requirements;

                    ViewModel.IncludeNumbers   = (requirement & PasswordRequirements.NumberRequired) > 0;
                    ViewModel.IncludeSymbols   = (requirement & PasswordRequirements.SymbolRequired) > 0;
                    ViewModel.IncludeUppercase = (requirement & PasswordRequirements.UpperCaseRequired) > 0;
                }
                else
                {
                    requirement |= ViewModel.IncludeNumbers ? PasswordRequirements.NumberRequired : PasswordRequirements.NoNumber;
                    requirement |= ViewModel.IncludeSymbols ? PasswordRequirements.SymbolRequired : PasswordRequirements.NoSymbol;
                    requirement |= ViewModel.IncludeUppercase ? PasswordRequirements.UpperCaseRequired : PasswordRequirements.None;
                }

                GeneratePassword(password, serviceName, requirement);
            }
        }
Пример #6
0
        /// <summary>
        /// Retrieve ServiceEntity based on service name
        /// </summary>
        public static ServicesEntity GetPasswordSettings(string service)
        {
            var processedServiceName = GetServiceName(service);
            var entity = SqliteStorage.GetEntity <ServicesEntity>().FirstOrDefault(x => x.Service.Equals(processedServiceName));

            return(entity);
        }
Пример #7
0
        public void AddingOnePreferenceTest()
        {
            SqliteStorage storage = _storage;

            Assert.True(_storage.CreatePreferenceTable());

            bool result = storage.InsertUserPreference(new UserPreference("headphones"));

            Assert.True(result);
        }
Пример #8
0
            public void ActivityFromStringTest()
            {
                SqliteStorage Storage = new SqliteStorage("Data Source=:memory:");

                Storage.Initialize();

                Activity act1 = new Activity("Test activity 1", Storage);

                Assert.AreEqual(0, act1.ActivityId);
                Assert.AreEqual("Test activity 1", act1.Name);
                Assert.AreEqual("", act1.Description);
                Assert.AreEqual("", act1.Tags);

                Activity act2 = new Activity("Test activity 2@Project name", Storage);

                Assert.AreEqual("Test activity 2", act2.Name);
                Assert.AreEqual("", act2.Description);
                Assert.AreEqual("", act2.Tags);

                Activity act3 = new Activity("Test activity 3@Project name;tag1,tag2", Storage);

                Assert.AreEqual("Test activity 3", act3.Name);
                Assert.AreEqual("", act3.Description);
                Assert.AreEqual("tag1,tag2", act3.Tags);

                Activity act4 = new Activity("Test activity 4@Project name;tag1,tag2,tag3#Some description", Storage);

                Assert.AreEqual("Test activity 4", act4.Name);
                Assert.AreEqual("Some description", act4.Description);
                Assert.AreEqual("tag1,tag2,tag3", act4.Tags);

                Activity act5 = new Activity("Test activity 5;tag1,tag2", Storage);

                Assert.AreEqual("Test activity 5", act5.Name);
                Assert.AreEqual("", act5.Description);
                Assert.AreEqual("tag1,tag2", act5.Tags);

                Activity act6 = new Activity("Test activity 6;tag3#Some description", Storage);

                Assert.AreEqual("Test activity 6", act6.Name);
                Assert.AreEqual("Some description", act6.Description);
                Assert.AreEqual("tag3", act6.Tags);

                Activity act7 = new Activity("Test activity 7@Project name#Some description", Storage);

                Assert.AreEqual("Test activity 7", act7.Name);
                Assert.AreEqual("Some description", act7.Description);
                Assert.AreEqual("", act7.Tags);

                Activity act8 = new Activity("Test activity 8#Some description", Storage);

                Assert.AreEqual("Test activity 8", act8.Name);
                Assert.AreEqual("Some description", act8.Description);
                Assert.AreEqual("", act8.Tags);
            }
        public void SQLiteGetItemTest()
        {
            SqliteStorage storage = new SqliteStorage();
            StorageModel model = new StorageModel() { Name = "name1", Value = "value1" };
            string key = "Person/1";
            storage.AddItem(key, model);

            StorageModel result = storage.GetItem<StorageModel>(key);

            Assert.AreEqual(model, result);
        }
        public void SQLiteDelteItemTest()
        {
            SqliteStorage storage = new SqliteStorage();
            StorageModel model = new StorageModel() { Name = "name1", Value = "value1" };
            string key = "Person/1";

            storage.AddItem(key, model);
            Assert.IsTrue(storage.ContainItem(key));

            storage.RemoveItem(key);
            Assert.IsFalse(storage.ContainItem(key));
        }
Пример #11
0
        public void RemovingOnePreferenceTest()
        {
            SqliteStorage storage = _storage;

            Assert.True(_storage.CreatePreferenceTable());

            UserPreference preference = new UserPreference("headphones");
            bool           result     = storage.InsertUserPreference(preference);

            Assert.True(result);

            result = storage.DeleteUserPreference(preference);
            Assert.True(result);
        }
Пример #12
0
        public void SQLiteGetItemTest()
        {
            SqliteStorage storage = new SqliteStorage();
            StorageModel  model   = new StorageModel()
            {
                Name = "name1", Value = "value1"
            };
            string key = "Person/1";

            storage.AddItem(key, model);

            StorageModel result = storage.GetItem <StorageModel>(key);

            Assert.AreEqual(model, result);
        }
Пример #13
0
        public void SQLiteDelteItemTest()
        {
            SqliteStorage storage = new SqliteStorage();
            StorageModel  model   = new StorageModel()
            {
                Name = "name1", Value = "value1"
            };
            string key = "Person/1";

            storage.AddItem(key, model);
            Assert.IsTrue(storage.ContainItem(key));

            storage.RemoveItem(key);
            Assert.IsFalse(storage.ContainItem(key));
        }
        public void SQLiteUpdateItemTest()
        {
            SqliteStorage storage = new SqliteStorage();
            StorageModel model = new StorageModel() { Name = "name1", Value = "value1" };
            string key = "Person/1";

            storage.AddItem(key, model);

            model.Value = "value2";
            storage.UpdateItem(key, model);

            StorageModel reust = storage.GetItem<StorageModel>(key);

            Assert.AreEqual(reust.Value, "value2");
        }
Пример #15
0
        public void AddingNullPreferenceTest()
        {
            SqliteStorage storage = _storage;

            Assert.True(_storage.CreateTables());

            Assert.Throws <ArgumentNullException>(() =>
            {
                storage.InsertUserPreference(null);
            });

            Assert.Throws <ArgumentNullException>(() =>
            {
                storage.InsertUserPreferences(null);
            });
        }
Пример #16
0
        public void AddingPreferencesTest()
        {
            SqliteStorage storage = _storage;

            Assert.True(_storage.CreateTables());

            List <UserPreference> preferences = new List <UserPreference>();

            preferences.Add(new UserPreference("electronics"));
            preferences.Add(new UserPreference("books", 10.0, 1900.0));
            preferences.Add(new UserPreference("gardening", 50.0, 100.0));

            bool result = storage.InsertUserPreferences(preferences);

            Assert.True(result);
        }
Пример #17
0
        public void UpdateNullPreferencesTest()
        {
            SqliteStorage storage = _storage;

            Assert.True(_storage.CreatePreferenceTable());

            Assert.Throws <ArgumentNullException>(() =>
            {
                _storage.UpdateUserPreference(null);
            });

            Assert.Throws <ArgumentNullException>(() =>
            {
                _storage.UpdateUserPreferences(null);
            });
        }
        public void SQLiteGetItemsTest()
        {
            SqliteStorage storage = new SqliteStorage();
            StorageModel model = new StorageModel() { Name = "name1", Value = "value1" };
            string key1 = "Person1/1";
            string key2 = "Person1/2";
            string key3 = "Person1/3";

            storage.AddItem(key1, model);
            storage.AddItem(key2, model);
            storage.AddItem(key3, model);

            List<StorageModel> models = storage.GetItems<StorageModel>("Person1/0");

            Assert.AreEqual(models.Count, 3);

            storage.FlushAll();
        }
Пример #19
0
        public void SQLiteUpdateItemTest()
        {
            SqliteStorage storage = new SqliteStorage();
            StorageModel  model   = new StorageModel()
            {
                Name = "name1", Value = "value1"
            };
            string key = "Person/1";

            storage.AddItem(key, model);

            model.Value = "value2";
            storage.UpdateItem(key, model);

            StorageModel reust = storage.GetItem <StorageModel>(key);

            Assert.AreEqual(reust.Value, "value2");
        }
            public void InsertTest()
            {
                SqliteStorage Storage = new SqliteStorage("Data Source=:memory:", true);

                Storage.Initialize();

                List <Project> lp = Storage.SelectProjects();

                Assert.AreEqual(1, lp.Count);

                // Insert old activity without own project
                Activity a1 = new Activity();

                a1.Name    = "Test activity";
                a1.Created = DateTime.Parse("2015-01-01 01:00:00");
                a1.Stopped = DateTime.Parse("2015-01-01 01:30:00");

                Assert.AreEqual(0, a1.ActivityId);

                a1 = Storage.InsertActivity(a1);

                Assert.AreEqual(1, a1.ActivityId);

                //Assert.AreNotEqual(a1.ActivityId, au1.ActivityId);
                Assert.AreEqual(1, a1.ProjectId);
                Assert.AreEqual("Test activity", a1.Name);
                Assert.AreEqual("", a1.Description);
                Assert.AreEqual("", a1.Tags);
                Assert.AreEqual(DateTime.Parse("2015-01-01 01:00:00"), a1.Created);
                Assert.AreEqual(DateTime.Parse("2015-01-01 01:30:00"), a1.Stopped);
                Assert.IsFalse(a1.IsRunning());

                // Insert running activity with project (should be created).
                Activity a2 = new Activity("Second test activity@Test project", Storage);

                Assert.AreEqual(0, a2.ActivityId);

                a2 = Storage.InsertActivity(a2);

                Assert.AreEqual(2, a2.ActivityId);
                Assert.IsTrue(a2.IsRunning());
            }
Пример #21
0
        public void RemovingNullPreferenceTest()
        {
            SqliteStorage storage = _storage;

            Assert.True(_storage.CreatePreferenceTable());

            bool result = storage.InsertUserPreference(new UserPreference("headphones"));

            Assert.True(result);

            Assert.Throws <ArgumentNullException>(() =>
            {
                storage.DeleteUserPreference(null);
            });

            Assert.Throws <ArgumentNullException>(() =>
            {
                storage.DeleteUserPreferences(null);
            });
        }
Пример #22
0
        public void GetUserPreferenceNullTest()
        {
            SqliteStorage storage = _storage;

            Assert.True(_storage.CreateTables());

            List <UserPreference> preferences = new List <UserPreference>();

            preferences.Add(new UserPreference("movies", 0.0, 0.0));
            preferences.Add(new UserPreference("games", 0.0, 100.0));
            preferences.Add(new UserPreference("tools", 0.0, 100.0));

            bool result = storage.InsertUserPreferences(preferences);

            Assert.True(result);
            Assert.True(storage.GetNumberOfRows() == preferences.Count);

            UserPreference userPreference = storage.GetUserPreference("garden");

            Assert.Null(userPreference);
        }
Пример #23
0
        public void SQLiteGetItemsTest()
        {
            SqliteStorage storage = new SqliteStorage();
            StorageModel  model   = new StorageModel()
            {
                Name = "name1", Value = "value1"
            };
            string key1 = "Person1/1";
            string key2 = "Person1/2";
            string key3 = "Person1/3";

            storage.AddItem(key1, model);
            storage.AddItem(key2, model);
            storage.AddItem(key3, model);

            List <StorageModel> models = storage.GetItems <StorageModel>("Person1/0");

            Assert.AreEqual(models.Count, 3);

            storage.FlushAll();
        }
Пример #24
0
        public void GetUserPreferenceTest()
        {
            SqliteStorage storage = _storage;

            Assert.True(_storage.CreateTables());

            List <UserPreference> preferences = new List <UserPreference>();

            preferences.Add(new UserPreference("movies", 0.0, 0.0));
            preferences.Add(new UserPreference("games", 0.0, 100.0));
            preferences.Add(new UserPreference("tools", 0.0, 100.0));

            bool result = storage.InsertUserPreferences(preferences);

            Assert.True(result);
            Assert.True(storage.GetNumberOfRows() == preferences.Count);

            UserPreference userPreference = storage.GetUserPreference("games");

            Assert.NotNull(userPreference);
            Assert.Equal("games", userPreference._category);
            Assert.True(userPreference._minPrice == 0.0);
            Assert.True(userPreference._maxPrice == 100.0);
        }
Пример #25
0
        public void GetNumberOfRowsTest()
        {
            SqliteStorage storage = _storage;

            Assert.True(_storage.CreateTables());

            List <UserPreference> preferences = new List <UserPreference>();

            preferences.Add(new UserPreference("movies", 0.0, 0.0));
            preferences.Add(new UserPreference("games", 0.0, 100.0));
            preferences.Add(new UserPreference("tools", 0.0, 100.0));

            bool result = storage.InsertUserPreferences(preferences);

            Assert.True(result);
            Assert.True(storage.GetNumberOfRows() == preferences.Count);

            int numItems = preferences.Count;

            preferences.RemoveAt(2);
            result = storage.DeleteUserPreferences(preferences);
            Assert.True(result);
            Assert.True(storage.GetNumberOfRows() == (numItems - preferences.Count));
        }
Пример #26
0
        public void RetievePreferencesTest()
        {
            SqliteStorage storage = _storage;

            Assert.True(_storage.CreateTables());

            List <UserPreference> preferences = new List <UserPreference>();

            preferences.Add(new UserPreference("movies", 0.0, 0.0));
            preferences.Add(new UserPreference("games", 0.0, 100.0));

            bool result = storage.InsertUserPreferences(preferences);

            Assert.True(result);

            List <UserPreference> myPreferences = storage.GetUserPreferences();

            Assert.True(myPreferences.Count == preferences.Count);

            for (int i = 0; i < myPreferences.Count; i++)
            {
                Assert.Equal(preferences[i], myPreferences[i]);
            }
        }
Пример #27
0
 /// <summary>
 /// Store password requirement for a given service
 /// </summary>
 public static void Persist(string service, PasswordRequirements req)
 {
     SqliteStorage.Store(GetServiceName(service), req);
 }
Пример #28
0
 public StorageTests()
 {
     _storage = new SqliteStorage(TEST_DB_FOLDER, TEST_DB_FILE);
 }
Пример #29
0
            /// <summary>
            /// Initializes a new instance of the <see cref="odTimeTracker.Model.Activity"/> class
            /// from string describing the activity.
            /// </summary>
            /// <description>
            /// Here are some examples of valid activity strings:
            ///
            /// - "Updating README.md@odTimeTracker;Projects#Updating README.md with examples of usage."
            /// - "Simple activity without any values"
            /// - "Activity with project specified@Project name"
            /// - "Activity with some tags;tag1,tag2"
            ///
            /// Order of values (name, project, tags, description) is important. But the only
            /// required value is `name`.
            /// </description>
            /// <param name="activityString">Activity string.</param>
            public Activity(string activityString, SqliteStorage storage)
            {
                string name        = "";
                string projectName = "";
                string tags        = "";
                string description = "";

                string rest = activityString;

                string[] parts;

                bool hasProjectName = (rest.IndexOf('@') >= 0);
                bool hasTags        = (rest.IndexOf(';') >= 0);
                bool hasDescription = (rest.IndexOf('#') >= 0);

                // Project name
                if (hasProjectName == true)
                {
                    parts = activityString.Split('@');
                    name  = parts[0];
                    rest  = parts[1];
                }

                // Tags
                if (hasTags)
                {
                    parts = rest.Split(';');

                    if (hasProjectName == true)
                    {
                        projectName = parts[0];
                    }
                    else
                    {
                        name = parts[0];
                    }

                    rest = parts[1];
                }

                // Description
                if (hasDescription == true)
                {
                    parts = rest.Split('#');

                    if (hasProjectName == false && hasTags == false)
                    {
                        name = parts[0];
                    }
                    else if (hasProjectName == false && hasTags == true)
                    {
                        tags = parts[0];
                    }
                    else if (hasProjectName == true && hasTags == false)
                    {
                        projectName = parts[0];
                    }
                    else                     /*if (hasProjectName == true && hasTags == true)*/
                    {
                        tags = parts[0];
                    }

                    description = parts[1];
                }

                if (hasTags == true && tags.Length == 0)
                {
                    tags = rest;
                }
                else if (hasProjectName == true && projectName.Length == 0)
                {
                    projectName = rest;
                }
                else if (name.Length == 0)
                {
                    name = rest;
                }

                // Check if project with given name exists and if no create it!
                long projectId = 0;

                if (hasProjectName == true && projectName.Length > 0)
                {
                    var fProject = storage.SelectProjectByName(projectName);

                    if (fProject[0] == null)
                    {
                        Project newProject = new Project();
                        newProject.Name    = projectName;
                        newProject.Created = DateTime.UtcNow;
                        newProject         = storage.InsertProject(newProject);
                        projectId          = newProject.ProjectId;
                    }
                    else
                    {
                        projectId = fProject[0].ProjectId;
                    }

                    ProjectId = projectId;
                }

                ProjectId   = projectId;
                Name        = name;
                Description = description;
                Tags        = tags;
                Created     = DateTime.UtcNow;
            }