Example #1
0
        public async Task UnlockTestAsync()
        {
            // Arrange
            var id  = new KeePassId(Guid.NewGuid());
            var log = Substitute.For <ILogger>();

            var filePicker = Substitute.For <IFilePicker>();
            var db         = Substitute.For <IFile>();

            filePicker.GetDatabaseAsync().Returns(Task.FromResult(db));

            var access = Substitute.For <IDatabaseFileAccess>();

            access.GetDatabaseAsync(id).Returns(db);

            var credentialProvider = Substitute.For <ICredentialProvider>();
            var credentials        = new KeePassCredentials(db, "pass");

            credentialProvider.GetCredentialsAsync(db).Returns(credentials);

            var cache = Substitute.ForPartsOf <DatabaseCache>(log, access, filePicker);
            var kpDb  = Substitute.For <IKeePassDatabase>();

            cache.UnlockAsync(db, Arg.Any <KeePassCredentials>()).Returns(kpDb);

            // Act
            var result = await cache.UnlockAsync(id, credentialProvider);

            // Assert
            Assert.Equal(kpDb, result);
            await access.Received(1).GetDatabaseAsync(id);

            await credentialProvider.Received(1).GetCredentialsAsync(db);
        }
Example #2
0
        public async Task InvalidUnlockTestAsync(string db, string password, bool hasKey)
        {
            var kdbx     = TestAssets.GetFile(db);
            var unlocker = new KdbxDatabaseCache(Substitute.For <ILogger>(), Substitute.For <IDatabaseFileAccess>());

            var key         = hasKey ? TestAssets.GetFile(Path.ChangeExtension(db, "key")) : null;
            var credentials = new KeePassCredentials(key, password);

            await Assert.ThrowsAsync <InvalidCredentialsException>(async() => await unlocker.UnlockAsync(kdbx, credentials));
        }
Example #3
0
        public async Task UnlockTestAsync(string db, string password, bool hasKey)
        {
            var kdbx     = TestAssets.GetFile(db);
            var unlocker = new KdbxDatabaseCache(Substitute.For <ILogger>(), Substitute.For <IDatabaseFileAccess>());

            var key         = hasKey ? TestAssets.GetFile(Path.ChangeExtension(db, "key")) : null;
            var credentials = new KeePassCredentials(key, password);

            var result = await unlocker.UnlockAsync(kdbx, credentials);

            Assert.NotNull(result);
            Assert.Equal(result.Id, kdbx.IdFromPath());
        }