This is a simple example of strong parameters in Rails (Rails 4 or Rails 3.2 with the strong_parameters gem). The test demonstrates that the Account's name attribute can be updated via the update action, but its balance cannot. The system works.
However, how far should we take these kinds of tests? Now that we've moved this responsibility from the model to the controller, should we invest in controller specs/tests to:
- ensure that all permitted attributes can be updated?
- ensure that any forbidden attributes cannot be updated?
Is there a good, clean, expressive way to test the private account_params method in the controller, to verify the contents of the whitelist rather than the effects of the whitelist? I've used shoulda-style "should(_not) allow_mass_assignment_of" macros in the past. There doesn't appear to be anything analogous for strong_parameters yet.
@freerobby Good point, I absolutely do not want to test Rails in my app's tests. The expectation syntax is pretty noisy and not very expressive, but a little DSL/macro could wrap it pretty easily I think.