public async Task UploadMetadata_Is_Saved_If_Provided() { const string metadata = "filename d29ybGRfZG9taW5hdGlvbl9wbGFuLnBkZg==,othermeta c29tZSBvdGhlciBkYXRh"; ITusCreationStore tusStore = null; using (var server = TestServerFactory.Create(app => { tusStore = Substitute.For <ITusCreationStore, ITusStore>(); tusStore.CreateFileAsync(1, null, CancellationToken.None).ReturnsForAnyArgs("fileId"); app.UseTus(request => new DefaultTusConfiguration { Store = (ITusStore)tusStore, UrlPath = "/files" }); })) { var response = await server .CreateRequest("/files") .AddTusResumableHeader() .AddHeader("Upload-Length", "1") .AddHeader("Upload-Metadata", metadata) .PostAsync(); response.StatusCode.ShouldBe(HttpStatusCode.Created); var createFileAsyncCall = tusStore .ReceivedCalls() .FirstOrDefault(f => f.GetMethodInfo().Name == nameof(tusStore.CreateFileAsync)); createFileAsyncCall.ShouldNotBeNull("No call to CreateFileAsync occurred."); // ReSharper disable once PossibleNullReferenceException createFileAsyncCall.GetArguments()[1].ShouldBe(metadata); } }
public CreateFileHandler(ContextAdapter context, ITusCreationStore creationStore) : base(context, IntentType.CreateFile, LockType.NoLock) { _creationStore = creationStore; _expirationHelper = new ExpirationHelper(context.Configuration); }