Пример #1
0
        public bool TryCreateSafeForExistingUser(string userName, string password, out ISafe safe)
        {
            var account = AccountGateway.ReadUserAccount(WorkingDirectory, userName);
            var verifyingWordBytesForCurrentPassword = Cryptor.GetEncryptedBytes(account.VerifyingWord, password);

            try
            {
                var masterPassword = Cryptor.GetDecryptedContent <string>(account.MasterEncryptedPassBytes, password);
                safe = null;

                if (account.VeryifyingWordEncryptedBytes.Length != verifyingWordBytesForCurrentPassword.Length)
                {
                    return(false);
                }
                for (var i = 0; i < account.VeryifyingWordEncryptedBytes.Length; i++)
                {
                    if (account.VeryifyingWordEncryptedBytes[i] != verifyingWordBytesForCurrentPassword[i])
                    {
                        return(false);
                    }
                }
                safe                  = new Safe(masterPassword);
                safe.UserName         = userName;
                safe.WorkingDirectory = WorkingDirectory;
                return(true);
            }
            catch (Exception e)
            {
                safe = null;
                return(false);
            }
        }
            public void When_safe_creation_is_attempted_with_invalid_password_then_safe_creation_fails()
            {
                var userName            = "******";
                var someInvalidPassword = "******";
                var verifyingWord       = "SomeWord";
                var verifyingWordEncryptedBytesForInvalidPassword = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
                var verifyingWordEncryptedBytesForValidPassword   = new byte[] { 0, 1, 2, 3, 4, 5, 6, };
                var masterPassEncryptedBytes = new byte[] { 4, 5, 6, 7, 8, 9 };

                var account = new Account()
                {
                    MasterEncryptedPassBytes     = masterPassEncryptedBytes,
                    VerifyingWord                = verifyingWord,
                    VeryifyingWordEncryptedBytes = verifyingWordEncryptedBytesForValidPassword,
                };

                _accountGateway.ReadUserAccount(_initialWorkingDirectory, userName).Returns(account);
                _cryptor.GetEncryptedBytes(verifyingWord, someInvalidPassword).Returns(verifyingWordEncryptedBytesForInvalidPassword);

                ISafe safe   = null;
                var   result = _safeProvider.TryCreateSafeForExistingUser(userName, someInvalidPassword, out safe);

                Assert.False(result);
                Assert.IsNull(safe);
            }
Пример #3
0
 public SearchAndAddOperationViewModel(ISafe safe, Action <string> recordSelectionAction, Action addNewRecordAction)
 {
     _safe = safe;
     _recordSelectionAction = recordSelectionAction;
     IsSearchResultVisible  = false;
     IsSearchResultEmpty    = true;
     AddCommand             = new DelegateCommand(addNewRecordAction);
     IsSearchInProgress     = false;
 }
Пример #4
0
        public static void StubCreateSafeForExistingUser(this ISafeProviderForExistingUser safeProvider, string validUserName, string validPassword, ISafe safe)
        {
            ISafe outSafe;

            safeProvider.TryCreateSafeForExistingUser(validUserName, validPassword, out outSafe)
            .Returns(x =>
            {
                x[2] = safe;
                return(true);
            });
        }
        public void SetUp()
        {
            _safe = Substitute.For <ISafe>();

            _operationStepViewModel = new OperationStepViewModel("userName", _safe, () => { });

            _selectedOperationPropertyObserver = _operationStepViewModel
                                                 .GetPropertyObserver <SingleOperationViewModel>
                                                     (nameof(_operationStepViewModel.SelectedOperation));

            _signOutCommandObserver = _operationStepViewModel.SignOutCommand.GetDelegateCommandObserver();
        }
 public OperationStepViewModel(string userName, ISafe safe, Action goToEntryStepAction)
 {
     _idGenerator   = new IdGenerator();
     Safe           = safe;
     UserName       = userName;
     SignOutCommand = new DelegateCommand(() =>
     {
         goToEntryStepAction.Invoke();
         Safe = null;
     }, CanSignOut);
     //AddCommand = new DelegateCommand(GoToAddOperation);
     GoToSearchAndAddOperation();
 }
        public void SetUp()
        {
            _recordIdGenerator = Substitute.For <IRecordIdGenerator>();
            _fileIdGenerator   = Substitute.For <IFileIdGenerator>();
            _recordIdGenerator.GetRecordId().Returns(_uniqueId);

            _safe = Substitute.For <ISafe>();

            _addOperationViewModel = new AddOperationViewModel(() => { _isDiscardActionPerformed = true; }, (x) =>
            {
                _idAtSaveAction = x;
            },
                                                               _recordIdGenerator,
                                                               _fileIdGenerator,
                                                               _safe);
            _saveCommandObserver = _addOperationViewModel.SaveCommand.GetDelegateCommandObserver();
        }
        public RecordAlteringOperationViewModel(ISafe safe, string recordId, IFileIdGenerator fileIdGenerator, Action reloadAction, Action closeAction)
        {
            _safe         = safe;
            _recordId     = recordId;
            _reloadAction = reloadAction;
            _closeAction  = closeAction;
            var record = safe.GetRecord(recordId);

            Record = new RecordViewModel(record, safe, fileIdGenerator);



            SaveCommand           = new DelegateCommand(Save, CanSave);
            DeleteCommand         = new DelegateCommand(Delete);
            DiscardCommand        = new DelegateCommand(Discard);
            GoToSearchCommand     = new DelegateCommand(GoToSearch, () => !Record.IsRecordModified);
            Record.RecordChanged += () => { GoToSearchCommand.RaiseCanExecuteChanged(); };

            Record.PropertyChanged += (a, b) => { SaveCommand.RaiseCanExecuteChanged(); };
        }
        public void SetUp()
        {
            _safe = Substitute.For <ISafe>();
            _searchAndAddOperationViewModel = new SearchAndAddOperationViewModel(_safe, (x) => { _openedRecordId = x; }, () =>
            {
                _isRecordCreationRequested = true;
            });

            _searchResultVisibilityObserver = _searchAndAddOperationViewModel
                                              .GetPropertyObserver <bool>(nameof(_searchAndAddOperationViewModel.IsSearchResultVisible));

            _searchResultEmptyPropertyObserver = _searchAndAddOperationViewModel
                                                 .GetPropertyObserver <bool>(nameof(_searchAndAddOperationViewModel.IsSearchResultEmpty));

            _searchResultPropertyObserver = _searchAndAddOperationViewModel
                                            .GetPropertyObserver <ObservableCollection <RecordHeaderViewModel> >(
                nameof(_searchAndAddOperationViewModel.SearchResults));

            _searchProgressIndicatorObserver = _searchAndAddOperationViewModel
                                               .GetPropertyObserver <bool>(nameof(_searchAndAddOperationViewModel.IsSearchInProgress));
        }
        public void SetUp()
        {
            _recordid = "RecordId";
            _record   = new Record()
            {
                Header = new RecordHeader()
                {
                    Id   = _recordid,
                    Name = "RecordName",
                    Tags = "Tag1;Tag2",
                },
                PasswordRecords = new List <PasswordRecord>()
                {
                    new PasswordRecord()
                    {
                        Name = "SomeName1", Value = "SomeValue1"
                    },
                },
                FileRecords = new List <FileRecord>()
                {
                    new FileRecord()
                    {
                        Name = "sss", Description = "ddd", Extention = "xyz", FileId = "ssss", AssociatedRecordId = _recordid
                    },
                },
            };

            _safe = Substitute.For <ISafe>();
            var recordId = _record.Header.Id;

            _safe.GetRecord(recordId).Returns(_record);
            _recordAlteringOperationViewModel = new RecordAlteringOperationViewModel(_safe,
                                                                                     recordId,
                                                                                     new IdGenerator(),
                                                                                     () => { _isReloadActionCalled = true; }, () => { _isCloseActionCalled = true; });

            _saveCommandObserver = _recordAlteringOperationViewModel.SaveCommand.GetDelegateCommandObserver();
        }
Пример #11
0
        public AddOperationViewModel(Action discardAction, Action <string> saveAction, IRecordIdGenerator recordIdGenerator, IFileIdGenerator fileIdGenerator, ISafe safe)
        {
            Record = new RecordViewModel(CreateEmptyRecord(recordIdGenerator.GetRecordId()), safe, fileIdGenerator);
            Record.PropertyChanged += (sender, args) =>
            {
                CanExecuteSaveCommand = !string.IsNullOrWhiteSpace(Record.Name);
            };

            DiscardCommand = new DelegateCommand
                                 (() =>
            {
                safe.ReorganizeFiles(Record.Id);
                discardAction.Invoke();
            }
                                 );

            SaveCommand = new DelegateCommand(() =>
            {
                var record = Record.GetRecord();
                safe.UpsertRecord(record);
                safe.ReorganizeFiles(Record.Id);
                saveAction.Invoke(Record.Id);
            }, () => CanExecuteSaveCommand);
        }
 private void GoToOperationStep(ISafe safe, string userName)
 {
     CurrentStep = new OperationStepViewModel(userName, safe, GoToEntryStep);
 }
 public void SafeCreatedForNonExistingUserSetUp()
 {
     _cryptor.GetEncryptedBytes(_masterpassword, _password).Returns(_masterPassBytes);
     _cryptor.GetEncryptedBytes(_verifyingWord, _password).Returns(_verifyingWordEncryptedBytes);
     _safe = _safeProvider.CreateSafeForNonExistingUser(_userName, _masterpassword, _password);
 }