radiant 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of radiant might be problematic. Click here for more details.
- data/CHANGELOG +33 -1
- data/CONTRIBUTORS +15 -2
- data/INSTALL +9 -7
- data/README +11 -7
- data/app/controllers/admin/layouts_controller.rb +5 -2
- data/app/controllers/admin/pages_controller.rb +8 -5
- data/app/controllers/admin/snippets_controller.rb +5 -2
- data/app/controllers/application_controller.rb +7 -0
- data/app/helpers/admin/node_helper.rb +2 -2
- data/app/helpers/application_helper.rb +2 -2
- data/app/models/radiant/config.rb +36 -4
- data/app/models/standard_tags.rb +1 -1
- data/app/views/admin/layouts/index.html.haml +15 -12
- data/app/views/admin/page_parts/_page_part.html.haml +2 -2
- data/app/views/admin/pages/index.html.haml +1 -1
- data/app/views/admin/snippets/_form.html.haml +1 -1
- data/app/views/admin/snippets/index.html.haml +14 -10
- data/config/database.db2.yml +20 -0
- data/config/environment.rb +4 -4
- data/config/environments/test.rb +1 -2
- data/features/support/env.rb +2 -1
- data/lib/generators/extension/extension_generator.rb +5 -0
- data/lib/generators/extension/templates/RSpecRakefile +11 -8
- data/lib/generators/extension/templates/cucumber.yml +1 -0
- data/lib/generators/extension/templates/cucumber_env.rb +16 -0
- data/lib/generators/extension/templates/cucumber_paths.rb +14 -0
- data/lib/generators/extension/templates/extension.rb +1 -1
- data/lib/generators/instance/instance_generator.rb +1 -1
- data/lib/generators/instance/templates/databases/db2.yml +40 -0
- data/lib/generators/instance/templates/instance_environment.rb +6 -6
- data/lib/local_time.rb +3 -9
- data/lib/radiant.rb +1 -1
- data/lib/radiant/cache.rb +10 -8
- data/lib/radiant/extension.rb +36 -0
- data/lib/radiant/extension/script.rb +1 -1
- data/lib/radiant/extension_loader.rb +5 -1
- data/lib/radiant/initializer.rb +52 -4
- data/lib/task_support.rb +33 -0
- data/lib/tasks/cucumber.rake +5 -1
- data/lib/tasks/radiant_config.rake +18 -0
- data/lib/tasks/release.rake +1 -0
- data/public/javascripts/admin/admin.js +1 -1
- data/spec/controllers/admin/layouts_controller_spec.rb +18 -12
- data/spec/controllers/admin/pages_controller_spec.rb +35 -29
- data/spec/controllers/admin/snippets_controller_spec.rb +11 -5
- data/spec/controllers/admin/welcome_controller_spec.rb +1 -1
- data/spec/controllers/application_controller_spec.rb +18 -0
- data/spec/fixtures/radiant_config.yml +10 -0
- data/spec/generators/extension_generator_spec.rb +12 -0
- data/spec/helpers/admin/node_helper_spec.rb +6 -0
- data/spec/helpers/application_helper_spec.rb +1 -1
- data/spec/lib/radiant/extension_loader_spec.rb +17 -0
- data/spec/lib/radiant/extension_spec.rb +28 -0
- data/spec/lib/radiant/initializer_spec.rb +34 -0
- data/spec/lib/task_support_spec.rb +42 -0
- data/spec/models/page_spec.rb +6 -2
- data/spec/models/radiant/config_spec.rb +42 -1
- data/spec/models/standard_tags_spec.rb +2 -2
- data/test/fixtures/extensions/01_basic/app/metal/basic_metal.rb +9 -0
- data/test/fixtures/extensions/02_overriding/app/metal/basic_metal.rb +9 -0
- data/vendor/extensions/textile_filter/textile.html +2 -2
- data/vendor/plugins/dataset/CHANGELOG +2 -1
- data/vendor/plugins/dataset/Rakefile +3 -0
- data/vendor/plugins/dataset/VERSION.yml +2 -2
- data/vendor/plugins/dataset/dataset.gemspec +9 -3
- data/vendor/plugins/dataset/lib/dataset.rb +3 -0
- data/vendor/radius/lib/radius.rb +5 -0
- data/vendor/radius/test/radius_test.rb +6 -0
- data/vendor/rails/actionmailer/CHANGELOG +8 -0
- data/vendor/rails/actionmailer/Rakefile +3 -2
- data/vendor/rails/actionmailer/lib/action_mailer/base.rb +2 -1
- data/vendor/rails/actionmailer/lib/action_mailer/version.rb +1 -1
- data/vendor/rails/actionmailer/test/abstract_unit.rb +0 -3
- data/vendor/rails/actionmailer/test/mail_service_test.rb +3 -2
- data/vendor/rails/actionpack/CHANGELOG +16 -0
- data/vendor/rails/actionpack/Rakefile +5 -3
- data/vendor/rails/actionpack/lib/action_controller.rb +2 -7
- data/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +13 -3
- data/vendor/rails/actionpack/lib/action_controller/base.rb +12 -3
- data/vendor/rails/actionpack/lib/action_controller/caching.rb +1 -1
- data/vendor/rails/actionpack/lib/action_controller/caching/actions.rb +9 -1
- data/vendor/rails/actionpack/lib/action_controller/caching/sweeper.rb +45 -0
- data/vendor/rails/actionpack/lib/action_controller/caching/sweeping.rb +0 -42
- data/vendor/rails/actionpack/lib/action_controller/cookies.rb +1 -1
- data/vendor/rails/actionpack/lib/action_controller/dispatcher.rb +21 -6
- data/vendor/rails/actionpack/lib/action_controller/failsafe.rb +40 -6
- data/vendor/rails/actionpack/lib/action_controller/flash.rb +11 -3
- data/vendor/rails/actionpack/lib/action_controller/http_authentication.rb +7 -3
- data/vendor/rails/actionpack/lib/action_controller/integration.rb +5 -12
- data/vendor/rails/actionpack/lib/action_controller/middlewares.rb +0 -1
- data/vendor/rails/actionpack/lib/action_controller/params_parser.rb +6 -0
- data/vendor/rails/actionpack/lib/action_controller/reloader.rb +47 -7
- data/vendor/rails/actionpack/lib/action_controller/request.rb +6 -2
- data/vendor/rails/actionpack/lib/action_controller/request_forgery_protection.rb +2 -1
- data/vendor/rails/actionpack/lib/action_controller/resources.rb +17 -13
- data/vendor/rails/actionpack/lib/action_controller/response.rb +8 -2
- data/vendor/rails/actionpack/lib/action_controller/routing.rb +3 -0
- data/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb +20 -6
- data/vendor/rails/actionpack/lib/action_controller/streaming.rb +4 -2
- data/vendor/rails/actionpack/lib/action_controller/test_process.rb +9 -1
- data/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +1 -1
- data/vendor/rails/actionpack/lib/action_pack/version.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +21 -9
- data/vendor/rails/actionpack/lib/action_view/helpers/atom_feed_helper.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +2 -2
- data/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +26 -12
- data/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +71 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +10 -4
- data/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +7 -7
- data/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +5 -5
- data/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +23 -14
- data/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +2 -2
- data/vendor/rails/actionpack/lib/action_view/locale/en.yml +4 -0
- data/vendor/rails/actionpack/lib/action_view/paths.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/template.rb +22 -33
- data/vendor/rails/actionpack/test/abstract_unit.rb +17 -1
- data/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +3 -3
- data/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +27 -0
- data/vendor/rails/actionpack/test/controller/caching_test.rb +40 -1
- data/vendor/rails/actionpack/test/controller/cookie_test.rb +16 -0
- data/vendor/rails/actionpack/test/controller/dispatcher_test.rb +59 -18
- data/vendor/rails/actionpack/test/controller/failsafe_test.rb +60 -0
- data/vendor/rails/actionpack/test/controller/filter_params_test.rb +3 -1
- data/vendor/rails/actionpack/test/controller/flash_test.rb +6 -1
- data/vendor/rails/actionpack/test/controller/http_basic_authentication_test.rb +25 -0
- data/vendor/rails/actionpack/test/controller/http_digest_authentication_test.rb +63 -9
- data/vendor/rails/actionpack/test/controller/integration_test.rb +31 -3
- data/vendor/rails/actionpack/test/controller/rack_test.rb +18 -1
- data/vendor/rails/actionpack/test/controller/redirect_test.rb +4 -1
- data/vendor/rails/actionpack/test/controller/reloader_test.rb +124 -0
- data/vendor/rails/actionpack/test/controller/render_test.rb +19 -9
- data/vendor/rails/actionpack/test/controller/request/json_params_parsing_test.rb +24 -4
- data/vendor/rails/actionpack/test/controller/request/multipart_params_parsing_test.rb +1 -62
- data/vendor/rails/actionpack/test/controller/request/test_request_test.rb +35 -0
- data/vendor/rails/actionpack/test/controller/request/url_encoded_params_parsing_test.rb +0 -38
- data/vendor/rails/actionpack/test/controller/request/xml_params_parsing_test.rb +15 -0
- data/vendor/rails/actionpack/test/controller/request_forgery_protection_test.rb +6 -5
- data/vendor/rails/actionpack/test/controller/request_test.rb +218 -230
- data/vendor/rails/actionpack/test/controller/resources_test.rb +52 -0
- data/vendor/rails/actionpack/test/controller/routing_test.rb +28 -2
- data/vendor/rails/actionpack/test/controller/send_file_test.rb +12 -2
- data/vendor/rails/actionpack/test/controller/session/cookie_store_test.rb +9 -32
- data/vendor/rails/actionpack/test/controller/test_test.rb +8 -0
- data/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +29 -3
- data/vendor/rails/actionpack/test/fixtures/failsafe/500.html +1 -0
- data/vendor/rails/actionpack/test/fixtures/public/absolute/test.css +23 -0
- data/vendor/rails/actionpack/test/fixtures/public/absolute/test.js +63 -0
- data/vendor/rails/actionpack/test/template/active_record_helper_test.rb +1 -1
- data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +46 -0
- data/vendor/rails/actionpack/test/template/atom_feed_helper_test.rb +29 -0
- data/vendor/rails/actionpack/test/template/form_helper_test.rb +143 -6
- data/vendor/rails/actionpack/test/template/form_options_helper_i18n_test.rb +27 -0
- data/vendor/rails/actionpack/test/template/form_options_helper_test.rb +56 -0
- data/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +23 -6
- data/vendor/rails/actionpack/test/template/prototype_helper_test.rb +11 -11
- data/vendor/rails/actionpack/test/template/template_test.rb +32 -0
- data/vendor/rails/actionpack/test/template/text_helper_test.rb +23 -0
- data/vendor/rails/actionpack/test/template/url_helper_test.rb +8 -0
- data/vendor/rails/activerecord/CHANGELOG +18 -0
- data/vendor/rails/activerecord/Rakefile +26 -9
- data/vendor/rails/activerecord/examples/performance.rb +162 -0
- data/vendor/rails/activerecord/lib/active_record/associations.rb +104 -35
- data/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +10 -5
- data/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +2 -2
- data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +22 -4
- data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +5 -1
- data/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +16 -0
- data/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +1 -0
- data/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +13 -3
- data/vendor/rails/activerecord/lib/active_record/associations/has_one_through_association.rb +15 -9
- data/vendor/rails/activerecord/lib/active_record/autosave_association.rb +15 -9
- data/vendor/rails/activerecord/lib/active_record/base.rb +34 -31
- data/vendor/rails/activerecord/lib/active_record/batches.rb +23 -15
- data/vendor/rails/activerecord/lib/active_record/calculations.rb +7 -13
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +16 -2
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +2 -2
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +7 -0
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +17 -8
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +98 -35
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +15 -0
- data/vendor/rails/activerecord/lib/active_record/dirty.rb +1 -1
- data/vendor/rails/activerecord/lib/active_record/fixtures.rb +14 -11
- data/vendor/rails/activerecord/lib/active_record/i18n_interpolation_deprecation.rb +1 -1
- data/vendor/rails/activerecord/lib/active_record/locale/en.yml +4 -0
- data/vendor/rails/activerecord/lib/active_record/named_scope.rb +3 -8
- data/vendor/rails/activerecord/lib/active_record/reflection.rb +1 -1
- data/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +6 -3
- data/vendor/rails/activerecord/lib/active_record/serialization.rb +3 -2
- data/vendor/rails/activerecord/lib/active_record/serializers/json_serializer.rb +10 -18
- data/vendor/rails/activerecord/lib/active_record/serializers/xml_serializer.rb +6 -2
- data/vendor/rails/activerecord/lib/active_record/session_store.rb +9 -1
- data/vendor/rails/activerecord/lib/active_record/timestamp.rb +39 -9
- data/vendor/rails/activerecord/lib/active_record/validations.rb +149 -80
- data/vendor/rails/activerecord/lib/active_record/version.rb +1 -1
- data/vendor/rails/activerecord/test/cases/adapter_test.rb +12 -0
- data/vendor/rails/activerecord/test/cases/associations/belongs_to_associations_test.rb +102 -22
- data/vendor/rails/activerecord/test/cases/associations/eager_load_nested_include_test.rb +5 -5
- data/vendor/rails/activerecord/test/cases/associations/eager_test.rb +12 -0
- data/vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb +56 -0
- data/vendor/rails/activerecord/test/cases/associations/has_many_associations_test.rb +62 -2
- data/vendor/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb +46 -1
- data/vendor/rails/activerecord/test/cases/associations/has_one_through_associations_test.rb +18 -1
- data/vendor/rails/activerecord/test/cases/associations/inner_join_association_test.rb +5 -0
- data/vendor/rails/activerecord/test/cases/associations/join_model_test.rb +4 -4
- data/vendor/rails/activerecord/test/cases/autosave_association_test.rb +22 -0
- data/vendor/rails/activerecord/test/cases/base_test.rb +51 -6
- data/vendor/rails/activerecord/test/cases/calculations_test.rb +14 -14
- data/vendor/rails/activerecord/test/cases/column_definition_test.rb +34 -0
- data/vendor/rails/activerecord/test/cases/copy_table_test_sqlite.rb +5 -5
- data/vendor/rails/activerecord/test/cases/dirty_test.rb +10 -0
- data/vendor/rails/activerecord/test/cases/finder_test.rb +21 -50
- data/vendor/rails/activerecord/test/cases/fixtures_test.rb +6 -1
- data/vendor/rails/activerecord/test/cases/helper.rb +1 -2
- data/vendor/rails/activerecord/test/cases/i18n_test.rb +5 -0
- data/vendor/rails/activerecord/test/cases/json_serialization_test.rb +57 -57
- data/vendor/rails/activerecord/test/cases/method_scoping_test.rb +14 -4
- data/vendor/rails/activerecord/test/cases/migration_test.rb +39 -11
- data/vendor/rails/activerecord/test/cases/modules_test.rb +42 -0
- data/vendor/rails/activerecord/test/cases/named_scope_test.rb +6 -4
- data/vendor/rails/activerecord/test/cases/pk_test.rb +18 -0
- data/vendor/rails/activerecord/test/cases/reflection_test.rb +7 -7
- data/vendor/rails/activerecord/test/cases/schema_dumper_test.rb +35 -7
- data/vendor/rails/activerecord/test/cases/schema_test_postgresql.rb +76 -0
- data/vendor/rails/activerecord/test/cases/timestamp_test.rb +75 -0
- data/vendor/rails/activerecord/test/cases/validations_i18n_test.rb +656 -624
- data/vendor/rails/activerecord/test/cases/validations_test.rb +12 -2
- data/vendor/rails/activerecord/test/cases/xml_serialization_test.rb +20 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database.sqlite +0 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database.sqlite3 +0 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database_2.sqlite +0 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database_2.sqlite3 +0 -0
- data/vendor/rails/activerecord/test/fixtures/posts.yml +3 -0
- data/vendor/rails/activerecord/test/models/author.rb +5 -0
- data/vendor/rails/activerecord/test/models/comment.rb +5 -1
- data/vendor/rails/activerecord/test/models/company.rb +9 -7
- data/vendor/rails/activerecord/test/models/company_in_module.rb +1 -1
- data/vendor/rails/activerecord/test/models/contract.rb +5 -0
- data/vendor/rails/activerecord/test/models/developer.rb +10 -0
- data/vendor/rails/activerecord/test/models/essay.rb +3 -0
- data/vendor/rails/activerecord/test/models/organization.rb +2 -0
- data/vendor/rails/activerecord/test/models/pet.rb +1 -1
- data/vendor/rails/activerecord/test/models/project.rb +1 -1
- data/vendor/rails/activerecord/test/models/reply.rb +2 -1
- data/vendor/rails/activerecord/test/models/topic.rb +1 -2
- data/vendor/rails/activerecord/test/models/toy.rb +2 -0
- data/vendor/rails/activerecord/test/schema/postgresql_specific_schema.rb +13 -2
- data/vendor/rails/activerecord/test/schema/schema.rb +19 -0
- data/vendor/rails/activeresource/CHANGELOG +16 -0
- data/vendor/rails/activeresource/Rakefile +3 -2
- data/vendor/rails/activeresource/lib/active_resource/base.rb +89 -9
- data/vendor/rails/activeresource/lib/active_resource/connection.rb +73 -8
- data/vendor/rails/activeresource/lib/active_resource/exceptions.rb +66 -0
- data/vendor/rails/activeresource/lib/active_resource/formats/json_format.rb +2 -2
- data/vendor/rails/activeresource/lib/active_resource/validations.rb +20 -4
- data/vendor/rails/activeresource/lib/active_resource/version.rb +1 -1
- data/vendor/rails/activeresource/test/abstract_unit.rb +1 -3
- data/vendor/rails/activeresource/test/base/load_test.rb +16 -1
- data/vendor/rails/activeresource/test/base_errors_test.rb +56 -19
- data/vendor/rails/activeresource/test/base_test.rb +147 -0
- data/vendor/rails/activeresource/test/connection_test.rb +42 -0
- data/vendor/rails/activeresource/test/debug.log +7974 -0
- data/vendor/rails/activeresource/test/fixtures/proxy.rb +4 -0
- data/vendor/rails/activesupport/CHANGELOG +13 -0
- data/vendor/rails/activesupport/lib/active_support/all.rb +8 -0
- data/vendor/rails/activesupport/lib/active_support/cache.rb +14 -1
- data/vendor/rails/activesupport/lib/active_support/cache/mem_cache_store.rb +16 -10
- data/vendor/rails/activesupport/lib/active_support/cache/strategy/local_cache.rb +1 -1
- data/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +1 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/date/calculations.rb +2 -1
- data/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +2 -4
- data/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +14 -4
- data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +2 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +19 -5
- data/vendor/rails/activesupport/lib/active_support/core_ext/module/model_naming.rb +8 -6
- data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +15 -9
- data/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +1 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +29 -5
- data/vendor/rails/activesupport/lib/active_support/core_ext/string/bytesize.rb +5 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +7 -7
- data/vendor/rails/activesupport/lib/active_support/deprecation.rb +9 -9
- data/vendor/rails/activesupport/lib/active_support/duration.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json.rb +1 -22
- data/vendor/rails/activesupport/lib/active_support/json/backends/jsongem.rb +38 -0
- data/vendor/rails/activesupport/lib/active_support/json/backends/yaml.rb +88 -0
- data/vendor/rails/activesupport/lib/active_support/json/decoding.rb +23 -72
- data/vendor/rails/activesupport/lib/active_support/json/encoders/date.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/json/encoders/date_time.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/json/encoders/enumerable.rb +14 -9
- data/vendor/rails/activesupport/lib/active_support/json/encoders/false_class.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/hash.rb +21 -11
- data/vendor/rails/activesupport/lib/active_support/json/encoders/nil_class.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/numeric.rb +16 -0
- data/vendor/rails/activesupport/lib/active_support/json/encoders/object.rb +6 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/regexp.rb +4 -0
- data/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb +5 -32
- data/vendor/rails/activesupport/lib/active_support/json/encoders/symbol.rb +2 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/time.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/json/encoders/true_class.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoding.rb +80 -9
- data/vendor/rails/activesupport/lib/active_support/memoizable.rb +1 -1
- data/vendor/rails/activesupport/lib/active_support/message_verifier.rb +16 -3
- data/vendor/rails/activesupport/lib/active_support/multibyte.rb +30 -6
- data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +23 -17
- data/vendor/rails/activesupport/lib/active_support/multibyte/utils.rb +61 -0
- data/vendor/rails/activesupport/lib/active_support/ordered_hash.rb +28 -0
- data/vendor/rails/activesupport/lib/active_support/test_case.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/testing/deprecation.rb +2 -0
- data/vendor/rails/activesupport/lib/active_support/time_with_zone.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/vendor.rb +6 -7
- data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/test/i18n_exceptions_test.rb +0 -1
- data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/test/i18n_test.rb +0 -1
- data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/test/simple_backend_test.rb +0 -1
- data/vendor/rails/activesupport/lib/active_support/vendor/{memcache-client-1.6.5 → memcache-client-1.7.4}/memcache.rb +242 -70
- data/vendor/rails/activesupport/lib/active_support/version.rb +1 -1
- data/vendor/rails/activesupport/lib/active_support/xml_mini/jdom.rb +162 -0
- data/vendor/rails/railties/CHANGELOG +10 -0
- data/vendor/rails/railties/Rakefile +13 -9
- data/vendor/rails/railties/bin/about +2 -2
- data/vendor/rails/railties/bin/console +1 -1
- data/vendor/rails/railties/bin/dbconsole +1 -1
- data/vendor/rails/railties/bin/destroy +1 -1
- data/vendor/rails/railties/bin/generate +1 -1
- data/vendor/rails/railties/bin/performance/benchmarker +1 -1
- data/vendor/rails/railties/bin/performance/profiler +1 -1
- data/vendor/rails/railties/bin/plugin +1 -1
- data/vendor/rails/railties/bin/runner +1 -1
- data/vendor/rails/railties/bin/server +1 -1
- data/vendor/rails/railties/builtin/rails_info/rails/info.rb +4 -2
- data/vendor/rails/railties/configs/initializers/new_rails_defaults.rb +2 -0
- data/vendor/rails/railties/configs/routes.rb +1 -1
- data/vendor/rails/railties/configs/seeds.rb +7 -0
- data/vendor/rails/railties/environments/boot.rb +1 -1
- data/vendor/rails/railties/guides/files/javascripts/code_highlighter.js +188 -0
- data/vendor/rails/railties/guides/files/javascripts/guides.js +8 -0
- data/vendor/rails/railties/guides/files/javascripts/highlighters.js +90 -0
- data/vendor/rails/railties/guides/files/stylesheets/main.css +441 -0
- data/vendor/rails/railties/guides/files/stylesheets/print.css +52 -0
- data/vendor/rails/railties/guides/files/stylesheets/reset.css +43 -0
- data/vendor/rails/railties/guides/files/stylesheets/style.css +13 -0
- data/vendor/rails/railties/guides/files/stylesheets/syntax.css +31 -0
- data/vendor/rails/railties/guides/images/belongs_to.png +0 -0
- data/vendor/rails/railties/guides/images/book_icon.gif +0 -0
- data/vendor/rails/railties/guides/images/bullet.gif +0 -0
- data/vendor/rails/railties/guides/images/chapters_icon.gif +0 -0
- data/vendor/rails/railties/guides/images/check_bullet.gif +0 -0
- data/vendor/rails/railties/guides/images/credits_pic_blank.gif +0 -0
- data/vendor/rails/railties/guides/images/csrf.png +0 -0
- data/vendor/rails/railties/guides/images/customized_error_messages.png +0 -0
- data/vendor/rails/railties/guides/images/error_messages.png +0 -0
- data/vendor/rails/railties/guides/images/feature_tile.gif +0 -0
- data/vendor/rails/railties/guides/images/footer_tile.gif +0 -0
- data/vendor/rails/railties/guides/images/fxn.jpg +0 -0
- data/vendor/rails/railties/guides/images/grey_bullet.gif +0 -0
- data/vendor/rails/railties/guides/images/habtm.png +0 -0
- data/vendor/rails/railties/guides/images/has_many.png +0 -0
- data/vendor/rails/railties/guides/images/has_many_through.png +0 -0
- data/vendor/rails/railties/guides/images/has_one.png +0 -0
- data/vendor/rails/railties/guides/images/has_one_through.png +0 -0
- data/vendor/rails/railties/guides/images/header_backdrop.png +0 -0
- data/vendor/rails/railties/guides/images/header_tile.gif +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_localized_pirate.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_translated_en.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_translated_pirate.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_translation_missing.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_untranslated.png +0 -0
- data/vendor/rails/railties/guides/images/icons/README +5 -0
- data/vendor/rails/railties/guides/images/icons/callouts/1.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/10.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/11.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/12.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/13.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/14.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/15.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/2.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/3.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/4.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/5.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/6.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/7.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/8.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/9.png +0 -0
- data/vendor/rails/railties/guides/images/icons/caution.png +0 -0
- data/vendor/rails/railties/guides/images/icons/example.png +0 -0
- data/vendor/rails/railties/guides/images/icons/home.png +0 -0
- data/vendor/rails/railties/guides/images/icons/important.png +0 -0
- data/vendor/rails/railties/guides/images/icons/next.png +0 -0
- data/vendor/rails/railties/guides/images/icons/note.png +0 -0
- data/vendor/rails/railties/guides/images/icons/prev.png +0 -0
- data/vendor/rails/railties/guides/images/icons/tip.png +0 -0
- data/vendor/rails/railties/guides/images/icons/up.png +0 -0
- data/vendor/rails/railties/guides/images/icons/warning.png +0 -0
- data/vendor/rails/railties/guides/images/nav_arrow.gif +0 -0
- data/vendor/rails/railties/guides/images/polymorphic.png +0 -0
- data/vendor/rails/railties/guides/images/posts_index.png +0 -0
- data/vendor/rails/railties/guides/images/rails_guides_logo.gif +0 -0
- data/vendor/rails/railties/guides/images/rails_logo_remix.gif +0 -0
- data/vendor/rails/railties/guides/images/rails_welcome.png +0 -0
- data/vendor/rails/railties/guides/images/session_fixation.png +0 -0
- data/vendor/rails/railties/guides/images/tab_grey.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_info.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_note.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_red.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_yellow.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_yellow.png +0 -0
- data/vendor/rails/railties/guides/images/validation_error_messages.png +0 -0
- data/vendor/rails/railties/guides/rails_guides.rb +42 -0
- data/vendor/rails/railties/guides/rails_guides/generator.rb +138 -0
- data/vendor/rails/railties/guides/rails_guides/helpers.rb +34 -0
- data/vendor/rails/railties/guides/rails_guides/indexer.rb +55 -0
- data/vendor/rails/railties/guides/rails_guides/textile_extensions.rb +41 -0
- data/vendor/rails/railties/guides/source/2_2_release_notes.textile +422 -0
- data/vendor/rails/railties/guides/source/2_3_release_notes.textile +610 -0
- data/vendor/rails/railties/guides/source/action_controller_overview.textile +776 -0
- data/vendor/rails/railties/guides/source/action_mailer_basics.textile +424 -0
- data/vendor/rails/railties/guides/source/active_record_basics.textile +135 -0
- data/vendor/rails/railties/guides/source/active_record_querying.textile +969 -0
- data/vendor/rails/railties/guides/source/activerecord_validations_callbacks.textile +1086 -0
- data/vendor/rails/railties/guides/source/association_basics.textile +1781 -0
- data/vendor/rails/railties/guides/source/caching_with_rails.textile +524 -0
- data/vendor/rails/railties/guides/source/command_line.textile +589 -0
- data/vendor/rails/railties/guides/source/configuring.textile +234 -0
- data/vendor/rails/railties/guides/source/contribute.textile +71 -0
- data/vendor/rails/railties/guides/source/contributing_to_rails.textile +239 -0
- data/vendor/rails/railties/guides/source/credits.erb.textile +52 -0
- data/vendor/rails/railties/guides/source/debugging_rails_applications.textile +709 -0
- data/vendor/rails/railties/guides/source/form_helpers.textile +766 -0
- data/vendor/rails/railties/guides/source/getting_started.textile +1297 -0
- data/vendor/rails/railties/guides/source/i18n.textile +912 -0
- data/vendor/rails/railties/guides/source/index.erb.textile +124 -0
- data/vendor/rails/railties/guides/source/layout.html.erb +103 -0
- data/vendor/rails/railties/guides/source/layouts_and_rendering.textile +979 -0
- data/vendor/rails/railties/guides/source/migrations.textile +591 -0
- data/vendor/rails/railties/guides/source/nested_model_forms.textile +222 -0
- data/vendor/rails/railties/guides/source/performance_testing.textile +531 -0
- data/vendor/rails/railties/guides/source/plugins.textile +1512 -0
- data/vendor/rails/railties/guides/source/rails_on_rack.textile +309 -0
- data/vendor/rails/railties/guides/source/routing.textile +903 -0
- data/vendor/rails/railties/guides/source/security.textile +986 -0
- data/vendor/rails/railties/guides/source/testing.textile +951 -0
- data/vendor/rails/railties/lib/commands/dbconsole.rb +8 -4
- data/vendor/rails/railties/lib/commands/performance/profiler.rb +1 -1
- data/vendor/rails/railties/lib/initializer.rb +27 -4
- data/vendor/rails/railties/lib/rails/gem_dependency.rb +35 -6
- data/vendor/rails/railties/lib/rails/plugin.rb +12 -0
- data/vendor/rails/railties/lib/rails/plugin/loader.rb +7 -0
- data/vendor/rails/railties/lib/rails/rack/metal.rb +1 -1
- data/vendor/rails/railties/lib/rails/version.rb +1 -1
- data/vendor/rails/railties/lib/rails_generator/base.rb +1 -1
- data/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +5 -0
- data/vendor/rails/railties/lib/rails_generator/generators/applications/app/template_runner.rb +1 -1
- data/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +9 -2
- data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +1 -0
- data/vendor/rails/railties/lib/tasks/databases.rake +17 -4
- data/vendor/rails/railties/lib/tasks/gems.rake +19 -6
- data/vendor/rails/railties/lib/tasks/routes.rake +4 -3
- data/vendor/rails/railties/lib/test_help.rb +4 -1
- metadata +158 -58
- data/spec/lib/local_time_spec.rb +0 -40
- data/vendor/rails/actionpack/lib/action_controller/rewindable_input.rb +0 -28
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack.rb +0 -89
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/adapter/camping.rb +0 -22
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/abstract/handler.rb +0 -37
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/abstract/request.rb +0 -37
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/basic.rb +0 -58
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/md5.rb +0 -124
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/nonce.rb +0 -51
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/params.rb +0 -55
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/request.rb +0 -40
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/openid.rb +0 -480
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/builder.rb +0 -63
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/cascade.rb +0 -36
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/chunked.rb +0 -49
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/commonlogger.rb +0 -61
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/conditionalget.rb +0 -45
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/content_length.rb +0 -29
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/content_type.rb +0 -23
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/deflater.rb +0 -85
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/directory.rb +0 -153
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/file.rb +0 -88
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler.rb +0 -48
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/cgi.rb +0 -61
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/evented_mongrel.rb +0 -8
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/fastcgi.rb +0 -89
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/lsws.rb +0 -55
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/mongrel.rb +0 -84
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/scgi.rb +0 -59
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/swiftiplied_mongrel.rb +0 -8
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/thin.rb +0 -18
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb +0 -67
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/head.rb +0 -19
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/lint.rb +0 -462
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/lobster.rb +0 -65
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/lock.rb +0 -16
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/methodoverride.rb +0 -27
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/mime.rb +0 -204
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/mock.rb +0 -160
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/recursive.rb +0 -57
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/reloader.rb +0 -64
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/request.rb +0 -241
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/response.rb +0 -179
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/abstract/id.rb +0 -142
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/cookie.rb +0 -91
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/memcache.rb +0 -109
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/pool.rb +0 -100
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/showexceptions.rb +0 -349
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/showstatus.rb +0 -106
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/static.rb +0 -38
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb +0 -55
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/utils.rb +0 -392
@@ -38,6 +38,21 @@ class XmlParamsParsingTest < ActionController::IntegrationTest
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
+
test "logs error if parsing unsuccessful" do
|
42
|
+
with_test_routing do
|
43
|
+
begin
|
44
|
+
$stderr = StringIO.new
|
45
|
+
xml = "<person><name>David</name><avatar type='file' name='me.jpg' content_type='image/jpg'>#{ActiveSupport::Base64.encode64('ABC')}</avatar></pineapple>"
|
46
|
+
post "/parse", xml, default_headers
|
47
|
+
assert_response :error
|
48
|
+
$stderr.rewind && err = $stderr.read
|
49
|
+
assert err =~ /Error occurred while parsing request parameters/
|
50
|
+
ensure
|
51
|
+
$stderr = STDERR
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
41
56
|
test "parses multiple files" do
|
42
57
|
xml = <<-end_body
|
43
58
|
<person>
|
@@ -151,14 +151,10 @@ module RequestForgeryProtectionTests
|
|
151
151
|
delete :index, :format => 'xml'
|
152
152
|
end
|
153
153
|
end
|
154
|
-
|
154
|
+
|
155
155
|
def test_should_allow_xhr_post_without_token
|
156
156
|
assert_nothing_raised { xhr :post, :index }
|
157
157
|
end
|
158
|
-
def test_should_not_allow_xhr_post_with_html_without_token
|
159
|
-
@request.env['CONTENT_TYPE'] = Mime::URL_ENCODED_FORM.to_s
|
160
|
-
assert_raise(ActionController::InvalidAuthenticityToken) { xhr :post, :index }
|
161
|
-
end
|
162
158
|
|
163
159
|
def test_should_allow_xhr_put_without_token
|
164
160
|
assert_nothing_raised { xhr :put, :index }
|
@@ -168,6 +164,11 @@ module RequestForgeryProtectionTests
|
|
168
164
|
assert_nothing_raised { xhr :delete, :index }
|
169
165
|
end
|
170
166
|
|
167
|
+
def test_should_allow_xhr_post_with_encoded_form_content_type_without_token
|
168
|
+
@request.env['CONTENT_TYPE'] = Mime::URL_ENCODED_FORM.to_s
|
169
|
+
assert_nothing_raised { xhr :post, :index }
|
170
|
+
end
|
171
|
+
|
171
172
|
def test_should_allow_post_with_token
|
172
173
|
post :index, :authenticity_token => @token
|
173
174
|
assert_response :success
|
@@ -3,7 +3,6 @@ require 'abstract_unit'
|
|
3
3
|
class RequestTest < ActiveSupport::TestCase
|
4
4
|
def setup
|
5
5
|
ActionController::Base.relative_url_root = nil
|
6
|
-
@request = ActionController::TestRequest.new
|
7
6
|
end
|
8
7
|
|
9
8
|
def teardown
|
@@ -11,60 +10,52 @@ class RequestTest < ActiveSupport::TestCase
|
|
11
10
|
end
|
12
11
|
|
13
12
|
def test_remote_ip
|
14
|
-
|
13
|
+
request = stub_request 'REMOTE_ADDR' => '1.2.3.4'
|
14
|
+
assert_equal '1.2.3.4', request.remote_ip
|
15
15
|
|
16
|
-
|
17
|
-
assert_equal '1.2.3.4',
|
16
|
+
request = stub_request 'REMOTE_ADDR' => '1.2.3.4,3.4.5.6'
|
17
|
+
assert_equal '1.2.3.4', request.remote_ip
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
request = stub_request 'REMOTE_ADDR' => '1.2.3.4',
|
20
|
+
'HTTP_X_FORWARDED_FOR' => '3.4.5.6'
|
21
|
+
assert_equal '1.2.3.4', request.remote_ip
|
21
22
|
|
22
|
-
|
23
|
-
|
23
|
+
request = stub_request 'REMOTE_ADDR' => '127.0.0.1',
|
24
|
+
'HTTP_X_FORWARDED_FOR' => '3.4.5.6'
|
25
|
+
assert_equal '3.4.5.6', request.remote_ip
|
24
26
|
|
25
|
-
|
26
|
-
assert_equal '
|
27
|
-
@request.env.delete 'HTTP_CLIENT_IP'
|
27
|
+
request = stub_request 'HTTP_X_FORWARDED_FOR' => 'unknown,3.4.5.6'
|
28
|
+
assert_equal '3.4.5.6', request.remote_ip
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
assert_equal '1.2.3.4', @request.remote_ip
|
30
|
+
request = stub_request 'HTTP_X_FORWARDED_FOR' => '172.16.0.1,3.4.5.6'
|
31
|
+
assert_equal '3.4.5.6', request.remote_ip
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
assert_equal '3.4.5.6', @request.remote_ip
|
33
|
+
request = stub_request 'HTTP_X_FORWARDED_FOR' => '192.168.0.1,3.4.5.6'
|
34
|
+
assert_equal '3.4.5.6', request.remote_ip
|
36
35
|
|
37
|
-
|
38
|
-
assert_equal '3.4.5.6',
|
36
|
+
request = stub_request 'HTTP_X_FORWARDED_FOR' => '10.0.0.1,3.4.5.6'
|
37
|
+
assert_equal '3.4.5.6', request.remote_ip
|
39
38
|
|
40
|
-
|
41
|
-
assert_equal '3.4.5.6',
|
39
|
+
request = stub_request 'HTTP_X_FORWARDED_FOR' => '10.0.0.1, 10.0.0.1, 3.4.5.6'
|
40
|
+
assert_equal '3.4.5.6', request.remote_ip
|
42
41
|
|
43
|
-
|
44
|
-
assert_equal '3.4.5.6',
|
42
|
+
request = stub_request 'HTTP_X_FORWARDED_FOR' => '127.0.0.1,3.4.5.6'
|
43
|
+
assert_equal '3.4.5.6', request.remote_ip
|
45
44
|
|
46
|
-
|
47
|
-
assert_equal '
|
45
|
+
request = stub_request 'HTTP_X_FORWARDED_FOR' => 'unknown,192.168.0.1'
|
46
|
+
assert_equal 'unknown', request.remote_ip
|
48
47
|
|
49
|
-
|
50
|
-
assert_equal '3.4.5.6',
|
48
|
+
request = stub_request 'HTTP_X_FORWARDED_FOR' => '9.9.9.9, 3.4.5.6, 10.0.0.1, 172.31.4.4'
|
49
|
+
assert_equal '3.4.5.6', request.remote_ip
|
51
50
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
@request.env['HTTP_X_FORWARDED_FOR'] = 'unknown,192.168.0.1'
|
56
|
-
assert_equal 'unknown', @request.remote_ip
|
57
|
-
|
58
|
-
@request.env['HTTP_X_FORWARDED_FOR'] = '9.9.9.9, 3.4.5.6, 10.0.0.1, 172.31.4.4'
|
59
|
-
assert_equal '3.4.5.6', @request.remote_ip
|
60
|
-
|
61
|
-
@request.env['HTTP_CLIENT_IP'] = '8.8.8.8'
|
51
|
+
request = stub_request 'HTTP_X_FORWARDED_FOR' => '1.1.1.1',
|
52
|
+
'HTTP_CLIENT_IP' => '2.2.2.2'
|
62
53
|
e = assert_raise(ActionController::ActionControllerError) {
|
63
|
-
|
54
|
+
request.remote_ip
|
64
55
|
}
|
65
56
|
assert_match /IP spoofing attack/, e.message
|
66
|
-
assert_match /HTTP_X_FORWARDED_FOR="
|
67
|
-
assert_match /HTTP_CLIENT_IP="
|
57
|
+
assert_match /HTTP_X_FORWARDED_FOR="1.1.1.1"/, e.message
|
58
|
+
assert_match /HTTP_CLIENT_IP="2.2.2.2"/, e.message
|
68
59
|
|
69
60
|
# turn IP Spoofing detection off.
|
70
61
|
# This is useful for sites that are aimed at non-IP clients. The typical
|
@@ -72,336 +63,333 @@ class RequestTest < ActiveSupport::TestCase
|
|
72
63
|
# leap of faith to assume that their proxies are ever going to set the
|
73
64
|
# HTTP_CLIENT_IP/HTTP_X_FORWARDED_FOR headers properly.
|
74
65
|
ActionController::Base.ip_spoofing_check = false
|
75
|
-
|
66
|
+
request = stub_request 'HTTP_X_FORWARDED_FOR' => '1.1.1.1',
|
67
|
+
'HTTP_CLIENT_IP' => '2.2.2.2'
|
68
|
+
assert_equal '2.2.2.2', request.remote_ip
|
76
69
|
ActionController::Base.ip_spoofing_check = true
|
77
70
|
|
78
|
-
|
79
|
-
assert_equal '
|
80
|
-
|
81
|
-
@request.env.delete 'HTTP_CLIENT_IP'
|
82
|
-
@request.env.delete 'HTTP_X_FORWARDED_FOR'
|
71
|
+
request = stub_request 'HTTP_X_FORWARDED_FOR' => '8.8.8.8, 9.9.9.9'
|
72
|
+
assert_equal '9.9.9.9', request.remote_ip
|
83
73
|
end
|
84
74
|
|
85
75
|
def test_domains
|
86
|
-
|
87
|
-
assert_equal "rubyonrails.org",
|
88
|
-
|
89
|
-
@request.host = "www.rubyonrails.co.uk"
|
90
|
-
assert_equal "rubyonrails.co.uk", @request.domain(2)
|
76
|
+
request = stub_request 'HTTP_HOST' => 'www.rubyonrails.org'
|
77
|
+
assert_equal "rubyonrails.org", request.domain
|
91
78
|
|
92
|
-
|
93
|
-
|
79
|
+
request = stub_request 'HTTP_HOST' => "www.rubyonrails.co.uk"
|
80
|
+
assert_equal "rubyonrails.co.uk", request.domain(2)
|
94
81
|
|
95
|
-
|
96
|
-
assert_nil
|
82
|
+
request = stub_request 'HTTP_HOST' => "192.168.1.200"
|
83
|
+
assert_nil request.domain
|
97
84
|
|
98
|
-
|
99
|
-
|
85
|
+
request = stub_request 'HTTP_HOST' => "foo.192.168.1.200"
|
86
|
+
assert_nil request.domain
|
100
87
|
|
101
|
-
|
102
|
-
|
88
|
+
request = stub_request 'HTTP_HOST' => "192.168.1.200.com"
|
89
|
+
assert_equal "200.com", request.domain
|
103
90
|
end
|
104
91
|
|
105
92
|
def test_subdomains
|
106
|
-
|
107
|
-
assert_equal %w( www ),
|
93
|
+
request = stub_request 'HTTP_HOST' => "www.rubyonrails.org"
|
94
|
+
assert_equal %w( www ), request.subdomains
|
108
95
|
|
109
|
-
|
110
|
-
assert_equal %w( www ),
|
96
|
+
request = stub_request 'HTTP_HOST' => "www.rubyonrails.co.uk"
|
97
|
+
assert_equal %w( www ), request.subdomains(2)
|
111
98
|
|
112
|
-
|
113
|
-
assert_equal %w( dev www ),
|
99
|
+
request = stub_request 'HTTP_HOST' => "dev.www.rubyonrails.co.uk"
|
100
|
+
assert_equal %w( dev www ), request.subdomains(2)
|
114
101
|
|
115
|
-
|
116
|
-
assert_equal %w( foobar ),
|
102
|
+
request = stub_request 'HTTP_HOST' => "foobar.foobar.com"
|
103
|
+
assert_equal %w( foobar ), request.subdomains
|
117
104
|
|
118
|
-
|
119
|
-
assert_equal [],
|
105
|
+
request = stub_request 'HTTP_HOST' => "192.168.1.200"
|
106
|
+
assert_equal [], request.subdomains
|
120
107
|
|
121
|
-
|
122
|
-
assert_equal [],
|
108
|
+
request = stub_request 'HTTP_HOST' => "foo.192.168.1.200"
|
109
|
+
assert_equal [], request.subdomains
|
123
110
|
|
124
|
-
|
125
|
-
assert_equal %w( 192 168 1 ),
|
111
|
+
request = stub_request 'HTTP_HOST' => "192.168.1.200.com"
|
112
|
+
assert_equal %w( 192 168 1 ), request.subdomains
|
126
113
|
|
127
|
-
|
128
|
-
assert_equal [],
|
114
|
+
request = stub_request 'HTTP_HOST' => nil
|
115
|
+
assert_equal [], request.subdomains
|
129
116
|
end
|
130
117
|
|
131
118
|
def test_port_string
|
132
|
-
|
133
|
-
assert_equal "",
|
119
|
+
request = stub_request 'HTTP_HOST' => 'www.example.org:80'
|
120
|
+
assert_equal "", request.port_string
|
134
121
|
|
135
|
-
|
136
|
-
assert_equal ":8080",
|
122
|
+
request = stub_request 'HTTP_HOST' => 'www.example.org:8080'
|
123
|
+
assert_equal ":8080", request.port_string
|
137
124
|
end
|
138
125
|
|
139
126
|
def test_request_uri
|
140
|
-
|
127
|
+
request = stub_request 'REQUEST_URI' => "http://www.rubyonrails.org/path/of/some/uri?mapped=1"
|
128
|
+
assert_equal "/path/of/some/uri?mapped=1", request.request_uri
|
129
|
+
assert_equal "/path/of/some/uri", request.path
|
141
130
|
|
142
|
-
|
143
|
-
assert_equal "/path/of/some/uri
|
144
|
-
assert_equal "/path/of/some/uri",
|
131
|
+
request = stub_request 'REQUEST_URI' => "http://www.rubyonrails.org/path/of/some/uri"
|
132
|
+
assert_equal "/path/of/some/uri", request.request_uri
|
133
|
+
assert_equal "/path/of/some/uri", request.path
|
145
134
|
|
146
|
-
|
147
|
-
assert_equal "/path/of/some/uri",
|
148
|
-
assert_equal "/path/of/some/uri",
|
135
|
+
request = stub_request 'REQUEST_URI' => "/path/of/some/uri"
|
136
|
+
assert_equal "/path/of/some/uri", request.request_uri
|
137
|
+
assert_equal "/path/of/some/uri", request.path
|
149
138
|
|
150
|
-
|
151
|
-
assert_equal "/
|
152
|
-
assert_equal "/
|
139
|
+
request = stub_request 'REQUEST_URI' => "/"
|
140
|
+
assert_equal "/", request.request_uri
|
141
|
+
assert_equal "/", request.path
|
153
142
|
|
154
|
-
|
155
|
-
assert_equal "
|
156
|
-
assert_equal "/",
|
143
|
+
request = stub_request 'REQUEST_URI' => "/?m=b"
|
144
|
+
assert_equal "/?m=b", request.request_uri
|
145
|
+
assert_equal "/", request.path
|
157
146
|
|
158
|
-
|
159
|
-
assert_equal "
|
160
|
-
assert_equal "/",
|
161
|
-
|
162
|
-
@request.set_REQUEST_URI "/"
|
163
|
-
@request.env['SCRIPT_NAME'] = "/dispatch.cgi"
|
164
|
-
assert_equal "/", @request.request_uri
|
165
|
-
assert_equal "/", @request.path
|
147
|
+
request = stub_request 'REQUEST_URI' => "/", 'SCRIPT_NAME' => '/dispatch.cgi'
|
148
|
+
assert_equal "/", request.request_uri
|
149
|
+
assert_equal "/", request.path
|
166
150
|
|
167
151
|
ActionController::Base.relative_url_root = "/hieraki"
|
168
|
-
|
169
|
-
|
170
|
-
assert_equal "/
|
171
|
-
assert_equal "/", @request.path
|
152
|
+
request = stub_request 'REQUEST_URI' => "/hieraki/", 'SCRIPT_NAME' => "/hieraki/dispatch.cgi"
|
153
|
+
assert_equal "/hieraki/", request.request_uri
|
154
|
+
assert_equal "/", request.path
|
172
155
|
ActionController::Base.relative_url_root = nil
|
173
156
|
|
174
157
|
ActionController::Base.relative_url_root = "/collaboration/hieraki"
|
175
|
-
|
176
|
-
|
177
|
-
assert_equal "/collaboration/hieraki/books/edit/2",
|
178
|
-
assert_equal "/books/edit/2",
|
158
|
+
request = stub_request 'REQUEST_URI' => "/collaboration/hieraki/books/edit/2",
|
159
|
+
'SCRIPT_NAME' => "/collaboration/hieraki/dispatch.cgi"
|
160
|
+
assert_equal "/collaboration/hieraki/books/edit/2", request.request_uri
|
161
|
+
assert_equal "/books/edit/2", request.path
|
179
162
|
ActionController::Base.relative_url_root = nil
|
180
163
|
|
181
164
|
# The following tests are for when REQUEST_URI is not supplied (as in IIS)
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
assert_equal "/path/of/some/uri?mapped=1",
|
186
|
-
assert_equal "/path/of/some/uri",
|
165
|
+
request = stub_request 'PATH_INFO' => "/path/of/some/uri?mapped=1",
|
166
|
+
'SCRIPT_NAME' => nil,
|
167
|
+
'REQUEST_URI' => nil
|
168
|
+
assert_equal "/path/of/some/uri?mapped=1", request.request_uri
|
169
|
+
assert_equal "/path/of/some/uri", request.path
|
187
170
|
|
188
171
|
ActionController::Base.relative_url_root = '/path'
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
assert_equal "/path/of/some/uri?mapped=1",
|
193
|
-
assert_equal "/of/some/uri",
|
172
|
+
request = stub_request 'PATH_INFO' => "/path/of/some/uri?mapped=1",
|
173
|
+
'SCRIPT_NAME' => "/path/dispatch.rb",
|
174
|
+
'REQUEST_URI' => nil
|
175
|
+
assert_equal "/path/of/some/uri?mapped=1", request.request_uri
|
176
|
+
assert_equal "/of/some/uri", request.path
|
194
177
|
ActionController::Base.relative_url_root = nil
|
195
178
|
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
assert_equal "/path/of/some/uri",
|
200
|
-
assert_equal "/path/of/some/uri",
|
179
|
+
request = stub_request 'PATH_INFO' => "/path/of/some/uri",
|
180
|
+
'SCRIPT_NAME' => nil,
|
181
|
+
'REQUEST_URI' => nil
|
182
|
+
assert_equal "/path/of/some/uri", request.request_uri
|
183
|
+
assert_equal "/path/of/some/uri", request.path
|
201
184
|
|
202
|
-
|
203
|
-
|
204
|
-
assert_equal "/",
|
205
|
-
assert_equal "/", @request.path
|
185
|
+
request = stub_request 'PATH_INFO' => '/', 'REQUEST_URI' => nil
|
186
|
+
assert_equal "/", request.request_uri
|
187
|
+
assert_equal "/", request.path
|
206
188
|
|
207
|
-
|
208
|
-
|
209
|
-
assert_equal "
|
210
|
-
assert_equal "/", @request.path
|
189
|
+
request = stub_request 'PATH_INFO' => '/?m=b', 'REQUEST_URI' => nil
|
190
|
+
assert_equal "/?m=b", request.request_uri
|
191
|
+
assert_equal "/", request.path
|
211
192
|
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
assert_equal "/",
|
216
|
-
assert_equal "/",
|
193
|
+
request = stub_request 'PATH_INFO' => "/",
|
194
|
+
'SCRIPT_NAME' => "/dispatch.cgi",
|
195
|
+
'REQUEST_URI' => nil
|
196
|
+
assert_equal "/", request.request_uri
|
197
|
+
assert_equal "/", request.path
|
217
198
|
|
218
199
|
ActionController::Base.relative_url_root = '/hieraki'
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
assert_equal "/hieraki/",
|
223
|
-
assert_equal "/",
|
200
|
+
request = stub_request 'PATH_INFO' => "/hieraki/",
|
201
|
+
'SCRIPT_NAME' => "/hieraki/dispatch.cgi",
|
202
|
+
'REQUEST_URI' => nil
|
203
|
+
assert_equal "/hieraki/", request.request_uri
|
204
|
+
assert_equal "/", request.path
|
224
205
|
ActionController::Base.relative_url_root = nil
|
225
206
|
|
226
|
-
|
207
|
+
request = stub_request 'REQUEST_URI' => '/hieraki/dispatch.cgi'
|
227
208
|
ActionController::Base.relative_url_root = '/hieraki'
|
228
|
-
assert_equal "/dispatch.cgi",
|
209
|
+
assert_equal "/dispatch.cgi", request.path
|
229
210
|
ActionController::Base.relative_url_root = nil
|
230
211
|
|
231
|
-
|
212
|
+
request = stub_request 'REQUEST_URI' => '/hieraki/dispatch.cgi'
|
232
213
|
ActionController::Base.relative_url_root = '/foo'
|
233
|
-
assert_equal "/hieraki/dispatch.cgi",
|
214
|
+
assert_equal "/hieraki/dispatch.cgi", request.path
|
234
215
|
ActionController::Base.relative_url_root = nil
|
235
216
|
|
236
217
|
# This test ensures that Rails uses REQUEST_URI over PATH_INFO
|
237
218
|
ActionController::Base.relative_url_root = nil
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
assert_equal "/some/path",
|
242
|
-
assert_equal "/some/path",
|
219
|
+
request = stub_request 'REQUEST_URI' => "/some/path",
|
220
|
+
'PATH_INFO' => "/another/path",
|
221
|
+
'SCRIPT_NAME' => "/dispatch.cgi"
|
222
|
+
assert_equal "/some/path", request.request_uri
|
223
|
+
assert_equal "/some/path", request.path
|
243
224
|
end
|
244
225
|
|
245
226
|
def test_host_with_default_port
|
246
|
-
|
247
|
-
|
248
|
-
assert_equal "rubyonrails.org", @request.host_with_port
|
227
|
+
request = stub_request 'HTTP_HOST' => 'rubyonrails.org:80'
|
228
|
+
assert_equal "rubyonrails.org", request.host_with_port
|
249
229
|
end
|
250
230
|
|
251
231
|
def test_host_with_non_default_port
|
252
|
-
|
253
|
-
|
254
|
-
assert_equal "rubyonrails.org:81", @request.host_with_port
|
232
|
+
request = stub_request 'HTTP_HOST' => 'rubyonrails.org:81'
|
233
|
+
assert_equal "rubyonrails.org:81", request.host_with_port
|
255
234
|
end
|
256
235
|
|
257
236
|
def test_server_software
|
258
|
-
|
237
|
+
request = stub_request
|
238
|
+
assert_equal nil, request.server_software
|
259
239
|
|
260
|
-
|
261
|
-
assert_equal 'apache',
|
240
|
+
request = stub_request 'SERVER_SOFTWARE' => 'Apache3.422'
|
241
|
+
assert_equal 'apache', request.server_software
|
262
242
|
|
263
|
-
|
264
|
-
assert_equal 'lighttpd',
|
243
|
+
request = stub_request 'SERVER_SOFTWARE' => 'lighttpd(1.1.4)'
|
244
|
+
assert_equal 'lighttpd', request.server_software
|
265
245
|
end
|
266
246
|
|
267
247
|
def test_xml_http_request
|
268
|
-
|
269
|
-
|
248
|
+
request = stub_request
|
249
|
+
|
250
|
+
assert !request.xml_http_request?
|
251
|
+
assert !request.xhr?
|
270
252
|
|
271
|
-
|
272
|
-
assert
|
273
|
-
assert
|
253
|
+
request = stub_request 'HTTP_X_REQUESTED_WITH' => 'DefinitelyNotAjax1.0'
|
254
|
+
assert !request.xml_http_request?
|
255
|
+
assert !request.xhr?
|
274
256
|
|
275
|
-
|
276
|
-
assert
|
277
|
-
assert
|
257
|
+
request = stub_request 'HTTP_X_REQUESTED_WITH' => 'XMLHttpRequest'
|
258
|
+
assert request.xml_http_request?
|
259
|
+
assert request.xhr?
|
278
260
|
end
|
279
261
|
|
280
262
|
def test_reports_ssl
|
281
|
-
|
282
|
-
|
283
|
-
|
263
|
+
request = stub_request
|
264
|
+
assert !request.ssl?
|
265
|
+
|
266
|
+
request = stub_request 'HTTPS' => 'on'
|
267
|
+
assert request.ssl?
|
284
268
|
end
|
285
269
|
|
286
270
|
def test_reports_ssl_when_proxied_via_lighttpd
|
287
|
-
|
288
|
-
|
289
|
-
|
271
|
+
request = stub_request
|
272
|
+
assert !request.ssl?
|
273
|
+
|
274
|
+
request = stub_request 'HTTP_X_FORWARDED_PROTO' => 'https'
|
275
|
+
assert request.ssl?
|
290
276
|
end
|
291
277
|
|
292
278
|
def test_symbolized_request_methods
|
293
279
|
[:get, :post, :put, :delete].each do |method|
|
294
|
-
|
295
|
-
assert_equal method,
|
280
|
+
request = stub_request 'REQUEST_METHOD' => method.to_s.upcase
|
281
|
+
assert_equal method, request.method
|
296
282
|
end
|
297
283
|
end
|
298
284
|
|
299
285
|
def test_invalid_http_method_raises_exception
|
300
286
|
assert_raise(ActionController::UnknownHttpMethod) do
|
301
|
-
|
302
|
-
|
287
|
+
request = stub_request 'REQUEST_METHOD' => 'RANDOM_METHOD'
|
288
|
+
request.request_method
|
303
289
|
end
|
304
290
|
end
|
305
291
|
|
306
292
|
def test_allow_method_hacking_on_post
|
307
293
|
[:get, :head, :options, :put, :post, :delete].each do |method|
|
308
|
-
|
309
|
-
assert_equal(method == :head ? :get : method,
|
310
|
-
end
|
311
|
-
end
|
312
|
-
|
313
|
-
def test_invalid_method_hacking_on_post_raises_exception
|
314
|
-
assert_raise(ActionController::UnknownHttpMethod) do
|
315
|
-
self.request_method = :_random_method
|
316
|
-
@request.request_method
|
294
|
+
request = stub_request 'REQUEST_METHOD' => method.to_s.upcase
|
295
|
+
assert_equal(method == :head ? :get : method, request.method)
|
317
296
|
end
|
318
297
|
end
|
319
298
|
|
320
299
|
def test_restrict_method_hacking
|
321
|
-
@request.instance_eval { @parameters = { :_method => 'put' } }
|
322
300
|
[:get, :put, :delete].each do |method|
|
323
|
-
|
324
|
-
|
301
|
+
request = stub_request 'REQUEST_METHOD' => method.to_s.upcase,
|
302
|
+
'action_controller.request.request_parameters' => { :_method => 'put' }
|
303
|
+
assert_equal method, request.method
|
325
304
|
end
|
326
305
|
end
|
327
306
|
|
328
307
|
def test_head_masquerading_as_get
|
329
|
-
|
330
|
-
assert_equal :get,
|
331
|
-
assert
|
332
|
-
assert
|
308
|
+
request = stub_request 'REQUEST_METHOD' => 'HEAD'
|
309
|
+
assert_equal :get, request.method
|
310
|
+
assert request.get?
|
311
|
+
assert request.head?
|
333
312
|
end
|
334
313
|
|
335
314
|
def test_xml_format
|
336
|
-
|
337
|
-
|
315
|
+
request = stub_request
|
316
|
+
request.expects(:parameters).at_least_once.returns({ :format => 'xml' })
|
317
|
+
assert_equal Mime::XML, request.format
|
338
318
|
end
|
339
319
|
|
340
320
|
def test_xhtml_format
|
341
|
-
|
342
|
-
|
321
|
+
request = stub_request
|
322
|
+
request.expects(:parameters).at_least_once.returns({ :format => 'xhtml' })
|
323
|
+
assert_equal Mime::HTML, request.format
|
343
324
|
end
|
344
325
|
|
345
326
|
def test_txt_format
|
346
|
-
|
347
|
-
|
327
|
+
request = stub_request
|
328
|
+
request.expects(:parameters).at_least_once.returns({ :format => 'txt' })
|
329
|
+
assert_equal Mime::TEXT, request.format
|
348
330
|
end
|
349
331
|
|
350
|
-
def
|
332
|
+
def test_xml_http_request
|
351
333
|
ActionController::Base.use_accept_header, old =
|
352
334
|
false, ActionController::Base.use_accept_header
|
353
335
|
|
354
|
-
|
355
|
-
|
356
|
-
assert
|
357
|
-
assert_equal Mime::JS,
|
358
|
-
|
336
|
+
request = stub_request 'HTTP_X_REQUESTED_WITH' => 'XMLHttpRequest'
|
337
|
+
request.expects(:parameters).at_least_once.returns({})
|
338
|
+
assert request.xhr?
|
339
|
+
assert_equal Mime::JS, request.format
|
359
340
|
ensure
|
360
341
|
ActionController::Base.use_accept_header = old
|
361
342
|
end
|
362
343
|
|
363
344
|
def test_content_type
|
364
|
-
|
365
|
-
assert_equal Mime::HTML,
|
345
|
+
request = stub_request 'CONTENT_TYPE' => 'text/html'
|
346
|
+
assert_equal Mime::HTML, request.content_type
|
366
347
|
end
|
367
348
|
|
368
|
-
def
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
349
|
+
def test_can_override_format_with_parameter
|
350
|
+
request = stub_request
|
351
|
+
request.expects(:parameters).at_least_once.returns({ :format => :txt })
|
352
|
+
assert !request.format.xml?
|
353
|
+
|
354
|
+
request = stub_request
|
355
|
+
request.expects(:parameters).at_least_once.returns({ :format => :xml })
|
356
|
+
assert request.format.xml?
|
373
357
|
end
|
374
358
|
|
375
359
|
def test_content_no_type
|
376
|
-
|
360
|
+
request = stub_request
|
361
|
+
assert_equal nil, request.content_type
|
377
362
|
end
|
378
363
|
|
379
364
|
def test_content_type_xml
|
380
|
-
|
381
|
-
assert_equal Mime::XML,
|
365
|
+
request = stub_request 'CONTENT_TYPE' => 'application/xml'
|
366
|
+
assert_equal Mime::XML, request.content_type
|
382
367
|
end
|
383
368
|
|
384
369
|
def test_content_type_with_charset
|
385
|
-
|
386
|
-
assert_equal Mime::XML,
|
370
|
+
request = stub_request 'CONTENT_TYPE' => 'application/xml; charset=UTF-8'
|
371
|
+
assert_equal Mime::XML, request.content_type
|
387
372
|
end
|
388
373
|
|
389
374
|
def test_user_agent
|
390
|
-
|
375
|
+
request = stub_request 'HTTP_USER_AGENT' => 'TestAgent'
|
376
|
+
assert_equal 'TestAgent', request.user_agent
|
391
377
|
end
|
392
378
|
|
393
379
|
def test_parameters
|
394
|
-
|
395
|
-
|
380
|
+
request = stub_request
|
381
|
+
request.stubs(:request_parameters).returns({ "foo" => 1 })
|
382
|
+
request.stubs(:query_parameters).returns({ "bar" => 2 })
|
396
383
|
|
397
|
-
assert_equal({"foo" => 1, "bar" => 2},
|
398
|
-
assert_equal({"foo" => 1},
|
399
|
-
assert_equal({"bar" => 2},
|
384
|
+
assert_equal({"foo" => 1, "bar" => 2}, request.parameters)
|
385
|
+
assert_equal({"foo" => 1}, request.request_parameters)
|
386
|
+
assert_equal({"bar" => 2}, request.query_parameters)
|
387
|
+
end
|
388
|
+
|
389
|
+
protected
|
390
|
+
|
391
|
+
def stub_request(env={})
|
392
|
+
ActionController::Request.new(env)
|
400
393
|
end
|
401
394
|
|
402
|
-
protected
|
403
|
-
def request_method=(method)
|
404
|
-
@request.env['REQUEST_METHOD'] = method.to_s.upcase
|
405
|
-
@request.request_method = nil # Reset the ivar cache
|
406
|
-
end
|
407
395
|
end
|