public async Task Test_Serialize_WritesToStream() { // Arrange var writeStream = new MemoryStream(); var testData = "ABC"; // Act await serializer.SerializeAsync( stream : writeStream, data : testData ); // Assert Assert.IsNotEmpty(writeStream.ToArray()); }
async Task IDocumentSerializer.SerializeAsync <T>(Stream stream, T data) where T : class { if (stream is null) { throw new System.ArgumentNullException(nameof(stream)); } if (data is null) { throw new System.ArgumentNullException(nameof(data)); } using var rijndael = Rijndael.Create(); var encryptor = rijndael.CreateEncryptor(options.Key.ToArray(), options.IV.ToArray()); using var cryptoStream = new CryptoStream(stream, encryptor, CryptoStreamMode.Write); try { await serializer.SerializeAsync(cryptoStream, data).ConfigureAwait(false); await stream.FlushAsync().ConfigureAwait(false); } catch (CryptographicException ex) { throw new SerializationException("Decryption failed. Make sure to use correct key.", ex); } }
/// <summary>Creates persistence for a document.</summary> /// <typeparam name="TDocument">A type of a document.</typeparam> /// <param name="document">An object that represents a document, for which it is required to create persistence.</param> /// <param name="cancellationToken">A value that propagates notification that operations should be canceled.</param> /// <returns>An object that represents an async operation.</returns> public async Task <TDocument> InsertAsync <TDocument>( TDocument document, CancellationToken cancellationToken) where TDocument : DocumentBase { using (var stream = _streamManager.GetStream()) { await _serializer.SerializeAsync(stream, document, cancellationToken); stream.Seek(0, SeekOrigin.Begin); using (var responseMessage = await _container.CreateItemStreamAsync( stream, new PartitionKey(document.PartitionId), null, cancellationToken)) { responseMessage.EnsureSuccessStatusCode(); document = await _serializer.DeserializeAsync <TDocument>( responseMessage.Content, cancellationToken); return(document); } } }
public async Task Test_Serialize_WritesToStream(int keyLength, int ivLength) { // Arrange Mock.Get(internalSerializerMock) .SetReturnsDefault(Task.CompletedTask); serializer = GetSerializer( Enumerable.Repeat((byte)0, keyLength), Enumerable.Repeat((byte)0, ivLength) ); var writeStream = new MemoryStream(); var testData = "ABC"; // Act await serializer.SerializeAsync( stream : writeStream, data : testData ); // Assert Assert.IsNotEmpty(writeStream.ToArray()); }