Commit Graph

29 Commits

Author SHA1 Message Date
Eloy Pérez f10e571f4d
Minor cleaning setting up tests (#1875)
We use minitest for Sinatra's test suite but we weren't using its rake task. I've updated the Rakefile to require and use Minitest default rake task to simplify.

Another change is to rename the `helper.rb` file to `test_helper.rb` because I think that name is used more in the community and require it directly without calling `File.expand_path`
2023-02-12 19:09:35 +01:00
Olle Jonsson 1559a20b06 refactor: use __dir__ in File.expand_path
__dir__ is nice, and available.
2022-02-02 15:58:11 -05:00
tamazon df65a73f77 Handle EOFError raised by Rack 2022-01-31 02:27:32 +09:00
John Hope 574e5a9e3d
Add support for parameters when creating mime types (#1256) 2020-03-13 17:02:56 -04:00
Mike Pastore 44c3cb89b7 Add full IndifferentHash implementation 2017-03-31 14:52:28 -05:00
Stephen Paul Weber ab69422e61 Make #has_key? also indifferent in access
With the old strategy for indifferent access, one still had to use the
correct one of String or Symbol to ask if params#has_key? -- this fixes
that so that access is more truly indifferent.
2017-03-07 10:39:08 +00:00
Jordan Owens 8f8df53ff2 Add error handling for bad requests (invalid params)
Requests that raise an error when parameters are parsed will
now respond with a 400 status instead of 500.
2016-05-04 09:51:28 -04:00
Vipul A M 23c2e197c8 - Removed test-unit dependency
- updated minitest to 5.0
- Removed Test::Unit::TestCase and started using Minitest::Test instead
- Fixed usage of assert_raise
- Fixed usage of refute_nil
- Fixed and removed usage of assert_nothing_raised
2015-01-11 01:00:47 +05:30
Damir Svrtan 9696af84ac Added tests for AcceptEntry#entry. 2014-06-20 00:40:25 +02:00
sbonami f2cd56c465 Make Request#accept? test name more descriptive
This commit modifies the Request#accept? test by making it more verbose
and descriptive of the scenario in which it validates.
2013-11-01 14:04:14 -04:00
sbonami bfaa9debfc Fix incorrect test title
This commit fixes an incorrect test title that misinformed what the
test was meant to prove.
2013-10-28 22:19:55 -04:00
sbonami da3282f493 Fix Request#accept? NoMethodError
Allow Request#accept? to return false when type parameter does not
match any of the preferred types. When `preferred_type(type)` returns
nil, `include?` will throw a NoMethodError. By converting output to a
string, `include?` will return false.
2013-10-25 20:46:40 -04:00
Patricio Mac Adden 4762e4a92b Make the request accept */* when HTTP_ACCEPT is not present or blank 2013-09-15 15:53:08 -03:00
wilkie ce6ef9f869 Fixes accept? to match wildcards in HTTP_ACCEPT. 2013-06-12 16:27:43 -04:00
Alan Harris bce185f196 Adjust #accept? to check if type is included in #preferred_type
- 960 tests, 2083 assertions, 0 failures, 0 errors, 0 skips
2013-06-05 01:56:28 -04:00
Vipul A M ef2c38955e Cleanup unused variables 2013-03-14 22:33:53 +05:30
Konstantin Haase 84a0da39ec fix test for Ruby 2.0 2013-03-10 13:04:06 +01:00
Konstantin Haase a045a3f8f6 make AcceptEntry behave like string 2013-03-10 12:39:29 +01:00
Pieter van de Bruggen b7c615c335 Exposing Accept header parameters. 2013-01-28 17:31:08 -08:00
Konstantin Haase e001d62669 adjust require lines for test helper, so it also works properly on 1.9.2 2011-05-11 09:44:02 +02:00
Konstantin Haase 1d9034ff80 use new! rather than new for tests testing instance method
that way we ensure not to have any middleware in front of the Sinatra instance
2011-03-12 15:52:43 +01:00
Konstantin Haase a05d1fa87d require stringio in request_test, fixes GH #51 2010-09-01 12:18:22 +02:00
Konstantin Haase 38ad411abd spec checking wether Marshal.dump(params) is possible 2010-09-01 12:15:33 +02:00
Adam Wiggins 0f030b6d1f request.secure? to check for ssl encrypted connection
Signed-off-by: Simon Rozet <simon@rozet.name>
2009-08-18 13:48:46 +02:00
Simon Rozet ff0d068687 Use contest instead of test/spec/mini
See <http://github.com/citrusbyte/contest> for more info. The
contest.rb file is included under the test/ directory.
2009-03-31 02:23:48 -07:00
Ryan Tomayko 4a75d9edfb Fix Request#params on PUT requests [#72]
Works around an issue introduced in Rack 0.9.0 with
request body params not being parsed when the request method
is PUT. This should be reverted once a fix lands in Rack.

Ticket for Rack fix:
http://rack.lighthouseapp.com/projects/22435-rack/tickets/20

More:
http://sinatra.lighthouseapp.com/projects/9779/tickets/72
2009-01-15 06:45:42 -08:00
Ryan Tomayko 72a6e01daf use Test::Unit style assertions in Sinatra specs 2009-01-14 14:00:26 -08:00
Ryan Tomayko c00a25ee41 Test framework refactoring
* Adds test/helper.rb and moves mock_app and other code specific
  to testing the framework out of Sinatra::Test.
* Do not require test/unit. The sinatra/test/unit,
  sinatra/test/spec, and sinatra/test/rspec files can be used to
  choose the framework.
* Add Sinatra::TestHarness, which should act similar to the
  Rack::Session proposal here: http://gist.github.com/41270
* Update the README with information on using the different test
  frameworks.
2009-01-14 07:52:04 -08:00
Ryan Tomayko a734cf38ac I knew I shoulda taken that left turn at Hoboken
This is a fairly large reworking of Sinatra's innards. Although
most of the internal implementation has been modified, it
provides the same basic feature set and is meant to be compatible
with Sinatra 0.3.2.

* The Event and EventContext classes have been removed. Sinatra
  applications are now defined within the class context of a
  Sinatra::Base subclass; each request is processed within a new
  instance.

* Sinatra::Base can be used as a base class for multiple
  Rack applications within a single process and can be used as
  Rack middleware.

* The routing and result type processing implementation has been
  simplified and enhanced a bit. There's a new route conditions
  system for things like :agent/:host matching and a request
  level #pass method has been added to allow an event handler to
  exit immediately, passing control to the next matching route.

* Regular expressions may now be used in route patterns. Captures
  are available as an array from "params[:captures]".

* The #body helper method now takes a block. The block is not
  evaluated until an attempt is made to read the body.

* Options are now dynamically generated class attributes on the
  Sinatra::Base subclass (instead of OpenStruct); options are
  inherited by subclasses and may be overridden up the
  inheritance hierarchy. The Base.set manages all option related
  stuff.

* The application file (app_file) detection heuristics are bit
  more sane now. This fixes some bugs with reloading and
  public/views directory detection. All thin / passenger issues
  of these type should be better now.

* Error mappings are now split into to distinct layers: exception
  mappings and custom error pages. Exception mappings are registered
  with 'error(Exception)' and are run only when the app raises an
  exception. Custom error pages are registered with error(status_code)
  and are run any time the response has the status code specified.
  It's also possible to register an error page for a range of status
  codes: 'error(500..599)'.

* The spec and unit testing extensions have been modified to take
  advantage of the ability to have multiple Sinatra applications.
  The Sinatra::Test module must be included within the TestCase
  in order to take advantage of these methods (unless the
  'sinatra/compat' library has been required).

* Rebuilt specs from scratch for better coverage and
  organization. Sinatra 3.2 unit tests have been retained
  under ./compat to ensure a baseline level of compatibility with
  previous versions; use the 'rake compat' task to run these.

A large number of existing Sinatra idioms have been deprecated but
continue to be supported through the 'sinatra/compat' library.

* The "set_option" and "set_options" methods have been deprecated
  due to redundancy; use "set".

* The "env" option (Sinatra::Base.env) has been renamed to "environment"
  and deprecated because it's too easy to confuse with the request-level
  Rack environment Hash (Sinatra::Base#env).

* The request level "stop" method has been renamed "halt" and
  deprecated. This is for consistency with `throw :halt`.

* The request level "entity_tag" method has been renamed "etag" and
  deprecated. Both versions were previously supported.

* The request level "headers" method has been deprecated. Use
  response['Header-Name'] to access and modify response headers.

* Sinatra.application is deprecated. Use Sinatra::Application instead.

* Setting Sinatra.application = nil to reset an application is
  deprecated. You shouldn't have to reset objects anymore.

* The Sinatra.default_options Hash is deprecated. Modifying this object now
  results in "set(key, value)" invocations on the Sinatra::Base
  subclass.

* The "body.to_result" convention has been deprecated.

* The ServerError exception has been deprecated. Any Exception is now
  considered a ServerError.
2008-12-20 18:45:28 -08:00