Commit Graph

1606 Commits

Author SHA1 Message Date
John Luo c68f742dd0 Disabling hanging FlushPoint test 2016-01-08 11:56:31 -08:00
Ajay Bhargav Baaskaran bf1fcf6b56 Return BadRequest response when antiforgery token validation fails 2016-01-08 10:35:00 -08:00
John Luo 8afe28c05d Updating tests to add options to services 2016-01-07 23:54:55 -08:00
Ryan Nowak c304984a8d Fix #3501 - Issues with Flush
Calling Flush[Async]() on the writer will NOT flush the stream.
Calling Flush[Async]() in Razor will flush both the writer and the stream.

Our normal flow will be to flush the writer, but not the stream. This
avoids chunking, but allows us to do a WriteAsync on the stream as part of
the call to FlushAsync. This is done to avoid a synchronous write due to
Dispose calling Flush on the writer, which needs to call Write on the
stream.

See issue for extensive background.
2016-01-07 14:52:22 -08:00
Ryan Nowak 676bde29b9 Make Begin[Route]Form include antiforgery 2016-01-07 13:24:01 -08:00
N. Taylor Mullen 2b83dbb52e Make `ExpressionRewriter` more resilient to unconvertible types.
#3825
2016-01-07 11:41:14 -08:00
Pranav K dc878f2777 Capture exceptions thrown during compilation
Fixes #3870
2016-01-07 11:21:45 -08:00
Ryan Nowak ff00c07b85 Rename ActionDescriptorsCollection
ActionDescriptorsCollection -> ActionDescriptorCollection
2016-01-07 10:26:12 -08:00
Pranav K 9168cd1f37 Optimize allocations in Script/Link TagHelpers
Fixes #3618
2016-01-07 09:56:24 -08:00
Ryan Nowak a500a93dfb Smarter antiforgery
Adds the concept of an IAntiforgeryPolicy marker interface as well as
the ability to overide policy with a 'closer' filter.

Adds a new [IgnoreAntiforgeryToken] attribute for overriding a scoped
antiforgery policy.

Adds a new [AutoValidateAntiforgeryToken] attribute (good name tbd) for
applying an application-wide antiforgery token. The idea is that you can
configure this as a global filter if your site is acting as a pure
browser-based or 1st party SPA. This new attribute only validates the
token for unsafe HTTP methods, so you can apply it broadly.
2016-01-05 17:24:33 -08:00
Pranav K 0a2b6205c9 Reacting to Routing changes 2016-01-05 12:05:20 -08:00
Ryan Nowak 4141fcae69 Optimize MvcRouteHandler
- Check MVC services once at startup
- Make action selector sync

We've never really had a scenario for the action selector being async, it
just ended up that way. None of our extensibility here lets you do
anything async without replacing it wholesale, which we don't
recommend.
2016-01-05 11:31:43 -08:00
Ajay Bhargav Baaskaran 47a3aee2c1 [Fixes #3361] Changed the value provider preference to be backwards compatible 2016-01-04 12:55:35 -08:00
Ajay Bhargav Baaskaran 1f87442092 [Fixes #3749] Expose ActionContext on IUrlHelper 2016-01-04 10:33:42 -08:00
Doug Bunting 568b061441 Mock `HttpContext`, not `DefaultHttpContext`
- build break
- recent HttpAbstractions changes made `DefaultHttpContext` harder to mock (would need `CallBase=true`)
2016-01-03 14:25:42 -08:00
Pranav K 7d5a68b9ae Reacting to IHtmlContentBuilder changes 2015-12-31 11:52:26 -08:00
Ryan Nowak 51564d04c0 Remove a test that tests Dictionary
This test is coupled to Dictionary<>'s error message. We don't need this.
2015-12-30 16:55:51 -08:00
Kiran Challa 7a955bcbc0 FormatFilter overrides content type set explicitly by the developer 2015-12-30 13:20:56 -08:00
Pranav K aab051a20f Rename DictionaryBasedValueProvider to RouteValueProvider
Fixes #3629
2015-12-29 18:51:47 -08:00
Pranav K 2b9dd76535 Make RazorViewEngineOptions.FileProvider a list instead of a single item
Fixes #3806
2015-12-29 14:47:15 -08:00
Ryan Nowak d222900662 Optimize allocations in argument binder
This change avoids a state machine allocation and a dictionary allocation
on the common case (no bound properties). Ugly? You bet. Worth it? Yeah,
seems worthwhile.

This is worth about 200 bytes/request - about 3% of allocated bytes in a
smallish API scenario.
2015-12-29 09:26:59 -08:00
Ryan Nowak 0a9804056e Use System.Buffers for JSON.NET 2015-12-29 08:26:55 -08:00
Ryan Nowak 85a4c7edc5 React to changes in routing 2015-12-28 10:15:50 -08:00
Pranav K 43226fe54d Modify FileVersionProvider to cache missing file info.
Fixes #3765
2015-12-23 14:32:39 -08:00
John Luo b7d95d813d Reacting to middleware configureOptions updates 2015-12-23 12:27:57 -08:00
Pranav K 399e516065 Modify IViewComponentHelper to remove method selection ambiguity.
Fixes #612
2015-12-23 10:02:51 -08:00
damianedwards ce0e35ff75 Make ViewLocalizer base name generation more efficient:
- Because @pranavkm made me do it
- And it is actually faster and less allocating than the old code (~25% faster)
- Added some more test cases
2015-12-21 16:25:35 -08:00
Hao Kung 9364f896b3 Options renames for functionals 2015-12-21 16:18:22 -08:00
Hao Kung 0e8113e393 OptionsModel => Options rename 2015-12-21 15:00:31 -08:00
damianedwards 1529c868f2 Improve ViewLocalizer resource look-up semantics:
- Always prepend with application name and let underlying `IStringLocalizerFactory` do the name gymnastics
- Use ExecutingFilePath instead of view name
- Trim off the file extension (so your resource doesn't have to have ".cshtml" in its name)
- Improved doc comments
- Added tests to cover ViewLocalizer behavior
- #3718
- #2767
2015-12-21 14:22:32 -08:00
Kiran Challa d77655fb73 MVC Controller Response - Wrong ContentType #3245 2015-12-21 11:25:45 -08:00
Pranav K f56cf97805 Simplifying MvcTestFixture 2015-12-19 21:57:51 -08:00
N. Taylor Mullen 00722ce91a Remove `FilesWebSite` webroot. 2015-12-18 16:04:22 -08:00
Pranav K 7dac5c711b Reacting to Hosting changes 2015-12-18 15:59:42 -08:00
N. Taylor Mullen aa7ebb343a Update half of the test websites to use new Hosting API conventions.
https://github.com/aspnet/KestrelHttpServer/pull/496
2015-12-18 15:35:13 -08:00
Ryan Nowak 8fb187bf09 Use system.buffers for our reader/writer 2015-12-18 09:27:36 -08:00
Pranav K 5f66403248 Remove TextWriter.ToString from RazorPage
Fixes #3668
2015-12-18 09:12:28 -08:00
Pranav K c5b6efd6bf Move buffer types to ViewFeatures
Use buffer pooling in more places
2015-12-17 21:05:18 -08:00
damianedwards 0c3e7b5a75 Improve usability of IHtmlLocalizer & associated API:
- IHtmlLocalizer no longer derives from IStringLocalizer
- IHtmlLocalizer indexer now returns LocalizedHtmlString
- IHtmlLocalizer has GetString methods now that act the same as IStringLocalizer.GetString
- Made LocalizedHtmlString a struct to match LocalizedString
- Updated samples in response to aspnet/Localization#167
- Rename "ancestor" to "parent" for loc API
- Fixes some doc comments
- Fixed tests
- #3716
2015-12-17 16:35:19 -08:00
Pranav K a036ff4738 Reacting to DI changes 2015-12-17 12:03:29 -08:00
ryanbrandenburg 70f9431e7f * Fix test failure 2015-12-16 17:21:25 -08:00
ryanbrandenburg 6a16681ed4 * Replace MvcMinimalSample with functional test 2015-12-16 15:18:25 -08:00
Ajay Bhargav Baaskaran 43eb621d19 [Fixes #2743] Removed ErrorReporterMiddleware in some places 2015-12-16 14:39:35 -08:00
Doug Bunting 3d8225502f Change `HtmlString` to inherit from `HtmlEncodedString`
- part of aspnet/HtmlAbstractions#5 fix
- also extend existing special cases to more general `HtmlEncodedString`
2015-12-16 12:42:13 -08:00
Ajay Bhargav Baaskaran 232b27ad5d [Fixes #3430] Removed RouteKeyHandling.CatchAll 2015-12-16 11:57:22 -08:00
Pranav K 7c40759e32 Reacting to Routing changes 2015-12-16 11:49:20 -08:00
javiercn c61cc65db3 [Fixes #3705] Bring back render partial 2015-12-15 12:20:06 -08:00
Ajay Bhargav Baaskaran bbba9dcde6 [Fixes #3524] Handle negative long values in TempData correctly 2015-12-15 00:17:37 -08:00
Doug Bunting 900663bfdd Make `project.json` formatting consistent 2015-12-14 21:51:04 -08:00
Doug Bunting 59824dc7be MVC functional test cleanup (part 1)
- #3612 subpart 2 of 2
- merge `ActionConstraintsWebSite`, `AntiforgeryTokenWebSite` and `ContentNegotiationWebSite` into `BasicWebSite`
  - remove tests depending on `ErrorReporterMiddleware` in merged sites; not used in `BasicWebSite`
- delete `CompositeViewEngineWebSite`, `Microsoft.AspNet.Mvc.ViewEngines.CompositeViewEngineTest` covers cases
- delete `CorsMiddlewareWebsite`, soon to be in Cors repo (see aspnet/CORS#57)
- remove `SendFileMiddleware` from FilesWebSite, unused there
2015-12-14 21:50:55 -08:00
Doug Bunting 1b7e67211f Do not override default `Layout` value
- #3745
2015-12-14 19:09:57 -08:00
N. Taylor Mullen 29ea696c5a Add `Model` assessor to `ViewResult` for MVC5 portability.
#3495
2015-12-14 16:16:41 -08:00
Ryan Nowak 1126d47b3e React to breaking changes in RouteBuilder 2015-12-14 14:40:38 -08:00
Ryan Nowak a2393f21be Adds ControllerBase to Mvc.Core
This change adds a base class for controllers to Mvc.Core that can be used
without a dependency on views, json, etc.

Most of the functionality on Controller moves to ControllerBase. I kept
the IActionFilter and IDisposable functionality on Controller since it's
not really a fit with the 'minimal' philosophy.
2015-12-14 10:29:55 -08:00
Ryan Nowak ad3c460500 React to breaking in IRouteConstraint 2015-12-14 10:08:09 -08:00
Ryan Nowak ee6ef3f25f Last part of #3676
Uses the correct IEnumerable<> in validation strategies
2015-12-14 08:52:44 -08:00
Doug Bunting 8a310b35a4 Update to latest `UseRequestLocalization()` signature
- build break

nit: add more trailing commas in init syntax
2015-12-11 22:58:13 -08:00
Pranav K 56c6975a21 Tweak CacheTagHelper sample to use a token provider service for
cache expiration.

Fixes #3573
2015-12-11 15:23:34 -08:00
Doug Bunting 19e6fb5719 MVC functional test cleanup part 1
- #3612 (subpart 1 of 2)
- delete six sites and associated tests entirely
  - `ActionResultsWebSite`
  - `ActivatorWebSite`
  - `ControllerDiscoveryConventionsWebSite`
  - `LoggingWebSite`
  - `LowercaseUrlsWebSite`
  - `ModelBindingWebSite`, now covered in integration tests
  - remove now-unused `FilteredDefaultAssemblyProviderFixture`, `LoggingAssert` and `LoggingExtensions`
- move six test web sites into `./samples`
  - `CustomRouteWebSite` -> `CustomRouteSample.Web`
  - `FormatFilterWebSite` -> `FormatFilterSample.Web`
  - `InlineConstraintsWebSite` -> `InlineConstraintSample.Web` (now singular)
  - `JsonPatchWebSite` -> `JsonPatchSample.Web`
  - `LocalizationWebSite` -> `LocalizationSample.Web`
  - `RazorEmbeddedViewsWebSite` -> `EmbeddedViewSample.Web` (no longer "Razor" and now singular)
  - do some cleanup: remove test dependencies, shorten sample controller names, use more attribute routing
- correct "license" spelling in `ApplicationModelWebSite`
2015-12-11 13:13:41 -08:00
ryanbrandenburg 3393ba43c2 * Parameters into the messages 2015-12-11 12:05:44 -08:00
Kiran Challa a208c95a4f Deleted stale files from earlier deleted test website UrlHelperWebSite 2015-12-11 11:12:52 -08:00
Ryan Nowak ed93a6c812 React to routing breaking changes 2015-12-11 09:30:51 -08:00
Kiran Challa f2bb90fa55 Fix localization tests 2015-12-10 22:37:20 -08:00
Kiran Challa 57b88baad0 [Fixes #3624] MVC functional test cleanup (part 2) 2015-12-10 16:26:39 -08:00
Pranav K 3a7c9c73ed Enabling CoreCLR tests on Travis 2015-12-09 15:20:15 -08:00
Ryan Nowak 96de1dbe4b Remove IExcludeTypeFilter
- Removes IExcludeTypeFilter
- Replaced with a property 'ValidateChildren' on ModelMetadata
- Teach ValidationVisitor to respect 'ValidateChildren' for enumerable
  types.
2015-12-09 12:30:13 -08:00
Ryan Nowak cf6662d0c3 Partial fix for #3676 - fix race in ElementMetadata
The accessor for ElementMetadata can sometimes return null when
concurrently accessed.

This change solves this issue and simplified a bunch of lazy-computed
properties, by precomputing all type-related facets of ModelMetadata.

This also adds a ElementType property to ModelMetadata to maintain
the current separation of concerns as ModelMetadata is unaware of the
metadata provider.
2015-12-09 08:21:18 -08:00
Pranav K 218613bc0a Reacting to Diagnostics changes 2015-12-08 15:10:59 -08:00
Kiran Challa ceaa9a9251 Add test coverage for Flags enum binding 2015-12-07 17:18:06 -08:00
John Luo f9f59fe58b Reacting to verbose rename 2015-12-07 14:50:54 -08:00
Ryan Nowak 09a293afe9 React to routing cleanup 2015-12-07 13:08:13 -08:00
David Fowler 99f501152b Remove dependency on ICompilationOptionsProvider
- Removed Configuration from RazorViewEngineOptions
- Added ParseOptions and CompilationOptions to RazorViewEngineOptions
2015-12-07 12:29:52 -08:00
Kristian Hellang e1bfc6b48e React to changes to FormFile 2015-12-04 20:40:39 +01:00
Pranav K ff34c5404a Implement a backing-buffer for Razor using pooled memory
Fixes #3532
2015-12-03 17:42:20 -08:00
Doug Bunting 1f76b3c7b7 Clean up remaining `HtmlString` usage
- #3122 and #3123 (5 of 5)
- avoid concatenating values and wrapping them in an `HtmlString`
  - switch from `string.Format()` to `AppendHtml()` in `LinkTagHelper`
  - simplify `RazorPage` and `TagHelperContentExtensions` e.g. don't use a `TagHelperContentWrapperTextWriter`
  - add some special cases in `UrlResolutionTagHelper`
- add `TagBuilder` and `StringHtmlContent` special cases to avoid `StringWriter` use when value is an `HtmlString`
- move `HtmlTextWriter` optimizations a bit lower and add missing checks for that type

nits:
- correct comments that incorrectly mention `HtmlString`s
- update comments in `JavaScriptStringArrayEncoder`
2015-12-03 15:37:44 -08:00
Kiran Challa dd774366f6 Addressed feedback 2015-12-03 14:42:14 -08:00
Kiran Challa 6712f9d9ff Deleted ValueProvidersWebSite and tests 2015-12-03 14:42:13 -08:00
Kiran Challa 9539c373ba Deleted ViewComponentWebSite and tests 2015-12-03 14:42:12 -08:00
Kiran Challa 9288ab1a34 Removed TempDataWebsite and merged to BasicWebsite and fixed tests 2015-12-03 14:42:11 -08:00
Kiran Challa 3c694ce77c Movig RequestServicesWebsite to BasicWebsite 2015-12-03 14:42:10 -08:00
Pavel Krymets 362c81e9bb React to abstraction changes 2015-12-03 14:26:43 -08:00
Pavel Krymets 046dcefd14 Add extensibility point to Razor compilation 2015-12-03 12:04:07 -08:00
Doug Bunting 42f3e764b0 Move logic from `HtmlLocalizer` to `LocalizedHtmlString`
- part of #3123 (4 of 5)
- `LocalizedHtmlString` should not subclass `HtmlString`; now implements `IHtmlContent`

nits:
- clean up a few doc comments
- remove duplicate tests reported while testing these fixes in VS
2015-12-02 18:39:37 -08:00
Ryan Nowak 9fc3a80056 Remove IActionContextAccessor from UrlHelper
This change removes the IActionContextAccessor as a dependency of
UrlHelper, and shifts UrlHelper to use a factory pattern. Consumers of
IUrlHelper should create an instance using the factory when needed.

This is the last part of MVC that has a dependency on IActionContext
accessor. As part of this change we no longer register it by default, and
treat it as an optional component.
2015-12-02 17:09:43 -08:00
Brennan 3062eea7d0 Dispose FileWatcher, MvcRazorHost, and ChunkTree 2015-12-02 13:07:45 -08:00
Pranav K 6ab9acc3f6 React to Microsoft.AspNet.Html namespace rename part 2 2015-12-02 11:32:21 -08:00
Pranav K 7e2eb16960 React to Microsoft.AspNet.Html namespace rename 2015-12-02 11:15:54 -08:00
Ryan Nowak 07085ca69b Remove IHttpContextAccessor from TempData
This change removes the dependency of TempData on the IHttpContextAccessor
by creating an ITempDataDictionaryFactory abstraction. In general, no one
will replace the factory, it's just indirection.

This allows us to drop our dependency on IHttpContextAccessor, and move it
to the functional tests where we specifically depend on it.

The bulk of code churn here is to update tests that use TempData.
2015-12-02 08:18:57 -08:00
Pranav K 70bdb6eb3e Removing CopyTo from RazorTextWriter 2015-12-01 12:37:11 -08:00
apxoht 7e1a6222aa Removed unused private method in DefaultActionSelector 2015-11-30 17:14:28 -08:00
Ryan Nowak 6875ee55d3 Remove Magic Link Generation
This change resolves #3512 and #3636 by removing 'magic' link generation
and adding an extension method to add routes to areas correctly using the new
pattern. This is pretty much exactly the same as how MapWebApiRoute works.

For site authors, we recommend adding area-specific routes in a way that
includes a default AND constraint for the area. Put your most specific
(for link generation) routes FIRST.

Ex:

  routes.MapRoute(
      "Admin/{controller}/{action}/{id?}",
      defaults: new { area = "Admin" },
      constraints: new { area = "Admin" });

The bulk of the changes here are to tests that unwittingly relied on the
old behavior.
2015-11-30 11:24:23 -08:00
ryanbrandenburg 91e837d465 * Debug log exceptions in JsonInput deserializing 2015-11-30 11:19:22 -08:00
ryanbrandenburg d22d6793ba * Include DisplayName in errorMessage 2015-11-30 11:18:14 -08:00
Pranav K c5346f7bf9 Use string.IsNullOrEmpty instead of string.IsNullOrWhitespace
Fixes #3593
2015-11-30 10:00:44 -08:00
N. Taylor Mullen 490fcf1ab4 Remove the use of `Linq` and unneeded enumerators from Mvc `TagHelper`s.
- Prior to this change we were using `Linq` throughout our `TagHelper`s which resulted excess allocations.
- Also went through our data structures and changed some from `Enumerable<T>` to `IList<T>` where we were just not exposing the more accessible types (list).
- Changed several locations of `foreach` to `for` to remove the enumerator allocation.

#3599
2015-11-25 21:31:24 -08:00
Ryan Nowak a14fdd8637 Remove FormatFilter dependency on IActionContextAccessor
This change simplifies IFormatFilter's API and removes the dependency on
IActionContext accessor.

The old API for IFormatFilter required computing state based on the
current request as part of the constructor, which in turn implied the use
of a context accessor. This isn't really needed. I didn't preserve caching of
the 'format' as that seems like an early optimization.
2015-11-25 17:01:16 -08:00
Ryan Nowak d8cc2b85d5 Adds ActionContext to Validation contexts
This change makes it possible to access the ActionContext/ActionDescriptor
from inside of validators and client validators.
2015-11-25 16:38:26 -08:00
Pranav K 017bf1a20f Changes to use moq-netcore 2015-11-25 16:04:04 -08:00
Ryan Nowak 0832365ec2 Adds ActionContext to OperationBindingContext
This change makes it possible to access the ActionContext/ActionDescriptor
from inside of modelbinding.
2015-11-25 15:17:09 -08:00
Kiran Challa 31e42ee312 [Fixes #3433] Invalid media type 'text/plain; charset=utf-8' 2015-11-25 10:50:40 -08:00