aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/controller
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | 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
| * | | | Authorization scheme should be case insensitive. Fixes #21199Dennis Suratna2015-08-111-0/+8
| | | | |
* | | | | Refactor route assertion methods in resources testeileencodes2015-08-081-50/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The tests and methods were hard to read with `options[:options]` all over the place. This refactoring makes the code easier to understand. The change came out of work for moving the underlying code of controller tests to integraiton tests.
* | | | | remove vestigial codeAaron Patterson2015-08-071-43/+0
| | | | | | | | | | | | | | | | | | | | | | | | | Looks like this was left over from converting Rails to Rack. I think it's safe to remove now.
* | | | | finish deprecating handling strings and symbolsAaron Patterson2015-08-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | since we only work with instances of classes, it greatly simplifies the `Middleware` implementation.
* | | | | do not add common ports to HTTP_HOSTMichael Grosser2015-08-061-0/+19
|/ / / / | | | | | | | | | | | | | | | | - webservers do not do it - it makes redirect urls ugly when request.host is used for redirection
* / / / Add missing assertion for test_route_with_colon_firstAditya Kapoor2015-08-031-2/+4
|/ / /
* | | Fix state being carried over from previous transactionRoque Pinel2015-07-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This clears the transaction record state when the transaction finishes with a `:committed` status. Considering the following example where `name` is a required attribute. Before we had `new_record?` returning `true` for a persisted record: ```ruby author = Author.create! name: 'foo' author.name = nil author.save # => false author.new_record? # => true ```
* | | Fix exception overwritten for parameters fetch methodRoque Pinel2015-07-181-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | When executing an `ActionController::Parameters#fetch` with a block that raises a `KeyError` the raised `KeyError` will be rescued and converted to an `ActionController::ParameterMissing` exception, covering up the original exception. [Jonas Schubert Erlandsson & Roque Pinel]
* | | Stop using deprecated `render :text` in testPrem Sichanugrist2015-07-1725-186/+186
| | | | | | | | | | | | | | | | | | | | | | | | | | | This will silence deprecation warnings. Most of the test can be changed from `render :text` to render `:plain` or `render :body` right away. However, there are some tests that needed to be fixed by hand as they actually assert the default Content-Type returned from `render :body`.
* | | Add deprecation warning for `render :text`Prem Sichanugrist2015-07-171-11/+42
| | | | | | | | | | | | | | | | | | We've started on discouraging the usage of `render :text` in #12374. This is a follow-up commit to make sure that we print out the deprecation warning.
* | | Skip a few failing tests on JRuby with the attached ticketsRobin Dupret2015-07-171-0/+4
| | |
* | | Make AC::Parameters not inherited from HashPrem Sichanugrist2015-07-155-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | This is another take at #14384 as we decided to wait until `master` is targeting Rails 5.0. This commit is implementation-complete, as it guarantees that all the public methods on the hash-inherited Parameters are still working (based on test case). We can decide to follow-up later if we want to remove some methods out from Parameters.
* | | Merge pull request #20866 from jdantonio/countdown-latchAaron Patterson2015-07-141-14/+14
|\ \ \ | | | | | | | | Replace `ActiveSupport::Concurrency::Latch` with `Concurrent::CountDownLatch` from concurrent-ruby.