public async void Able_To_Retrieve_Data_By_Id() { // Store so that we can retrieve var provider = new InMemoryFileStorageProvider(); var testFile = new Dtos.File { Id = Guid.NewGuid().ToString(), Data = TestDataStream(), Metadata = TestMetadata(), }; var success = await provider.StoreFileAsync(testFile); Assert.NotNull(success); Assert.IsType <bool>(success); Assert.True(success); // Now, proceed to retrieve. var retrievedFile = await provider.RetrieveFileAsync(testFile.Id); Assert.NotNull(retrievedFile); Assert.NotEmpty(retrievedFile.Metadata); // expect 1 entry Assert.True(retrievedFile.Data.Length > 0); }
public async Task <bool> StoreFileAsync(Dtos.File file) { // Validate: if (file == null) { throw new ArgumentNullException("file"); } if (file.Id == null) { throw new ArgumentNullException("file.Id"); } if (file.Data == null) { throw new ArgumentNullException("file.Data"); } // (file.Metadata can be null) // Continue: var fileData = file.Data; // Copy to local memory stream and get raw bytes to store var memStream = new MemoryStream(); await fileData.CopyToAsync(memStream); var rawData = memStream.ToArray(); try { _data.TryAdd(file.Id, new Dtos.InMemoryFile { Id = file.Id, Data = rawData, Metadata = file.Metadata, }); return(true); } catch (OverflowException e) { // The dictionary is full. return(false); } }
public async void Able_To_Store_File() { var provider = new InMemoryFileStorageProvider(); var testFile = new Dtos.File { Id = Guid.NewGuid().ToString(), Data = TestDataStream(), Metadata = TestMetadata(), }; var success = await provider.StoreFileAsync(testFile); Assert.NotNull(success); Assert.IsType <bool>(success); Assert.True(success); }