aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/controller
Commit message (Collapse)AuthorAgeFilesLines
* Use `Mime[:foo]` instead of `Mime::Type[:FOO]` for back compatJeremy Daer2015-10-068-32/+32
| | | | | | | | | | | | | | | | | Rails 4.x and earlier didn't support `Mime::Type[:FOO]`, so libraries that support multiple Rails versions would've had to feature-detect whether to use `Mime::Type[:FOO]` or `Mime::FOO`. `Mime[:foo]` has been around for ages to look up registered MIME types by symbol / extension, though, so libraries and plugins can safely switch to that without breaking backward- or forward-compatibility. Note: `Mime::ALL` isn't a real MIME type and isn't registered for lookup by type or extension, so it's not available as `Mime[:all]`. We use it internally as a wildcard for `respond_to` negotiation. If you use this internal constant, continue to reference it with `Mime::ALL`. Ref. efc6dd550ee49e7e443f9d72785caa0f240def53
* move file sending to the response objectAaron Patterson2015-10-051-1/+1
| | | | | | | Just a slight refactor that delegates file sending to the response object. This gives us the advantage that if a webserver (in the future) provides a response object that knows how to do accelerated file serving, it can implement this method.
* call `get` instead of controller.processAaron Patterson2015-09-231-12/+10
| | | | | we want the request to go through the test harness, not directly call the methods on the controller
* remove controller constructionAaron Patterson2015-09-231-8/+4
| | | | also remove req / res references
* stop directly referencing the request and response objectsAaron Patterson2015-09-231-23/+21
|
* test framework allocates the controller for usAaron Patterson2015-09-231-1/+0
|
* type of response should not matterAaron Patterson2015-09-231-6/+0
|
* don't touch the response object until after we call `get`Aaron Patterson2015-09-231-5/+2
|
* stop directly setting headers on the controllerAaron Patterson2015-09-231-9/+1
| | | | | again, since we are going through the test harness, all this is done for us.
* test against controller responsesAaron Patterson2015-09-231-52/+65
| | | | | | rather than calling methods on the controller. We should test the values returned by the controller rather than assuming that the internals are implemented in a certain way.
* don't access the response object before a request was madeAaron Patterson2015-09-231-1/+10
| | | | | | | It doesn't make sense to access the response object before a request is made (how was a response object created without making a request?) This commit splits testing default headers and default header mutation tests and removes access to the pre-request response object.
* Merge pull request #21703 from ronakjangir47/redirect_error_messagesJeremy Daer2015-09-211-2/+4
|\ | | | | Added assertion for error messages for redirection to nil and params
| * Added assertion for error messages for redirection to nil and params Ronak Jangir2015-09-211-2/+4
| | | | | | As both `redirect_to_nil` and `redirect_to_params` are raising same `ActionController::ActionControllerError` so it’s good to assert error messages as well
* | stop calling deprecated methodsAaron Patterson2015-09-217-31/+31
|/ | | | | We should be asking the mime type method for the mime objects rather than via const lookup
* Added test for `send_file_headers` called with nil content typeRonak Jangir2015-09-191-1/+12
|
* do not instantiate a param parser middlewareAaron Patterson2015-09-181-8/+12
| | | | | | we don't actually need a param parser middleware instance since the request object will take care of parsing parameters for us. For now, we'll just configure the parameter parsers on the request in this class.
* create a new renderer instance on calls to `for`Aaron Patterson2015-09-141-16/+3
| | | | | | | | | | | | This changes the renderer class to store the controller and defaults as an instance variable rather than allocating a new class. You can create a new renderer with an new env by calling `Renderer#new` or use new defaults by calling `Renderer#with_defaults` and saving the return value somewhere. Also I want to keep the `env` private since I would like to change the keys in the future. This commit only translates particular keys that the user requested.
* eagerly allocate the renderer objectAaron Patterson2015-09-141-0/+4
| | | | | this means the reader doesn't need to lock, but does have the added cost of a new object created for every controller
* Handle Content-Types that are not :json, :xml, or :url_encoded_formeileencodes2015-09-091-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In c546a2b this was changed to mimic how the browser behaves in a real situation but left out types that were registered. When this was changed it didn't take `text/plain` or `text/html` content types into account. This is a problem if you're manipulating the `Content-Type` headers in your controller tests, and expect a certain result. The reason I changed this to use `to_sym` is because if the `Content-Type` is not registered then the symbol will not exist. If it's one of the special types we handle that specifically (:json, :xml, or :url_encoded_form). If it's any registered type we handle it by setting the `path_parameters` and then the `request_parameters`. If the `to_sym` returns nil an error will be thrown. If the controller test sets a `Content-Type` on the request that `Content-Type` should remain in the header and pass along the filename. For example: If a test sets a content type on a post ``` @request.headers['CONTENT_TYPE'] = 'text/plain' post :create, params: { name: 'foo.txt' } ``` Then `foo.txt` should be in the `request_parameters` and params related to the path should be in the `path_parameters` and the `Content-Type` header should match the one set in the `@request`. When c546a2b was committed `text/plain` and `text/html` types were throwing a "Unknown Content-Type" error which is misleading and incorrect. Note: this does not affect how this is handled in the browser, just how the controller tests handle setting `Content-Type`.
* Merge pull request #21502 from ↵Rafael Mendonça França2015-09-081-0/+20
|\ | | | | | | | | | | bernerdschaefer/bs-polymorphic-url_for-dups-arguments `url_for` does not modify polymorphic options
| * `url_for` does not modify polymorphic optionsBernerd Schaefer2015-09-041-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `url_for` methods in `actionpack` and `actionview` now make a copy of the provided options before generating polymorphic paths or URLs. The bug in the previous behavior is most noticeable in a case like: url_options = [:new, :post, param: 'value'] if current_page?(url_options) css_class = "active" end link_to "New Post", url_options, class: css_class
* | Remove mocha from ActionPack testsMarcin Olichwirowicz2015-09-054-38/+56
|/
* Fix route creation when format is a blank stringeileencodes2015-09-021-0/+1
| | | | | | | | | | | | | | | | | Commit bff61ba, while reducing allocations, caused a regression when an empty format is passed to a route. This can happen in cases where you're using an anchor tag, for example: `https://example.com/parent/575256966.#child_1032289285`. Because of this change `format` was getting sent in `parameterized_parts` when previously it was not included. This resulted in blank `format`'s being returned as `.` when if there was an extension included it would be `.extension`. Since there was no extension this caused incorrect URL's. The test shows this would result in `/posts/show/1.` instead of `/posts/show/1` which causes bad urls since the format is not present.
* Set the content-type to `text/html` if the options[:html] is trueakihiro172015-08-291-1/+0
| | | | | | In this commit, we set the content-type to `text/html` in AbstractController if the `options[:html]` is true so that we don't include ActionView::Rendering into ActionController::Metal to set it properly. I removed the if `options[:plain]` statement because `AbstractController#rendered_format` returns `Mime::TEXT` by default.
* revises 877e42eXavier Noria2015-08-281-6/+6
| | | | | | | | | | | | | | | | | | | | | | * A string in the example lacked quotes. * The tests asserted stuff about :last_name, whereas test params do not have that key. * But, the first one passed, why? After hitting my head against the wall and doing some obscure rituals realized the new #require had an important typo, wanted to iterate over the array argument (key), but it ran over its own hash keys (method #keys). * Modified the test to prevent the same typo to happen again. * The second test assigned to an unused variable safe_params that has been therefore removed. * Grammar of the second test description. * Since I was on it, reworded both test descriptions.
* [Feature] params.require requires array of paramsGaurish Sharma2015-08-281-0/+17
| | | | | | | | | | | | | | | | | This PR adds ability to accept arrays which allows you to require multiple values in one method. so instead of this: ```ruby params.require(:person).require(:first_name) params.require(:person).require(:last_name) ``` Here it will be one line for each params, so say if I require 10params, it will be 10lines of repeated code which is not dry. So I have added new method which does this in one line: ```ruby params.require(:person).require([:first_name, :last_name]) ``` Comments welcome
* remove RackDelegation moduleAaron Patterson2015-08-262-4/+0
| | | | | | Since all controller instances are required to have a request and response object, RackDelegation is no longer needed (we always have to delegate to the response)
* include ActionView::Rendering in the minimal controllerAaron Patterson2015-08-261-0/+1
| | | | without this module, the content type is not set correctly
* Removed duplicate requiring minitest/mock as it is already required in ↵Ronak Jangir2015-08-261-1/+0
| | | | method_call_assertions
* provide a request and response to all controllersAaron Patterson2015-08-254-2/+6
| | | | | | | | | | Controllers should always have a request and response when responding. Since we make this The Rule(tm), then controllers don't need to be somewhere in limbo between "asking a response object for a rack response" or "I, myself contain a rack response". This duality leads to conditionals spread through the codebase that we can delete: * https://github.com/rails/rails/blob/85a78d9358aa728298cd020cdc842b55c16f9549/actionpack/lib/action_controller/metal.rb#L221-L223
* Fix another rack SPEC violationAaron Patterson2015-08-251-1/+1
|
* rack SPEC doesn't allow `first` on the bodyAaron Patterson2015-08-251-8/+12
| | | | collect the body and make assert against the collected body
* Merge pull request #21368 from rodzyn/remove_mochaKasper Timm Hansen2015-08-252-121/+177
|\ | | | | Get rid of mocha tests in actionpack - part 2
| * Get rid of mocha tests - part 2Marcin Olichwirowicz2015-08-252-121/+177
| |
* | Merge pull request #21366 from amitsuroliya/remove_unused_variableRafael Mendonça França2015-08-251-12/+12
|\ \ | | | | | | Remove more unused block arguments
| * | Remove more unused block arguments amitkumarsuroliya2015-08-251-12/+12
| | |
* | | Merge pull request #21345 from aditya-kapoor/trim-apRafael Mendonça França2015-08-251-4/+4
|\ \ \ | |/ / |/| | Trim out least needed controllers from AP test suite
| * | Trim out unneeded controllers from AP test suiteAditya Kapoor2015-08-241-4/+4
| | |
* | | Merge pull request #21094 from aditya-kapoor/add-missing-ap-testsRafael Mendonça França2015-08-251-0/+10
|\ \ \ | | | | | | | | add missing test for action regexp for routing
| * | | add missing tests for action regexpAditya Kapoor2015-08-021-0/+10
| | | |
* | | | remove more direct `env` mutationsAaron Patterson2015-08-241-1/+1
| | | |
* | | | use `make_set` helper method to generate route setsAaron Patterson2015-08-241-31/+1
| | | | | | | | | | | | | | | | We should keep the route set generation logic in one place
* | | | Merge pull request #21355 from akihiro17/remove-variablesRafael Mendonça França2015-08-241-2/+2
|\ \ \ \ | |_|_|/ |/| | | Remove unused variables
| * | | Remove unused variablesakihiro172015-08-241-2/+2
| | |/ | |/|
* / | Get rid of mocha tests - part 1Marcin Olichwirowicz2015-08-243-45/+60
|/ /
* | Merge pull request #21106 from amitsuroliya/fix_routing_testAndrew White2015-08-211-6/+0
|\ \ | | | | | | Remove duplicity in tests
| * | Remove duplicity in testsamitkumarsuroliya2015-08-031-6/+0
| |/
* | test the verb method on the route, specificallyAaron Patterson2015-08-171-1/+1
| |
* | routes are always constructed with a hash for the conditionsAaron Patterson2015-08-171-1/+1
| |
* | Merge pull request #21203 from denniss/issue-21199Sean Griffin2015-08-111-0/+8
|\ \ | | | | | | Authorization scheme should be case insensitive. Fixes #21199