public async Task Handle_AddFilesFail_ShouldFail()
        {
            var mockProjectRepo = new Mock <IProjectRepository>();

            mockProjectRepo.Setup(x => x.GetById(It.IsAny <int>())).ReturnsAsync(new Project("test", new AsymmetricKey("PUBLIC KEY")));

            var mockAddFiles = new Mock <IAddUpdatePackageFilesAction>();

            mockAddFiles.Setup(x => x.AddFiles(It.IsAny <UpdatePackage>(), It.IsAny <IEnumerable <UpdateFileInfo> >(), It.IsAny <string>()))
            .Returns(Task.CompletedTask);
            mockAddFiles.SetupGet(x => x.HasError).Returns(true);
            mockAddFiles.SetupGet(x => x.Error).Returns(new Error(ErrorType.ValidationError.ToString(), "Test error", -1));

            var useCase = new CreateUpdatePackageUseCase(mockProjectRepo.Object, null, mockAddFiles.Object);

            var files = new List <UpdateFileInfo>
            {
                new UpdateFileInfo("asd", Hash.Parse("FF"))
            };
            var package = new UpdatePackageInfo("1.0.0", null, null, files, null, null);
            var message = new CreateUpdatePackageRequest(1, package);

            // act
            await useCase.Handle(message);

            // assert
            ErrorUtils.AssertError(useCase, ErrorType.ValidationError);
        }
Beispiel #2
0
        public async Task Handle_GivenInvalidFiles_ShouldFail()
        {
            var mockRepo = new Mock <IUpdatePackageRepository>();

            mockRepo.Setup(x => x.GetFirstOrDefaultBySpecs(It.IsAny <ISpecification <UpdatePackage>[]>())).ReturnsAsync(new UpdatePackage("1.0.0"));

            var mockAddFiles = new Mock <IAddUpdatePackageFilesAction>();

            mockAddFiles.Setup(x => x.AddFiles(It.IsAny <UpdatePackage>(), It.IsAny <IEnumerable <UpdateFileInfo> >(), It.IsAny <string>()))
            .Returns(Task.CompletedTask);
            mockAddFiles.SetupGet(x => x.HasError).Returns(true);
            mockAddFiles.SetupGet(x => x.Error).Returns(new Error(ErrorType.InvalidOperation.ToString(), "Test error", -1));

            var useCase           = new PatchUpdatePackageUseCase(mockRepo.Object, mockAddFiles.Object);
            var updatePackageInfo = new UpdatePackageInfo("1.0.0", "", null, new List <UpdateFileInfo> {
                new UpdateFileInfo("asd", Hash.Parse("FF"))
            },
                                                          null, null);

            // act
            await useCase.Handle(new PatchUpdatePackageRequest(1, "1.0.0", updatePackageInfo, null));

            // assert
            ErrorUtils.AssertError(useCase, ErrorType.InvalidOperation);
        }
        public async Task Handle_GivenFilesWithInvalidSignature_PrivateKeyNotOnServer_ShouldFail()
        {
            var mockProjectRepo = new Mock <IProjectRepository>();

            mockProjectRepo.Setup(x => x.GetById(It.IsAny <int>())).ReturnsAsync(new Project("test", new AsymmetricKey("PUBLIC KEY")));

            var mockFilesRepo = new Mock <IStoredFileRepository>();

            mockFilesRepo.Setup(x => x.FindByHash(It.IsAny <Hash>())).ReturnsAsync(new StoredFile("HASH", 100, 80));

            var mockAsymCrypto = new Mock <IAsymmetricCryptoHandler>();

            mockAsymCrypto.Setup(x => x.VerifyHash(It.IsAny <Hash>(), "SIGNATURE", "PUBLIC KEY")).Returns(false);

            var action = new AddUpdatePackageFilesAction(mockFilesRepo.Object, mockProjectRepo.Object, mockAsymCrypto.Object, null);

            var files = new List <UpdateFileInfo>
            {
                new UpdateFileInfo("asd", Hash.Parse("FF"), "SIGNATURE")
            };

            var package = new UpdatePackage("1.0.0");

            // act
            await action.AddFiles(package, files, null);

            // assert
            ErrorUtils.AssertError(action, ErrorType.ValidationError);
        }
        public async Task Handle_GivenInvalidKeyPassword_PrivateKeyEncryptedOnServer_ShouldFail()
        {
            var mockProjectRepo = new Mock <IProjectRepository>();

            mockProjectRepo.Setup(x => x.GetById(It.IsAny <int>())).ReturnsAsync(new Project("test", new AsymmetricKey("PUBLIC KEY", "ENCRYPTED KEY", true)));

            var mockFilesRepo = new Mock <IStoredFileRepository>();

            mockFilesRepo.Setup(x => x.FindByHash(It.IsAny <Hash>())).ReturnsAsync(new StoredFile("HASH", 100, 80));

            var mockSymmCrypto = new Mock <ISymmetricEncryption>();

            mockSymmCrypto.Setup(x => x.DecryptString("ENCRYPTED KEY", "Invalid Password")).Throws(new Exception("Invalid Password"));

            var action = new AddUpdatePackageFilesAction(mockFilesRepo.Object, mockProjectRepo.Object, null, mockSymmCrypto.Object);

            var files = new List <UpdateFileInfo>
            {
                new UpdateFileInfo("asd", Hash.Parse("FF"), "")
            };

            var package = new UpdatePackage("1.0.0");

            // act
            await action.AddFiles(package, files, "Invalid Password");

            // assert
            ErrorUtils.AssertError(action, ErrorType.ValidationError);
        }
        public async Task Handle_GivenUnknownProjectId_ShouldFail()
        {
            var mockProjectRepo = new Mock <IProjectRepository>();

            mockProjectRepo.Setup(x => x.GetById(It.IsAny <int>())).ReturnsAsync((Project)null);

            var useCase = new CreateUpdatePackageUseCase(mockProjectRepo.Object, null, null);

            var package = new UpdatePackageInfo("1.0.0", null, null, new List <UpdateFileInfo>(), null, null);
            var message = new CreateUpdatePackageRequest(1, package);

            await useCase.Handle(message);

            ErrorUtils.AssertError(useCase, ErrorType.NotFound);
        }
Beispiel #6
0
        public async Task Handle_GivenInvalidUpdatePackage_ShouldFail()
        {
            var mockRepo = new Mock <IUpdatePackageRepository>();

            mockRepo.Setup(x => x.GetFirstOrDefaultBySpecs(It.IsAny <ISpecification <UpdatePackage>[]>())).ReturnsAsync((UpdatePackage)null);

            var useCase           = new PatchUpdatePackageUseCase(mockRepo.Object, null);
            var updatePackageInfo = new UpdatePackageInfo("1.0.0", "", null, new List <UpdateFileInfo>(), null, null);

            // act
            await useCase.Handle(new PatchUpdatePackageRequest(1, "1.0.0", updatePackageInfo, null));

            // assert
            ErrorUtils.AssertError(useCase, ErrorType.NotFound, ErrorCode.UpdatePackageNotFound);
        }
        public async Task CantRemoveFileThatIsNotIndexed()
        {
            // arrange
            var mockDirectory      = new Mock <IPhotoDirectory>();
            var mockFileRepository = new Mock <IIndexedFileRepository>();
            var mockDataContext    = new Mock <IPhotoDirectoryDataContext>();

            mockDataContext.SetupGet(x => x.FileRepository).Returns(mockFileRepository.Object);
            mockFileRepository.Setup(x => x.FirstOrDefaultBySpecs(It.IsAny <ISpecification <IndexedFile>[]>())).ReturnsAsync((IndexedFile)null);
            mockDirectory.Setup(x => x.GetDataContext()).Returns(mockDataContext.Object);

            var useCase = new RemoveFileFromIndexUseCase();
            var request = new RemoveFileFromIndexRequest("test.xml", mockDirectory.Object);

            // act
            await useCase.Handle(request);

            // assert
            ErrorUtils.AssertError(useCase, ErrorType.InvalidOperation, ErrorCode.FileNotIndexed);
        }
        public async Task Handle_GivenInvalidChangelogLanguage_ShouldFail()
        {
            var mockProjectRepo = new Mock <IProjectRepository>();

            mockProjectRepo.Setup(x => x.GetById(It.IsAny <int>())).ReturnsAsync(new Project("test", new AsymmetricKey("PUBLIC KEY")));

            var useCase = new CreateUpdatePackageUseCase(mockProjectRepo.Object, null, null);

            var changelogs = new List <UpdateChangelogInfo>
            {
                new UpdateChangelogInfo("de-de", "Hallo Welt"),
                new UpdateChangelogInfo("en-use", "Hello World")
            };

            var package = new UpdatePackageInfo("1.0.0", null, null, new List <UpdateFileInfo>(), changelogs, null);
            var message = new CreateUpdatePackageRequest(1, package);

            await useCase.Handle(message);

            ErrorUtils.AssertError(useCase, ErrorType.ValidationError);
        }