コード例 #1
0
        public void Load_ReturnsEmptyObject_WhenNoSavedObjectExists()
        {
            var fileSystem = new MockFileSystem();
            var store      = new WindowsEncryptedStore <UserSettings>(fileSystem);

            var result = store.Load();

            result.Should().BeEquivalentTo(new UserSettings());
        }
コード例 #2
0
        public void Load_ReturnsEmptyObject_WhenExceptionIsEncountered()
        {
            var fileSystem = A.Fake <IFileSystem>();

            A.CallTo(() => fileSystem.File.ReadAllBytes(A <string> ._)).Throws <UnauthorizedAccessException>();
            A.CallTo(() => fileSystem.File.Exists(A <string> ._)).Returns(true);
            var store    = new WindowsEncryptedStore <UserSettings>(fileSystem);
            var settings = store.Load();

            settings.Should().NotBeNull();
            settings.Should().BeEquivalentTo(new UserSettings());
        }
コード例 #3
0
        public void Load_CorrectlyRestoresSavedValue()
        {
            var fileSystem = new MockFileSystem();
            var store      = new WindowsEncryptedStore <UserSettings>(fileSystem);
            var settings   = _fixture.Create <UserSettings>();

            store.Save(settings);

            var result = store.Load();

            result.Should().BeEquivalentTo(settings);
        }
コード例 #4
0
        public void Save_WritesCipherAndEntropyToDisk()
        {
            var fileSystem = A.Fake <IFileSystem>();
            var store      = new WindowsEncryptedStore <UserSettings>(fileSystem);
            var settings   = new UserSettings {
                BackupPassword = "******"
            };

            store.Save(settings);

            A.CallTo(() => fileSystem.File.WriteAllBytes(A <string> .Ignored, A <byte[]> .Ignored)).MustHaveHappenedTwiceExactly();
        }
コード例 #5
0
        public void Save_UsesSavedTypesSimpleNameAsCipherName()
        {
            var fileSystem = new MockFileSystem();

            fileSystem.AddDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
            var store    = new WindowsEncryptedStore <UserSettings>(fileSystem);
            var settings = _fixture.Create <UserSettings>();

            store.Save(settings);

            fileSystem.AllFiles.Select(f => fileSystem.Path.GetFileName(f)).Should()
            .Contain("UserSettings", because: "If this name ever changes, it means a breaking change because Load will not find previously saved items.");
        }
コード例 #6
0
        public void WindowsEncryptedStore_CreatesDataDirectory_WhenItDoesntExist()
        {
            var fileSystem = new MockFileSystem();

            fileSystem.AddDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
            var dataDirectory = fileSystem.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "JournalCli");

            fileSystem.AllDirectories.Should().NotContain(dataDirectory);

            var store    = new WindowsEncryptedStore <UserSettings>(fileSystem);
            var settings = _fixture.Create <UserSettings>();

            store.Save(settings);

            fileSystem.AllDirectories.Should().Contain(dataDirectory);
        }