コード例 #1
0
        public void AcceptsApplicationWwwFormUrlEncoded()
        {
            var mockContext = new Mock <IAbstractModelApplicationRequestContext>();

            mockContext.Setup(c => c.ContentType).Returns("application/x-www-form-urlencoded");

            var applicator = new FormDataAbstractModelApplicator();

            Assert.IsTrue(applicator.ContentTypes.Contains("application/x-www-form-urlencoded"));
            Assert.IsTrue(applicator.Handles(mockContext.Object));
        }
コード例 #2
0
        public void AcceptsMultiPartFormData()
        {
            var mockContext = new Mock <IAbstractModelApplicationRequestContext>();

            mockContext.Setup(c => c.ContentType).Returns("multipart/form-data");

            var applicator = new FormDataAbstractModelApplicator();

            Assert.IsTrue(applicator.ContentTypes.Contains("multipart/form-data"));
            Assert.IsTrue(applicator.Handles(mockContext.Object));
        }
コード例 #3
0
        public void ApplyMultiPartFormData()
        {
            var formCollection = new FormCollection(new Dictionary <string, StringValues>
            {
                { "foo", "bar" },
                { "multi", new[] { "one", "two" } }
            });

            var mockContext = new Mock <IAbstractModelApplicationRequestContext>();

            mockContext.Setup(c => c.ContentType).Returns("multipart/form-data");
            mockContext.Setup(c => c.Form).Returns(formCollection);

            var applicator    = new FormDataAbstractModelApplicator();
            var abstractModel = new AbstractModel();

            Assert.IsTrue(applicator.Handles(mockContext.Object));
            applicator.ApplyAsync(mockContext.Object, abstractModel, CancellationToken.None).Wait();

            Assert.AreEqual(0, abstractModel.ValueCount);
            Assert.AreEqual(2, abstractModel.ChildCount);

            var foo = abstractModel["foo"];

            Assert.IsNotNull(foo);
            Assert.AreEqual(0, foo.ChildCount);
            Assert.AreEqual(1, foo.ValueCount);
            Assert.AreEqual("bar", foo.Values[0]);

            var multi = abstractModel["multi"];

            Assert.IsNotNull(multi);
            Assert.AreEqual(0, multi.ChildCount);
            Assert.AreEqual(2, multi.ValueCount);
            Assert.AreEqual("one", multi.Values[0]);
            Assert.AreEqual("two", multi.Values[1]);
        }
コード例 #4
0
        public void ApplyFileUploads()
        {
            var fileFormCollection = new FormFileCollection
            {
                new FormFile(new MemoryStream(), 0, 25, null, "filename.txt")
                {
                    Headers = new HeaderDictionary(new Dictionary <string, StringValues>
                    {
                        { "Content-Disposition", "form-data; filename=\"filename.txt\"; name=\"name\"" }
                    })
                }
            };

            var formCollection = new FormCollection(new Dictionary <string, StringValues>(), fileFormCollection);

            var mockContext = new Mock <IAbstractModelApplicationRequestContext>();

            mockContext.Setup(c => c.Form).Returns(formCollection);

            var applicator    = new FormDataAbstractModelApplicator();
            var abstractModel = new AbstractModel();

            applicator.ApplyAsync(mockContext.Object, abstractModel, CancellationToken.None).Wait();

            Assert.AreEqual(0, abstractModel.ValueCount);
            Assert.AreEqual(1, abstractModel.ChildCount);

            var name = abstractModel["name"];

            Assert.IsNotNull(name);
            Assert.AreEqual(0, name.ChildCount);
            Assert.AreEqual(1, name.ValueCount);
            Assert.IsNotNull(name.Values[0]);
            Assert.IsInstanceOfType(name.Values[0], typeof(IFormFile));
            Assert.AreEqual("filename.txt", ((IFormFile)name.Values[0]).FileName);
        }