SPEC.md in ably-0.8.1 vs SPEC.md in ably-0.8.2
- old
+ new
@@ -1,6 +1,6 @@
-# Ably Realtime & REST Client Library 0.8.0 Specification
+# Ably Realtime & REST Client Library 0.8.1 Specification
### Ably::Realtime::Channel#history
_(see [spec/acceptance/realtime/channel_history_spec.rb](./spec/acceptance/realtime/channel_history_spec.rb))_
* using JSON and MsgPack protocol
* [returns a SafeDeferrable that catches exceptions in callbacks and logs them](./spec/acceptance/realtime/channel_history_spec.rb#L21)
@@ -168,11 +168,11 @@
* [never calls the provided success block](./spec/acceptance/realtime/connection_failures_spec.rb#L263)
* connection resume
* when DISCONNECTED ProtocolMessage received from the server
* [reconnects automatically and immediately](./spec/acceptance/realtime/connection_failures_spec.rb#L292)
* and subsequently fails to reconnect
- * [retries every CONNECT_RETRY_CONFIG[:disconnected][:retry_every] seconds](./spec/acceptance/realtime/connection_failures_spec.rb#L322)
+ * [retries every 15 seconds](./spec/acceptance/realtime/connection_failures_spec.rb#L322)
* when websocket transport is closed
* [reconnects automatically](./spec/acceptance/realtime/connection_failures_spec.rb#L365)
* after successfully reconnecting and resuming
* [retains connection_id and connection_key](./spec/acceptance/realtime/connection_failures_spec.rb#L382)
* [retains channel subscription state](./spec/acceptance/realtime/connection_failures_spec.rb#L399)
@@ -274,47 +274,47 @@
* [raises an exception](./spec/acceptance/realtime/connection_spec.rb#L501)
* with a success block that raises an exception
* [catches the exception and logs the error](./spec/acceptance/realtime/connection_spec.rb#L508)
* recovery
* #recovery_key
- * [is composed of connection id and serial that is kept up to date with each message ACK received](./spec/acceptance/realtime/connection_spec.rb#L545)
- * [is available when connection is in one of the states: connecting, connected, disconnected, suspended, failed](./spec/acceptance/realtime/connection_spec.rb#L566)
- * [is nil when connection is explicitly CLOSED](./spec/acceptance/realtime/connection_spec.rb#L590)
+ * [is composed of connection key and serial that is kept up to date with each message ACK received](./spec/acceptance/realtime/connection_spec.rb#L545)
+ * [is available when connection is in one of the states: connecting, connected, disconnected, suspended, failed](./spec/acceptance/realtime/connection_spec.rb#L568)
+ * [is nil when connection is explicitly CLOSED](./spec/acceptance/realtime/connection_spec.rb#L592)
* opening a new connection using a recently disconnected connection's #recovery_key
* connection#id and connection#key after recovery
- * [remains the same](./spec/acceptance/realtime/connection_spec.rb#L604)
+ * [remains the same](./spec/acceptance/realtime/connection_spec.rb#L606)
* when messages have been sent whilst the old connection is disconnected
* the new connection
- * [recovers server-side queued messages](./spec/acceptance/realtime/connection_spec.rb#L645)
+ * [recovers server-side queued messages](./spec/acceptance/realtime/connection_spec.rb#L647)
* with :recover option
* with invalid syntax
- * [raises an exception](./spec/acceptance/realtime/connection_spec.rb#L670)
+ * [raises an exception](./spec/acceptance/realtime/connection_spec.rb#L672)
* with invalid formatted value sent to server
- * [triggers a fatal error on the connection object, sets the #error_reason and disconnects](./spec/acceptance/realtime/connection_spec.rb#L679)
+ * [triggers a fatal error on the connection object, sets the #error_reason and disconnects](./spec/acceptance/realtime/connection_spec.rb#L681)
* with expired (missing) value sent to server
- * [triggers an error on the connection object, sets the #error_reason, yet will connect anyway](./spec/acceptance/realtime/connection_spec.rb#L694)
+ * [triggers an error on the connection object, sets the #error_reason, yet will connect anyway](./spec/acceptance/realtime/connection_spec.rb#L696)
* with many connections simultaneously
- * [opens each with a unique connection#id and connection#key](./spec/acceptance/realtime/connection_spec.rb#L713)
+ * [opens each with a unique connection#id and connection#key](./spec/acceptance/realtime/connection_spec.rb#L715)
* when a state transition is unsupported
- * [emits a StateChangeError](./spec/acceptance/realtime/connection_spec.rb#L733)
+ * [emits a StateChangeError](./spec/acceptance/realtime/connection_spec.rb#L735)
* protocol failure
* receiving an invalid ProtocolMessage
- * [emits an error on the connection and logs a fatal error message](./spec/acceptance/realtime/connection_spec.rb#L749)
+ * [emits an error on the connection and logs a fatal error message](./spec/acceptance/realtime/connection_spec.rb#L751)
* undocumented method
* #internet_up?
- * [returns a Deferrable](./spec/acceptance/realtime/connection_spec.rb#L765)
+ * [returns a Deferrable](./spec/acceptance/realtime/connection_spec.rb#L767)
* internet up URL protocol
* when using TLS for the connection
- * [uses TLS for the Internet check to https://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L776)
+ * [uses TLS for the Internet check to https://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L778)
* when using a non-secured connection
- * [uses TLS for the Internet check to http://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L786)
+ * [uses TLS for the Internet check to http://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L788)
* when the Internet is up
- * [calls the block with true](./spec/acceptance/realtime/connection_spec.rb#L795)
- * [calls the success callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L802)
+ * [calls the block with true](./spec/acceptance/realtime/connection_spec.rb#L797)
+ * [calls the success callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L804)
* when the Internet is down
- * [calls the block with false](./spec/acceptance/realtime/connection_spec.rb#L814)
- * [calls the failure callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L821)
+ * [calls the block with false](./spec/acceptance/realtime/connection_spec.rb#L816)
+ * [calls the failure callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L823)
### Ably::Realtime::Channel Message
_(see [spec/acceptance/realtime/message_spec.rb](./spec/acceptance/realtime/message_spec.rb))_
* using JSON and MsgPack protocol
* [sends a String data payload](./spec/acceptance/realtime/message_spec.rb#L25)
@@ -471,11 +471,11 @@
* [raises an exception if not entered](./spec/acceptance/realtime/presence_spec.rb#L600)
* :data option
* when set to a string
* [emits the new data for the leave event](./spec/acceptance/realtime/presence_spec.rb#L561)
* when set to nil
- * [emits the previously defined value as a convenience](./spec/acceptance/realtime/presence_spec.rb#L574)
+ * [emits a nil value for the data attribute when leaving](./spec/acceptance/realtime/presence_spec.rb#L574)
* when not passed as an argument
* [emits the previously defined value as a convenience](./spec/acceptance/realtime/presence_spec.rb#L587)
* it should behave like a public presence method
* [returns a SafeDeferrable that catches exceptions in callbacks and logs them](./spec/acceptance/realtime/presence_spec.rb#L56)
* [calls the Deferrable callback on success](./spec/acceptance/realtime/presence_spec.rb#L63)
@@ -580,11 +580,11 @@
* [emits an error when cipher does not match and presence data cannot be decoded](./spec/acceptance/realtime/presence_spec.rb#L1293)
* leaving
* [expect :left event once underlying connection is closed](./spec/acceptance/realtime/presence_spec.rb#L1310)
* [expect :left event with client data from enter event](./spec/acceptance/realtime/presence_spec.rb#L1320)
* connection failure mid-way through a large member sync
- * PENDING: *[resumes the SYNC operation](./spec/acceptance/realtime/presence_spec.rb#L1339)*
+ * [resumes the SYNC operation](./spec/acceptance/realtime/presence_spec.rb#L1338)
### Ably::Realtime::Client#stats
_(see [spec/acceptance/realtime/stats_spec.rb](./spec/acceptance/realtime/stats_spec.rb))_
* using JSON and MsgPack protocol
* fetching stats
@@ -603,120 +603,120 @@
* using JSON and MsgPack protocol
* [has immutable options](./spec/acceptance/rest/auth_spec.rb#L54)
* #request_token
* [returns a valid requested token in the expected format with valid issued and expires attributes](./spec/acceptance/rest/auth_spec.rb#L69)
* with option :client_id
- * [overrides default and uses camelCase notation for attributes](./spec/acceptance/rest/auth_spec.rb#L100)
+ * [overrides default and uses camelCase notation for attributes](./spec/acceptance/rest/auth_spec.rb#L101)
* with option :capability
- * [overrides default and uses camelCase notation for attributes](./spec/acceptance/rest/auth_spec.rb#L100)
+ * [overrides default and uses camelCase notation for attributes](./spec/acceptance/rest/auth_spec.rb#L101)
* with option :nonce
- * [overrides default and uses camelCase notation for attributes](./spec/acceptance/rest/auth_spec.rb#L100)
+ * [overrides default and uses camelCase notation for attributes](./spec/acceptance/rest/auth_spec.rb#L101)
* with option :timestamp
- * [overrides default and uses camelCase notation for attributes](./spec/acceptance/rest/auth_spec.rb#L100)
+ * [overrides default and uses camelCase notation for attributes](./spec/acceptance/rest/auth_spec.rb#L101)
* with option :ttl
- * [overrides default and uses camelCase notation for attributes](./spec/acceptance/rest/auth_spec.rb#L100)
+ * [overrides default and uses camelCase notation for attributes](./spec/acceptance/rest/auth_spec.rb#L101)
* with :key option
- * [key_name is used in request and signing uses key_secret](./spec/acceptance/rest/auth_spec.rb#L129)
+ * [key_name is used in request and signing uses key_secret](./spec/acceptance/rest/auth_spec.rb#L130)
* with :key_name & :key_secret options
- * [key_name is used in request and signing uses key_secret](./spec/acceptance/rest/auth_spec.rb#L158)
+ * [key_name is used in request and signing uses key_secret](./spec/acceptance/rest/auth_spec.rb#L159)
* with :query_time option
- * [queries the server for the time](./spec/acceptance/rest/auth_spec.rb#L166)
+ * [queries the server for the time](./spec/acceptance/rest/auth_spec.rb#L167)
* without :query_time option
- * [does not query the server for the time](./spec/acceptance/rest/auth_spec.rb#L175)
+ * [does not query the server for the time](./spec/acceptance/rest/auth_spec.rb#L176)
* with :auth_url option
* when response from :auth_url is a valid token request
- * [requests a token from :auth_url using an HTTP GET request](./spec/acceptance/rest/auth_spec.rb#L223)
- * [returns a valid token generated from the token request](./spec/acceptance/rest/auth_spec.rb#L228)
+ * [requests a token from :auth_url using an HTTP GET request](./spec/acceptance/rest/auth_spec.rb#L224)
+ * [returns a valid token generated from the token request](./spec/acceptance/rest/auth_spec.rb#L229)
* with :query_params
- * [requests a token from :auth_url with the :query_params](./spec/acceptance/rest/auth_spec.rb#L235)
+ * [requests a token from :auth_url with the :query_params](./spec/acceptance/rest/auth_spec.rb#L236)
* with :headers
- * [requests a token from :auth_url with the HTTP headers set](./spec/acceptance/rest/auth_spec.rb#L243)
+ * [requests a token from :auth_url with the HTTP headers set](./spec/acceptance/rest/auth_spec.rb#L244)
* with POST
- * [requests a token from :auth_url using an HTTP POST instead of the default GET](./spec/acceptance/rest/auth_spec.rb#L251)
+ * [requests a token from :auth_url using an HTTP POST instead of the default GET](./spec/acceptance/rest/auth_spec.rb#L252)
* when response from :auth_url is a token details object
- * [returns TokenDetails created from the token JSON](./spec/acceptance/rest/auth_spec.rb#L276)
+ * [returns TokenDetails created from the token JSON](./spec/acceptance/rest/auth_spec.rb#L277)
* when response from :auth_url is text/plain content type and a token string
- * [returns TokenDetails created from the token JSON](./spec/acceptance/rest/auth_spec.rb#L293)
+ * [returns TokenDetails created from the token JSON](./spec/acceptance/rest/auth_spec.rb#L294)
* when response is invalid
* 500
- * [raises ServerError](./spec/acceptance/rest/auth_spec.rb#L306)
+ * [raises ServerError](./spec/acceptance/rest/auth_spec.rb#L307)
* XML
- * [raises InvalidResponseBody](./spec/acceptance/rest/auth_spec.rb#L317)
+ * [raises InvalidResponseBody](./spec/acceptance/rest/auth_spec.rb#L318)
* with a Proc for the :auth_callback option
* that returns a TokenRequest
- * [calls the Proc when authenticating to obtain the request token](./spec/acceptance/rest/auth_spec.rb#L336)
- * [uses the token request returned from the callback when requesting a new token](./spec/acceptance/rest/auth_spec.rb#L341)
+ * [calls the Proc when authenticating to obtain the request token](./spec/acceptance/rest/auth_spec.rb#L337)
+ * [uses the token request returned from the callback when requesting a new token](./spec/acceptance/rest/auth_spec.rb#L342)
* that returns a TokenDetails JSON object
- * [calls the Proc when authenticating to obtain the request token](./spec/acceptance/rest/auth_spec.rb#L370)
- * [uses the token request returned from the callback when requesting a new token](./spec/acceptance/rest/auth_spec.rb#L375)
+ * [calls the Proc when authenticating to obtain the request token](./spec/acceptance/rest/auth_spec.rb#L371)
+ * [uses the token request returned from the callback when requesting a new token](./spec/acceptance/rest/auth_spec.rb#L376)
* that returns a TokenDetails object
- * [uses the token request returned from the callback when requesting a new token](./spec/acceptance/rest/auth_spec.rb#L396)
+ * [uses the token request returned from the callback when requesting a new token](./spec/acceptance/rest/auth_spec.rb#L397)
* that returns a Token string
- * [uses the token request returned from the callback when requesting a new token](./spec/acceptance/rest/auth_spec.rb#L412)
+ * [uses the token request returned from the callback when requesting a new token](./spec/acceptance/rest/auth_spec.rb#L413)
* with client_id
- * [returns a token with the client_id](./spec/acceptance/rest/auth_spec.rb#L444)
+ * [returns a token with the client_id](./spec/acceptance/rest/auth_spec.rb#L445)
* before #authorise has been called
- * [has no current_token_details](./spec/acceptance/rest/auth_spec.rb#L451)
+ * [has no current_token_details](./spec/acceptance/rest/auth_spec.rb#L452)
* #authorise
- * [updates the persisted auth options that are then used for subsequent authorise requests](./spec/acceptance/rest/auth_spec.rb#L498)
+ * [updates the persisted auth options that are then used for subsequent authorise requests](./spec/acceptance/rest/auth_spec.rb#L499)
* when called for the first time since the client has been instantiated
- * [passes all options to #request_token](./spec/acceptance/rest/auth_spec.rb#L462)
- * [returns a valid token](./spec/acceptance/rest/auth_spec.rb#L467)
- * [issues a new token if option :force => true](./spec/acceptance/rest/auth_spec.rb#L471)
+ * [passes all options to #request_token](./spec/acceptance/rest/auth_spec.rb#L463)
+ * [returns a valid token](./spec/acceptance/rest/auth_spec.rb#L468)
+ * [issues a new token if option :force => true](./spec/acceptance/rest/auth_spec.rb#L472)
* with previous authorisation
- * [does not request a token if current_token_details has not expired](./spec/acceptance/rest/auth_spec.rb#L482)
- * [requests a new token if token is expired](./spec/acceptance/rest/auth_spec.rb#L487)
- * [issues a new token if option :force => true](./spec/acceptance/rest/auth_spec.rb#L493)
+ * [does not request a token if current_token_details has not expired](./spec/acceptance/rest/auth_spec.rb#L483)
+ * [requests a new token if token is expired](./spec/acceptance/rest/auth_spec.rb#L488)
+ * [issues a new token if option :force => true](./spec/acceptance/rest/auth_spec.rb#L494)
* with a Proc for the :auth_callback option
- * [calls the Proc](./spec/acceptance/rest/auth_spec.rb#L514)
- * [uses the token request returned from the callback when requesting a new token](./spec/acceptance/rest/auth_spec.rb#L518)
+ * [calls the Proc](./spec/acceptance/rest/auth_spec.rb#L515)
+ * [uses the token request returned from the callback when requesting a new token](./spec/acceptance/rest/auth_spec.rb#L519)
* for every subsequent #request_token
* without a :auth_callback Proc
- * [calls the originally provided block](./spec/acceptance/rest/auth_spec.rb#L524)
+ * [calls the originally provided block](./spec/acceptance/rest/auth_spec.rb#L525)
* with a provided block
- * [does not call the originally provided Proc and calls the new #request_token :auth_callback Proc](./spec/acceptance/rest/auth_spec.rb#L531)
+ * [does not call the originally provided Proc and calls the new #request_token :auth_callback Proc](./spec/acceptance/rest/auth_spec.rb#L532)
* #create_token_request
- * [uses the key name from the client](./spec/acceptance/rest/auth_spec.rb#L547)
- * [uses the default TTL](./spec/acceptance/rest/auth_spec.rb#L551)
- * [uses the default capability](./spec/acceptance/rest/auth_spec.rb#L555)
+ * [uses the key name from the client](./spec/acceptance/rest/auth_spec.rb#L548)
+ * [uses the default TTL](./spec/acceptance/rest/auth_spec.rb#L552)
+ * [uses the default capability](./spec/acceptance/rest/auth_spec.rb#L556)
* the nonce
- * [is unique for every request](./spec/acceptance/rest/auth_spec.rb#L560)
- * [is at least 16 characters](./spec/acceptance/rest/auth_spec.rb#L565)
+ * [is unique for every request](./spec/acceptance/rest/auth_spec.rb#L561)
+ * [is at least 16 characters](./spec/acceptance/rest/auth_spec.rb#L566)
* with option :ttl
- * [overrides default](./spec/acceptance/rest/auth_spec.rb#L576)
+ * [overrides default](./spec/acceptance/rest/auth_spec.rb#L577)
* with option :nonce
- * [overrides default](./spec/acceptance/rest/auth_spec.rb#L576)
+ * [overrides default](./spec/acceptance/rest/auth_spec.rb#L577)
* with option :client_id
- * [overrides default](./spec/acceptance/rest/auth_spec.rb#L576)
+ * [overrides default](./spec/acceptance/rest/auth_spec.rb#L577)
* with additional invalid attributes
- * [are ignored](./spec/acceptance/rest/auth_spec.rb#L584)
+ * [are ignored](./spec/acceptance/rest/auth_spec.rb#L585)
* when required fields are missing
- * [should raise an exception if key secret is missing](./spec/acceptance/rest/auth_spec.rb#L595)
- * [should raise an exception if key name is missing](./spec/acceptance/rest/auth_spec.rb#L599)
+ * [should raise an exception if key secret is missing](./spec/acceptance/rest/auth_spec.rb#L596)
+ * [should raise an exception if key name is missing](./spec/acceptance/rest/auth_spec.rb#L600)
* with :query_time option
- * [queries the server for the timestamp](./spec/acceptance/rest/auth_spec.rb#L608)
+ * [queries the server for the timestamp](./spec/acceptance/rest/auth_spec.rb#L609)
* with :timestamp option
- * [uses the provided timestamp in the token request](./spec/acceptance/rest/auth_spec.rb#L618)
+ * [uses the provided timestamp in the token request](./spec/acceptance/rest/auth_spec.rb#L619)
* signing
- * [generates a valid HMAC](./spec/acceptance/rest/auth_spec.rb#L640)
+ * [generates a valid HMAC](./spec/acceptance/rest/auth_spec.rb#L641)
* using token authentication
* with :token option
- * [authenticates successfully using the provided :token](./spec/acceptance/rest/auth_spec.rb#L663)
- * [disallows publishing on unspecified capability channels](./spec/acceptance/rest/auth_spec.rb#L667)
- * [fails if timestamp is invalid](./spec/acceptance/rest/auth_spec.rb#L675)
- * [cannot be renewed automatically](./spec/acceptance/rest/auth_spec.rb#L683)
+ * [authenticates successfully using the provided :token](./spec/acceptance/rest/auth_spec.rb#L664)
+ * [disallows publishing on unspecified capability channels](./spec/acceptance/rest/auth_spec.rb#L668)
+ * [fails if timestamp is invalid](./spec/acceptance/rest/auth_spec.rb#L676)
+ * [cannot be renewed automatically](./spec/acceptance/rest/auth_spec.rb#L684)
* when implicit as a result of using :client id
* and requests to the Ably server are mocked
- * [will send a token request to the server](./spec/acceptance/rest/auth_spec.rb#L711)
+ * [will send a token request to the server](./spec/acceptance/rest/auth_spec.rb#L712)
* a token is created
- * [before a request is made](./spec/acceptance/rest/auth_spec.rb#L720)
- * [when a message is published](./spec/acceptance/rest/auth_spec.rb#L724)
- * [with capability and TTL defaults](./spec/acceptance/rest/auth_spec.rb#L728)
+ * [before a request is made](./spec/acceptance/rest/auth_spec.rb#L721)
+ * [when a message is published](./spec/acceptance/rest/auth_spec.rb#L725)
+ * [with capability and TTL defaults](./spec/acceptance/rest/auth_spec.rb#L729)
* when using an :key and basic auth
- * [#using_token_auth? is false](./spec/acceptance/rest/auth_spec.rb#L743)
- * [#key attribute contains the key string](./spec/acceptance/rest/auth_spec.rb#L747)
- * [#using_basic_auth? is true](./spec/acceptance/rest/auth_spec.rb#L751)
+ * [#using_token_auth? is false](./spec/acceptance/rest/auth_spec.rb#L744)
+ * [#key attribute contains the key string](./spec/acceptance/rest/auth_spec.rb#L748)
+ * [#using_basic_auth? is true](./spec/acceptance/rest/auth_spec.rb#L752)
### Ably::Rest
_(see [spec/acceptance/rest/base_spec.rb](./spec/acceptance/rest/base_spec.rb))_
* transport protocol
* when protocol is not defined it defaults to :msgpack
@@ -852,11 +852,11 @@
* [stringifies the JSON and sets the encoding attribute to "json"](./spec/acceptance/rest/encoders_spec.rb#L139)
* with encryption
* with UTF-8 data
* [applies utf-8, cipher and base64 encodings and sets the encoding attribute to "utf-8/cipher+aes-128-cbc/base64"](./spec/acceptance/rest/encoders_spec.rb#L154)
* with binary data
- * [applies cipher and base64 encoding and sets the encoding attribute to "utf-8/cipher+aes-128-cbc/base64"](./spec/acceptance/rest/encoders_spec.rb#L165)
+ * [applies cipher and base64 encoding and sets the encoding attribute to "cipher+aes-128-cbc/base64"](./spec/acceptance/rest/encoders_spec.rb#L165)
* with JSON data
* [applies json, utf-8, cipher and base64 encoding and sets the encoding attribute to "json/utf-8/cipher+aes-128-cbc/base64"](./spec/acceptance/rest/encoders_spec.rb#L176)
### Ably::Rest::Channel messages
_(see [spec/acceptance/rest/message_spec.rb](./spec/acceptance/rest/message_spec.rb))_
@@ -2066,8 +2066,8 @@
-------
## Test summary
- * Passing tests: 1028
- * Pending tests: 7
+ * Passing tests: 1029
+ * Pending tests: 6
* Failing tests: 0