test: cover WebSocketFrameTest, decode and WebSocketHandshakeTest
This commit is contained in:
1 parent
14b93c93bf
commit
d8d0139a0f
2 files changed
+158
No files matched your search
@@ -0,0 +1,54 @@
|
||||
require 'minitest/autorun'
|
||||
require 'prism'
|
||||
|
||||
class WebSocketHandshakeTest < Minitest::Test
|
||||
Handshake = Prism::WebSocket::Handshake
|
||||
|
||||
# RFC 6455 section 1.3's worked example - the canonical regression test
|
||||
# for any Sec-WebSocket-Accept implementation.
|
||||
def test_accept_key_matches_the_rfc_6455_worked_example
|
||||
assert_equal 's3pPLMBiTxaQ9kYGzzhZRbK+xOo=', Handshake.accept_key('dGhlIHNhbXBsZSBub25jZQ==')
|
||||
end
|
||||
|
||||
def test_request_recognizes_a_valid_upgrade_request
|
||||
env = {
|
||||
'REQUEST_METHOD' => 'GET',
|
||||
'HTTP_UPGRADE' => 'websocket',
|
||||
'HTTP_CONNECTION' => 'Upgrade',
|
||||
'HTTP_SEC_WEBSOCKET_KEY' => 'dGhlIHNhbXBsZSBub25jZQ=='
|
||||
}
|
||||
assert Handshake.request?(env)
|
||||
end
|
||||
|
||||
def test_request_accepts_a_comma_separated_connection_header
|
||||
env = {
|
||||
'REQUEST_METHOD' => 'GET',
|
||||
'HTTP_UPGRADE' => 'websocket',
|
||||
'HTTP_CONNECTION' => 'keep-alive, Upgrade',
|
||||
'HTTP_SEC_WEBSOCKET_KEY' => 'dGhlIHNhbXBsZSBub25jZQ=='
|
||||
}
|
||||
assert Handshake.request?(env)
|
||||
end
|
||||
|
||||
def test_request_rejects_a_plain_get
|
||||
env = { 'REQUEST_METHOD' => 'GET' }
|
||||
refute Handshake.request?(env)
|
||||
end
|
||||
|
||||
def test_request_rejects_missing_upgrade_header
|
||||
env = { 'REQUEST_METHOD' => 'GET', 'HTTP_CONNECTION' => 'Upgrade', 'HTTP_SEC_WEBSOCKET_KEY' => 'x' }
|
||||
refute Handshake.request?(env)
|
||||
end
|
||||
|
||||
def test_request_rejects_missing_sec_websocket_key
|
||||
env = { 'REQUEST_METHOD' => 'GET', 'HTTP_UPGRADE' => 'websocket', 'HTTP_CONNECTION' => 'Upgrade' }
|
||||
refute Handshake.request?(env)
|
||||
end
|
||||
|
||||
def test_response_headers_include_the_computed_accept_value
|
||||
headers = Handshake.response_headers('HTTP_SEC_WEBSOCKET_KEY' => 'dGhlIHNhbXBsZSBub25jZQ==')
|
||||
assert_equal 'websocket', headers['Upgrade']
|
||||
assert_equal 'Upgrade', headers['Connection']
|
||||
assert_equal 's3pPLMBiTxaQ9kYGzzhZRbK+xOo=', headers['Sec-WebSocket-Accept']
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user