private string CreateAttachmentProperties(AmazonS3FileUploadInfoDto s3FileInfo, string comment) { var attachment = new Attachment() { Id = this._s3AccessLinkPrefix + s3FileInfo.FileKey, Properties = new Dictionary <string, List <dynamic> > { { RDF.Type, new List <dynamic> { AttachmentConstants.Type } }, { RDFS.Label, new List <dynamic> { s3FileInfo.FileName } }, { AttachmentConstants.HasFileSize, new List <dynamic> { s3FileInfo.FileSize } }, { AttachmentConstants.HasFileType, new List <dynamic> { s3FileInfo.FileType } }, { RDFS.Comment, new List <dynamic> { comment } } } }; var metadata = _metadataService.GetMetadataForEntityType(AttachmentConstants.Type); _attachmentRepository.CreateEntity(attachment, metadata, GetResourceInstanceGraph()); _attachmentRepository.CreateEntity(attachment, metadata, GetDraftResourceInstanceGraph()); return(attachment.Id); }
public async Task ImportGraph_Success() { // Arrange var s3FileInfo = new AmazonS3FileUploadInfoDto { FileName = "", FileSize = 0, FileType = "", S3KeyName = "s3://some.fancy.kid.said/i.like.turtles", S3ObjectUrl = "" }; var loadId = Guid.NewGuid().ToString(); var formFile = GenerateTtlFormFile(); var graphName = new Uri("https://www.speedofart.com/glorious/painting/1.0"); var expectedResponse = new NeptuneLoaderResponse { status = "200 OK", payload = new Dictionary <string, string> { { "loadId", loadId }, { "namedGraphName", graphName.AbsoluteUri } } }; _mockAwsS3Service.Setup(x => x.UploadFileAsync(It.IsAny <string>(), It.IsAny <IFormFile>())).ReturnsAsync(s3FileInfo); _mockGraphRepository.Setup(x => x.CheckIfNamedGraphExists(It.IsAny <Uri>())).Returns(false); _mockNeptuneLoaderConnector.Setup(x => x.LoadGraph(s3FileInfo.S3KeyName, graphName)).ReturnsAsync(expectedResponse); // Act var result = await _service.ImportGraph(formFile, graphName, false); // Assert Assert.NotNull(result); Assert.Equal(expectedResponse.status, result.status); Assert.True(result.payload.TryGetValue("loadId", out var resultLoadIdValue)); Assert.Equal(loadId, resultLoadIdValue); Assert.True(result.payload.TryGetValue("namedGraphName", out var resultGraphName)); Assert.Equal(graphName.AbsoluteUri, resultGraphName); }
public async Task ImportGraph_ThrowsException_IfGraphExistsAndOverwriteFalse() { var s3FileInfo = new AmazonS3FileUploadInfoDto { FileName = "", FileSize = 0, FileType = "", S3KeyName = "s3://some.fancy.kid.said/i.like.turtles", S3ObjectUrl = "" }; var formFile = GenerateTtlFormFile(); var graphName = new Uri("https://www.speedofart.com/glorious/painting/1.0"); _mockAwsS3Service.Setup(x => x.UploadFileAsync(It.IsAny <string>(), It.IsAny <IFormFile>())).ReturnsAsync(s3FileInfo); _mockGraphRepository.Setup(x => x.CheckIfNamedGraphExists(It.IsAny <Uri>())).Returns(true); await Assert.ThrowsAsync <GraphAlreadyExistsException>(() => _service.ImportGraph(formFile, graphName, false)); }
public async Task UploadAttachment_ByFileAndGuid_Should_Return_AttachmentDto() { // ARRANGE var comment = "no comment"; var s3ObjectMock = new AmazonS3FileUploadInfoDto { FileName = "testfile.jpg", FileSize = 20000, FileType = "image/jpg", S3KeyName = "7FB3719C-EE44-4425-AD6A-BCD800725529/testfile.jpg", S3ObjectUrl = "http://s3.aws.com/7FB3719C-EE44-4425-AD6A-BCD800725529/testfile.jpg" }; using var contentStream = new MemoryStream(); contentStream.Write(new ASCIIEncoding().GetBytes(s3ObjectMock.FileName)); IFormFile file = new FormFile(contentStream, 0, s3ObjectMock.FileSize, s3ObjectMock.FileName, s3ObjectMock.FileName); _mockAwsS3Service.Setup(x => x.UploadFileAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <IFormFile>(), false)) .ReturnsAsync(s3ObjectMock); // Check the attachment object to store the correct values within the graph Attachment interceptedAttachment = null; _mockAttachmentRepository.Setup(x => x.CreateEntity(It.IsAny <Attachment>(), It.IsAny <IList <MetadataProperty> >(), It.IsAny <Uri>())) .Callback <Attachment, IList <MetadataProperty>, Uri>((attachment, metadata, graph) => interceptedAttachment = attachment); // ACT var response = await _service.UploadAttachment(file, "no comment"); // ASSERT Assert.NotNull(response); //Assert.Equal(s3ObjectMock.S3ObjectUrl, response.Id); Assert.Equal(s3ObjectMock.FileName, response.s3File.FileName); Assert.Equal(s3ObjectMock.FileType, response.s3File.FileType); Assert.Equal(s3ObjectMock.FileSize, response.s3File.FileSize); Assert.Equal(s3ObjectMock.S3KeyName, response.s3File.S3KeyName); Assert.Equal(s3ObjectMock.S3ObjectUrl, response.s3File.S3ObjectUrl); //Assert.Equal(s3ObjectMock.S3ObjectUrl, interceptedAttachment.Id); var props = interceptedAttachment.Properties; Assert.True(props.ContainsType(AttachmentConstants.Type)); Assert.True(props.ContainsRdfsLabel(s3ObjectMock.FileName)); Assert.True(props.ContainsAttachmentFileSize(s3ObjectMock.FileSize.ToString())); Assert.True(props.ContainsAttachmentFileType(s3ObjectMock.FileType)); Assert.True(props.ContainsRdfsComment(comment)); }