Пример #1
0
        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);
            }
        }
Пример #2
0
 public CreateFileHandler(ContextAdapter context, ITusCreationStore creationStore)
     : base(context, IntentType.CreateFile, LockType.NoLock)
 {
     _creationStore    = creationStore;
     _expirationHelper = new ExpirationHelper(context.Configuration);
 }