private void VerifyScalableBitmapImageConstraints(int templateCode, ScalableBitmapImageElementConstraints constraints) { VerifyBinaryConstraints(templateCode, constraints); if (constraints.SupportedFileFormats.Any(x => !ScalableBitmapImageFileFormats.Contains(x))) { throw new TemplateValidationException(templateCode, TemplateElementValidationError.UnsupportedImageFileFormat); } if (!SizeRangeIsConsistent(constraints.ImageSizeRange)) { throw new TemplateValidationException(templateCode, TemplateElementValidationError.InvalidImageSizeRange); } }
public async Task CorrectJsonShouldBePassedToS3PutObjectForScalableBitmapImageElementWithoutAnchor() { const int TemplateCode = 100; const Language Language = Language.Ru; var constraints = new ScalableBitmapImageElementConstraints(); var templateDescriptor = new TemplateDescriptor { Id = TemplateId, VersionId = TemplateVersionId, Properties = new JObject(), Elements = new[] { new ElementDescriptor( ElementDescriptorType.ScalableBitmapImage, TemplateCode, new JObject(), new ConstraintSet(new[] { new ConstraintSetItem(Language, constraints) })) } }; _objectsStorageReaderMock.Setup(m => m.IsObjectExists(It.IsAny <long>())) .ReturnsAsync(() => false); _templatesStorageReaderMock.Setup(m => m.GetTemplateDescriptor(It.IsAny <long>(), It.IsAny <string>())) .ReturnsAsync(() => templateDescriptor); _templatesStorageReaderMock.Setup(m => m.GetTemplateLatestVersion(It.IsAny <long>())) .ReturnsAsync(() => TemplateVersionId); _objectsStorageReaderMock.Setup(m => m.GetObjectLatestVersions(It.IsAny <long>())) .ReturnsAsync(() => new[] { new VersionedObjectDescriptor <string>( ObjectId.AsS3ObjectKey(Tokens.ObjectPostfix), ObjectVersionId, DateTime.UtcNow) }); var response = new GetObjectMetadataResponse(); var metadataWrapper = MetadataCollectionWrapper.For(response.Metadata); metadataWrapper.Write(MetadataElement.ExpiresAt, DateTime.UtcNow.AddDays(1)); _cephS3ClientMock.Setup(m => m.GetObjectMetadataAsync(It.IsAny <string>(), It.IsAny <string>())) .ReturnsAsync(() => response); var requests = new List <PutObjectRequest>(); _s3ClientMock.Setup(m => m.PutObjectAsync(It.IsAny <PutObjectRequest>())) .Callback <PutObjectRequest>(request => requests.Add(request)) .ReturnsAsync(new PutObjectResponse()); var fileKey = Guid.NewGuid().AsS3ObjectKey("key.raw"); var objectDescriptor = new ObjectDescriptor { Language = Language, TemplateId = TemplateId, TemplateVersionId = TemplateVersionId, Properties = new JObject(), Elements = new[] { new ObjectElementDescriptor { Type = ElementDescriptorType.ScalableBitmapImage, TemplateCode = TemplateCode, Constraints = new ConstraintSet(new[] { new ConstraintSetItem(Language, constraints) }), Value = new ScalableBitmapImageElementValue { Raw = fileKey } } } }; await _objectsManagementService.Create(ObjectId, AuthorInfo, objectDescriptor); var elementContent = requests[0].ContentBody; var elementJson = JObject.Parse(elementContent); var valueJson = elementJson["value"]; Assert.Equal(fileKey, valueJson["raw"]); Assert.NotNull(valueJson["filename"]); Assert.NotNull(valueJson["filesize"]); Assert.Equal(nameof(Anchor.Middle).ToLower(), valueJson["anchor"]); }
public async Task CorrectJsonShouldBePassedToS3PutObjectForScalableBitmapImageElementWithoutAnchor() { const int TemplateCode = 100; const Language Language = Language.Ru; var constraints = new ScalableBitmapImageElementConstraints { SupportedFileFormats = new List <FileFormat> { FileFormat.Png }, ImageSizeRange = new ImageSizeRange { Min = ImageSize.Empty, Max = new ImageSize { Width = 500, Height = 500 } } }; var templateDescriptor = new TemplateDescriptor { Id = TemplateId, VersionId = TemplateVersionId, Properties = new JObject(), Elements = new[] { new ElementDescriptor( ElementDescriptorType.ScalableBitmapImage, TemplateCode, new JObject(), new ConstraintSet(new[] { new ConstraintSetItem(Language, constraints) })) } }; _objectsStorageReaderMock.Setup(m => m.IsObjectExists(ObjectId)) .ReturnsAsync(false); _templatesStorageReaderMock.Setup(m => m.GetTemplateDescriptor(TemplateId, TemplateVersionId)) .ReturnsAsync(templateDescriptor); _objectsStorageReaderMock.Setup(m => m.GetObjectLatestVersion(It.IsAny <long>())) .ReturnsAsync( new VersionedObjectDescriptor <string>( ObjectId.AsS3ObjectKey(Tokens.ObjectPostfix), ObjectVersionId, DateTime.UtcNow) ); var response = new GetObjectMetadataResponse(); var metadataWrapper = MetadataCollectionWrapper.For(response.Metadata); metadataWrapper.Write(MetadataElement.ExpiresAt, DateTime.UtcNow.AddDays(1)); _cephS3ClientMock.Setup(m => m.GetObjectMetadataAsync(It.IsAny <string>(), It.IsAny <string>())) .ReturnsAsync(response); var memoryStream = new MemoryStream(); using (var stream = File.OpenRead(Path.Combine("images", "64x48.png"))) { await stream.CopyToAsync(memoryStream); memoryStream.Position = 0; } var fileKey = Guid.NewGuid().AsS3ObjectKey("key.raw"); var getObjectResponse = new GetObjectResponse { ResponseStream = memoryStream }; metadataWrapper = MetadataCollectionWrapper.For(getObjectResponse.Metadata); metadataWrapper.Write(MetadataElement.Filename, "file name.png"); _s3ClientMock.Setup(m => m.GetObjectAsync(It.IsAny <string>(), fileKey, It.IsAny <CancellationToken>())) .ReturnsAsync(getObjectResponse); var requests = new List <PutObjectRequest>(); _s3ClientMock.Setup(m => m.PutObjectAsync(It.IsAny <PutObjectRequest>())) .Callback <PutObjectRequest>(request => requests.Add(request)) .ReturnsAsync(new PutObjectResponse()); var objectDescriptor = new ObjectDescriptor { Language = Language, TemplateId = TemplateId, TemplateVersionId = TemplateVersionId, Properties = new JObject(), Elements = new[] { new ObjectElementDescriptor { Type = ElementDescriptorType.ScalableBitmapImage, TemplateCode = TemplateCode, Constraints = new ConstraintSet(new[] { new ConstraintSetItem(Language, constraints) }), Value = new ScalableBitmapImageElementValue { Raw = fileKey } } } }; await _objectsManagementService.Create(ObjectId, AuthorInfo, objectDescriptor); var elementContent = requests[0].ContentBody; var elementJson = JObject.Parse(elementContent); var valueJson = elementJson["value"]; Assert.Equal(fileKey, valueJson["raw"]); Assert.NotNull(valueJson["filename"]); Assert.NotNull(valueJson["filesize"]); Assert.Equal(nameof(Anchor.Middle).ToLower(), valueJson["anchor"]); }