aboutsummaryrefslogtreecommitdiffstats
path: root/actioncable/test
Commit message (Collapse)AuthorAgeFilesLines
* Use assert_empty and assert_not_emptyDaniel Colson2018-01-251-3/+3
|
* Use assert_predicate and assert_not_predicateDaniel Colson2018-01-256-13/+13
|
* Change refute to assert_notDaniel Colson2018-01-251-1/+1
|
* Fix unstable test test_delegate_socket_errors_to_on_error_handlerFumiaki MATSUSHIMA2017-11-231-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I often face the following error when running test/connection/client_socket_test.rb: ``` $ bin/test test/connection/client_socket_test.rb:38 Run options: --seed 44035 # Running: F Failure: ActionCable::Connection::ClientSocketTest#test_delegate_socket_errors_to_on_error_handler [/app/actioncable/test/connection/client_socket_test.rb:47]: --- expected +++ actual @@ -1 +1 @@ -["foo"] +["Broken pipe", "Broken pipe", "Broken pipe", "foo"] ``` It can be reproduced easily by applying the following patch: ``` diff --git a/actioncable/test/connection/client_socket_test.rb b/actioncable/test/connection/client_socket_test.rb index 2051216010..6bb9f13ea7 100644 --- a/actioncable/test/connection/client_socket_test.rb +++ b/actioncable/test/connection/client_socket_test.rb @@ -34,7 +34,8 @@ def on_error(message) @server.config.allowed_request_origins = %w( http://rubyonrails.com ) end - test "delegate socket errors to on_error handler" do + 1000.times do |i| + test "delegate socket errors to on_error handler #{i}" do run_in_eventmachine do connection = open_connection @@ -47,6 +48,7 @@ def on_error(message) assert_equal %w[ foo ], connection.errors end end + end test "closes hijacked i/o socket at shutdown" do run_in_eventmachine do ``` The cause is writing io from different thread at the same time. `connection.process` sends handshake message from [StreamEventLoop's thread][] whereas `connection.handle_open` sends welcome message from current thread. [StreamEventLoop's thread]: https://github.com/rails/rails/blob/067fc779c4560fff4812614a2f78f9248f3e55f8/actioncable/lib/action_cable/connection/stream_event_loop.rb#L75
* Action Cable: run Redis tests against a default config without a passwordJeremy Daer2017-11-131-2/+21
| | | | | | | | Simplify our dev testing and CI story since we're also testing against Redis for the Active Support cache store. Directly test whether db, host, password, etc are passed through as config instead of spinning up a Redis server with a password set on it.
* Removed deprected evented redis adapterRafael Mendonça França2017-10-231-61/+0
|
* Fix RuboCop offensesKoichi ITO2017-08-161-1/+1
| | | | And enable `context_dependent` of Style/BracesAroundHashParameters cop.
* Remove unused `close_connection` in Action Cable tests (#30195)Ryuta Kamizono2017-08-112-8/+0
|
* Use frozen string literal in actioncable/Kir Shatrov2017-07-2335-0/+70
|
* Fix postgresql adapter setup for ActionCable testspalkan2017-07-111-1/+1
| | | | | (cherry picked from commit e2093c1f678175bde7c37c848686d979427346e1) (cherry picked from commit d7dbe48273bd9e0adb1de5b52e3cdaeb4a65630b)
* [Fix #28751] Hash stream long stream identifiers when using Postgres adapterpalkan2017-07-061-0/+14
|
* Remove redundant `assert_respond_to`Ryuta Kamizono2017-07-031-13/+3
| | | | It is covered by following assertion.
* Revert "Merge pull request #29540 from kirs/rubocop-frozen-string"Matthew Draper2017-07-0235-35/+0
| | | | | This reverts commit 3420a14590c0e6915d8b6c242887f74adb4120f9, reversing changes made to afb66a5a598ce4ac74ad84b125a5abf046dcf5aa.
* Enforce frozen string in RubocopKir Shatrov2017-07-0135-0/+35
|
* Allows for other common redis options to be in cable.yml, by defaultMarc Ignacio2017-06-222-2/+10
| | | | | | | | | | | | | | | | | | - Adds RedisAdapterTest::AlternateConfiguration to account for a relatively common alternative setup, as it’s used as the first example in the [Redis rubygem](https://github.com/redis/redis-rb#getting-started) - Supplies original RedisAdapterTest with more complete redis:// url format by adding a ‘userinfo’ (blank user), so that it resembles the alternate configuration - Supplies original EventedRedisAdapterTest with more complete redis:// url as well - Adds before_script to start redis-server with password as a daemon and with explicit defaults copied from the default redis.conf (Instead of using Travis' default init/upstart scripts for `redis` service)
* Use `require_relative` instead of `require` with full pathbogdanvlviv2017-06-145-7/+7
|
* Define path with __dir__bogdanvlviv2017-05-231-1/+1
| | | | | | ".. with __dir__ we can restore order in the Universe." - by @fxn Related to 5b8738c2df003a96f0e490c43559747618d10f5f
* Work around all the thingsMatthew Draper2017-04-061-1/+11
|
* Avoid "can't modify frozen IOError" failuresMatthew Draper2017-04-051-5/+16
| | | | https://bugs.ruby-lang.org/issues/13239
* Fix a race in ActionCable stream testsMatthew Draper2017-03-231-0/+4
| | | | | These tests double-stub connection.pubsub, so we need to ensure the first call's completed before we set up for the second.
* Deprecate the EventedRedis subscription adapterMatthew Draper2017-02-231-1/+3
| | | | | Unlike Faye support, it seems a bit too documented to remove without warning. So, here's a warning.
* correctly check error messageyuuji.yaginuma2017-01-251-3/+6
| | | | | | | `assert_raise` does not check error message. However, in some tests, it seems like expecting error message checking with `assert_raise`. Instead of specifying an error message in `assert_raise`, modify to use another assert to check the error message.
* Add channel_prefix support to ActionCable redis/evented_redis adapters.Chad Ingram2017-01-173-0/+40
|
* ActionCable should not raise when a connection is already openDuncan Grazier2017-01-061-2/+5
| | | | | | | | | | | ActionCable was throwing a "Existing connection must be closed before opening" exception which was being picked up as a production issue in our error monitoring software. Since this happens pretty often on any device that allows the browser to sleep (mobile) this error was getting triggered often. This change removes the exception, but keeps logging the occurrence. We now return `false` to let the caller now that `open` failed.
* Privatize unneededly protected methods in Action Cable testsAkira Matsuda2016-12-243-3/+3
|
* Prevent race condition when launching EventMachine reactorMatthew Draper2016-11-301-0/+26
| | | | | | | reactor_running? will be true just after the thread enters EventMachine.run; reactor_thread only gets set after the internal initialize_event_machine method has been called, the C extension is set up, and it is entering its run loop.
* Add more Action Cable JavaScript testsJavan Makhmali2016-11-214-0/+78
|
* Add more rubocop rules about whitespacesRafael Mendonça França2016-10-294-14/+14
|
* Permit same-origin connections by defaultMatthew Draper2016-10-111-1/+2
| | | | | | | | | | | | | | | | | WebSocket always defers the decision to the server, because it didn't have to deal with legacy compatibility... but the same-origin policy is still a reasonable default. Origin checks do not protect against a directly connecting attacker -- they can lie about their host, but can also lie about their origin. Origin checks protect against a connection from 3rd-party controlled script in a context where a victim browser's cookies will be passed along. And if an attacker has breached that protection, they've already compromised the HTTP session, so treating the WebSocket connection in the same way seems reasonable. In case this logic proves incorrect (or anyone just wants to be more paranoid), we retain a config option to disable it.
* Merge pull request #26568 from skateman/cable-sameorigin-as-hostMatthew Draper2016-10-111-0/+8
|\ | | | | | | Optionally allow ActionCable requests from the same host as origin
| * Optionally allow ActionCable requests from the same host as originDávid Halász2016-09-211-0/+8
| | | | | | | | | | | | | | When the `allow_same_origin_as_host` is set to `true`, the request forgery protection permits `HTTP_ORIGIN` values starting with the corresponding `proto://` prefix followed by `HTTP_HOST`. This way it is not required to specify the list of allowed URLs.
* | Wait for the socket to be closed asynchronouslyMatthew Draper2016-10-061-2/+10
| |
* | Use a branch of websocket-client-simple, to work around read/close raceMatthew Draper2016-10-061-7/+0
| |
* | Don't shut down adapters that haven't been setMatthew Draper2016-10-041-1/+1
| | | | | | | | We hit when we skip the PostgreSQL adapter.
* | Add tests for Server::Base#restartJon Moss2016-10-021-0/+33
| |
* | Use websocket-client-simple instead of Faye as a websockets clientMatthew Draper2016-10-021-57/+81
| | | | | | | | | | | | Mostly, this is just to avoid EventMachine. But there's also an argument to be made that we're better off using a different protocol library for our test suite than the one we use to implement the server.
* | Shut down EventMachine before re-enabling warningsMatthew Draper2016-10-022-0/+9
| |
* | In-line the configuration points that only existed for Faye supportMatthew Draper2016-10-011-1/+0
| |
* | Remove Faye modeMatthew Draper2016-10-016-63/+4
| | | | | | | | No deprecation, because it was never documented.
* | Merge pull request #26547 from ↵Matthew Draper2016-10-015-6/+47
|\ \ | | | | | | | | | | | | | | | palkan/fix/actioncable-confirmation-race-condition Avoid race condition on subscription confirmation
| * | Add Channel#ensure_confirmation_sent; call #subscribe_to_channel after ↵palkan2016-09-224-6/+15
| | | | | | | | | | | | initializing
| * | [Fix #25381] Avoid race condition on subscription confirmationpalkan2016-09-203-5/+37
| |/
* / Buffer writes to the cable socketsMatthew Draper2016-09-281-1/+3
|/ | | | | Otherwise, they can sometimes block, leading to reduced system throughput.
* Prevent invocation of channel action if rejected connectionJon Moss2016-08-191-0/+15
| | | | | | | | | Fixes #23757. Before this commit, even if `reject` was called in the `subscribe` method for an Action Cable channel, all actions on that channel could still be invoked. This calls a `return` if a rejected connection tries to invoke any actions on the channel.
* Add three new rubocop rulesRafael Mendonça França2016-08-163-26/+26
| | | | | | | | Style/SpaceBeforeBlockBraces Style/SpaceInsideBlockBraces Style/SpaceInsideHashLiteralBraces Fix all violations in the repository.
* revises more Lint/EndAlignment offensesXavier Noria2016-08-081-6/+6
|
* Add `Style/EmptyLines` in `.rubocop.yml` and remove extra empty linesRyuta Kamizono2016-08-071-2/+0
|
* applies remaining conventions across the projectXavier Noria2016-08-061-1/+0
|
* normalizes indentation and whitespace across the projectXavier Noria2016-08-061-3/+3
|
* remove redundant curlies from hash argumentsXavier Noria2016-08-065-7/+7
|