websocket 1.2.3 → 1.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +17 -0
  3. data/.github/workflows/publish.yml +17 -0
  4. data/.rubocop.yml +35 -3
  5. data/.travis.yml +14 -7
  6. data/CHANGELOG.md +24 -0
  7. data/Gemfile +12 -4
  8. data/README.md +3 -2
  9. data/Rakefile +8 -3
  10. data/lib/websocket.rb +4 -1
  11. data/lib/websocket/error.rb +8 -0
  12. data/lib/websocket/exception_handler.rb +3 -1
  13. data/lib/websocket/frame.rb +2 -0
  14. data/lib/websocket/frame/base.rb +5 -9
  15. data/lib/websocket/frame/data.rb +5 -2
  16. data/lib/websocket/frame/handler.rb +2 -0
  17. data/lib/websocket/frame/handler/base.rb +6 -4
  18. data/lib/websocket/frame/handler/handler03.rb +23 -16
  19. data/lib/websocket/frame/handler/handler04.rb +1 -0
  20. data/lib/websocket/frame/handler/handler05.rb +1 -0
  21. data/lib/websocket/frame/handler/handler07.rb +10 -9
  22. data/lib/websocket/frame/handler/handler75.rb +8 -7
  23. data/lib/websocket/frame/incoming.rb +2 -0
  24. data/lib/websocket/frame/incoming/client.rb +2 -0
  25. data/lib/websocket/frame/incoming/server.rb +2 -0
  26. data/lib/websocket/frame/outgoing.rb +3 -1
  27. data/lib/websocket/frame/outgoing/client.rb +2 -0
  28. data/lib/websocket/frame/outgoing/server.rb +2 -0
  29. data/lib/websocket/handshake.rb +2 -0
  30. data/lib/websocket/handshake/base.rb +26 -13
  31. data/lib/websocket/handshake/client.rb +17 -14
  32. data/lib/websocket/handshake/handler.rb +2 -0
  33. data/lib/websocket/handshake/handler/base.rb +2 -0
  34. data/lib/websocket/handshake/handler/client.rb +11 -0
  35. data/lib/websocket/handshake/handler/client01.rb +2 -0
  36. data/lib/websocket/handshake/handler/client04.rb +15 -4
  37. data/lib/websocket/handshake/handler/client11.rb +2 -0
  38. data/lib/websocket/handshake/handler/client75.rb +18 -2
  39. data/lib/websocket/handshake/handler/client76.rb +11 -5
  40. data/lib/websocket/handshake/handler/server.rb +2 -0
  41. data/lib/websocket/handshake/handler/server04.rb +12 -4
  42. data/lib/websocket/handshake/handler/server75.rb +21 -5
  43. data/lib/websocket/handshake/handler/server76.rb +14 -16
  44. data/lib/websocket/handshake/server.rb +7 -4
  45. data/lib/websocket/nice_inspect.rb +12 -0
  46. data/lib/websocket/version.rb +3 -1
  47. data/spec/frame/incoming_03_spec.rb +20 -17
  48. data/spec/frame/incoming_04_spec.rb +20 -17
  49. data/spec/frame/incoming_05_spec.rb +22 -19
  50. data/spec/frame/incoming_07_spec.rb +24 -21
  51. data/spec/frame/incoming_75_spec.rb +13 -10
  52. data/spec/frame/incoming_common_spec.rb +18 -8
  53. data/spec/frame/masking_spec.rb +3 -1
  54. data/spec/frame/outgoing_03_spec.rb +13 -10
  55. data/spec/frame/outgoing_04_spec.rb +13 -10
  56. data/spec/frame/outgoing_05_spec.rb +12 -9
  57. data/spec/frame/outgoing_07_spec.rb +13 -10
  58. data/spec/frame/outgoing_75_spec.rb +8 -5
  59. data/spec/frame/outgoing_common_spec.rb +11 -4
  60. data/spec/handshake/client_04_spec.rb +46 -3
  61. data/spec/handshake/client_11_spec.rb +5 -3
  62. data/spec/handshake/client_75_spec.rb +28 -1
  63. data/spec/handshake/client_76_spec.rb +30 -3
  64. data/spec/handshake/server_04_spec.rb +37 -4
  65. data/spec/handshake/server_75_spec.rb +25 -1
  66. data/spec/handshake/server_76_spec.rb +33 -9
  67. data/spec/spec_helper.rb +2 -2
  68. data/spec/support/all_client_drafts.rb +23 -21
  69. data/spec/support/all_server_drafts.rb +21 -16
  70. data/spec/support/frames_base.rb +2 -0
  71. data/spec/support/handshake_requests.rb +19 -17
  72. data/spec/support/incoming_frames.rb +46 -25
  73. data/spec/support/outgoing_frames.rb +30 -8
  74. data/spec/support/overwrites.rb +2 -0
  75. data/websocket.gemspec +4 -1
  76. metadata +7 -5
@@ -1,23 +1,26 @@
1
1
  # encoding: binary
2
+ # frozen_string_literal: true
3
+
2
4
  require 'spec_helper'
3
5
 
4
6
  RSpec.describe 'Incoming frame draft 05' do
7
+ subject { frame }
8
+
5
9
  let(:version) { 5 }
6
10
  let(:frame) { WebSocket::Frame::Incoming.new(version: version, data: encoded_text) }
7
11
  let(:encoded_text) { nil }
8
12
  let(:decoded_text) { nil }
9
13
  let(:frame_type) { nil }
10
14
  let(:error) { nil }
11
- subject { frame }
12
15
 
13
- it_should_behave_like 'valid_incoming_frame'
16
+ it_behaves_like 'valid_incoming_frame'
14
17
 
15
18
  context 'should properly decode close frame' do
16
19
  let(:encoded_text) { "\x81\x05" + decoded_text }
17
20
  let(:frame_type) { :close }
18
21
  let(:decoded_text) { 'Hello' }
19
22
 
20
- it_should_behave_like 'valid_incoming_frame'
23
+ it_behaves_like 'valid_incoming_frame'
21
24
  end
22
25
 
23
26
  context 'should properly decode ping frame' do
@@ -25,7 +28,7 @@ RSpec.describe 'Incoming frame draft 05' do
25
28
  let(:frame_type) { :ping }
26
29
  let(:decoded_text) { 'Hello' }
27
30
 
28
- it_should_behave_like 'valid_incoming_frame'
31
+ it_behaves_like 'valid_incoming_frame'
29
32
  end
30
33
 
31
34
  context 'should properly decode pong frame' do
@@ -33,7 +36,7 @@ RSpec.describe 'Incoming frame draft 05' do
33
36
  let(:frame_type) { :pong }
34
37
  let(:decoded_text) { 'Hello' }
35
38
 
36
- it_should_behave_like 'valid_incoming_frame'
39
+ it_behaves_like 'valid_incoming_frame'
37
40
  end
38
41
 
39
42
  context 'should properly decode text frame' do
@@ -41,7 +44,7 @@ RSpec.describe 'Incoming frame draft 05' do
41
44
  let(:decoded_text) { 'Hello' }
42
45
  let(:frame_type) { :text }
43
46
 
44
- it_should_behave_like 'valid_incoming_frame'
47
+ it_behaves_like 'valid_incoming_frame'
45
48
  end
46
49
 
47
50
  context 'should properly decode masked text frame' do
@@ -49,7 +52,7 @@ RSpec.describe 'Incoming frame draft 05' do
49
52
  let(:decoded_text) { 'Hello' }
50
53
  let(:frame_type) { :text }
51
54
 
52
- it_should_behave_like 'valid_incoming_frame'
55
+ it_behaves_like 'valid_incoming_frame'
53
56
  end
54
57
 
55
58
  context 'should properly decode text frame with continuation' do
@@ -57,7 +60,7 @@ RSpec.describe 'Incoming frame draft 05' do
57
60
  let(:frame_type) { :text }
58
61
  let(:decoded_text) { 'Hello' }
59
62
 
60
- it_should_behave_like 'valid_incoming_frame'
63
+ it_behaves_like 'valid_incoming_frame'
61
64
  end
62
65
 
63
66
  context 'should properly decode masked text frame with continuation' do
@@ -65,15 +68,15 @@ RSpec.describe 'Incoming frame draft 05' do
65
68
  let(:frame_type) { :text }
66
69
  let(:decoded_text) { 'Hello' }
67
70
 
68
- it_should_behave_like 'valid_incoming_frame'
71
+ it_behaves_like 'valid_incoming_frame'
69
72
  end
70
73
 
71
74
  context 'should properly decode text frame in between of continuation' do
72
75
  let(:encoded_text) { "\x04\x03Hel\x83\x03abc\x80\x02lo" }
73
- let(:frame_type) { [:pong, :text] }
74
- let(:decoded_text) { %w(abc Hello) }
76
+ let(:frame_type) { %i[pong text] }
77
+ let(:decoded_text) { %w[abc Hello] }
75
78
 
76
- it_should_behave_like 'valid_incoming_frame'
79
+ it_behaves_like 'valid_incoming_frame'
77
80
  end
78
81
 
79
82
  context 'should not return unfinished more frame' do
@@ -81,7 +84,7 @@ RSpec.describe 'Incoming frame draft 05' do
81
84
  let(:frame_type) { :pong }
82
85
  let(:decoded_text) { 'abc' }
83
86
 
84
- it_should_behave_like 'valid_incoming_frame'
87
+ it_behaves_like 'valid_incoming_frame'
85
88
  end
86
89
 
87
90
  context 'should properly decode 256 bytes binary frame' do
@@ -89,7 +92,7 @@ RSpec.describe 'Incoming frame draft 05' do
89
92
  let(:frame_type) { :binary }
90
93
  let(:decoded_text) { 'a' * 256 }
91
94
 
92
- it_should_behave_like 'valid_incoming_frame'
95
+ it_behaves_like 'valid_incoming_frame'
93
96
  end
94
97
 
95
98
  context 'should properly decode 64KiB binary frame' do
@@ -97,14 +100,14 @@ RSpec.describe 'Incoming frame draft 05' do
97
100
  let(:frame_type) { :binary }
98
101
  let(:decoded_text) { 'a' * 65_536 }
99
102
 
100
- it_should_behave_like 'valid_incoming_frame'
103
+ it_behaves_like 'valid_incoming_frame'
101
104
  end
102
105
 
103
106
  context 'should wait with incomplete frame' do
104
107
  let(:encoded_text) { "\x84\x06Hello" }
105
108
  let(:decoded_text) { nil }
106
109
 
107
- it_should_behave_like 'valid_incoming_frame'
110
+ it_behaves_like 'valid_incoming_frame'
108
111
  end
109
112
 
110
113
  context 'should raise error with invalid opcode' do
@@ -112,7 +115,7 @@ RSpec.describe 'Incoming frame draft 05' do
112
115
  let(:decoded_text) { nil }
113
116
  let(:error) { WebSocket::Error::Frame::UnknownOpcode }
114
117
 
115
- it_should_behave_like 'valid_incoming_frame'
118
+ it_behaves_like 'valid_incoming_frame'
116
119
  end
117
120
 
118
121
  context 'should raise error with too long frame' do
@@ -120,7 +123,7 @@ RSpec.describe 'Incoming frame draft 05' do
120
123
  let(:decoded_text) { nil }
121
124
  let(:error) { WebSocket::Error::Frame::TooLong }
122
125
 
123
- it_should_behave_like 'valid_incoming_frame'
126
+ it_behaves_like 'valid_incoming_frame'
124
127
  end
125
128
 
126
129
  context 'should raise error with continuation frame without more frame earlier' do
@@ -128,6 +131,6 @@ RSpec.describe 'Incoming frame draft 05' do
128
131
  let(:decoded_text) { nil }
129
132
  let(:error) { WebSocket::Error::Frame::UnexpectedContinuationFrame }
130
133
 
131
- it_should_behave_like 'valid_incoming_frame'
134
+ it_behaves_like 'valid_incoming_frame'
132
135
  end
133
136
  end
@@ -1,16 +1,19 @@
1
1
  # encoding: binary
2
+ # frozen_string_literal: true
3
+
2
4
  require 'spec_helper'
3
5
 
4
6
  RSpec.describe 'Incoming frame draft 07' do
7
+ subject { frame }
8
+
5
9
  let(:version) { 7 }
6
10
  let(:frame) { WebSocket::Frame::Incoming.new(version: version, data: encoded_text) }
7
11
  let(:encoded_text) { nil }
8
12
  let(:decoded_text) { nil }
9
13
  let(:frame_type) { nil }
10
14
  let(:error) { nil }
11
- subject { frame }
12
15
 
13
- it_should_behave_like 'valid_incoming_frame'
16
+ it_behaves_like 'valid_incoming_frame'
14
17
 
15
18
  context 'should properly decode close frame' do
16
19
  let(:encoded_text) { "\x88\x07\x03\xE8" + decoded_text }
@@ -18,7 +21,7 @@ RSpec.describe 'Incoming frame draft 07' do
18
21
  let(:decoded_text) { 'Hello' }
19
22
  let(:close_code) { 1000 }
20
23
 
21
- it_should_behave_like 'valid_incoming_frame'
24
+ it_behaves_like 'valid_incoming_frame'
22
25
  end
23
26
 
24
27
  context 'should raise error with invalid close code' do
@@ -26,7 +29,7 @@ RSpec.describe 'Incoming frame draft 07' do
26
29
  let(:decoded_text) { nil }
27
30
  let(:error) { WebSocket::Error::Frame::UnknownCloseCode }
28
31
 
29
- it_should_behave_like 'valid_incoming_frame'
32
+ it_behaves_like 'valid_incoming_frame'
30
33
  end
31
34
 
32
35
  context 'should properly decode close frame with invalid UTF-8 message' do
@@ -34,7 +37,7 @@ RSpec.describe 'Incoming frame draft 07' do
34
37
  let(:decoded_text) { nil }
35
38
  let(:error) { WebSocket::Error::Frame::InvalidPayloadEncoding }
36
39
 
37
- it_should_behave_like 'valid_incoming_frame'
40
+ it_behaves_like 'valid_incoming_frame'
38
41
  end
39
42
 
40
43
  context 'should properly decode ping frame' do
@@ -42,7 +45,7 @@ RSpec.describe 'Incoming frame draft 07' do
42
45
  let(:frame_type) { :ping }
43
46
  let(:decoded_text) { 'Hello' }
44
47
 
45
- it_should_behave_like 'valid_incoming_frame'
48
+ it_behaves_like 'valid_incoming_frame'
46
49
  end
47
50
 
48
51
  context 'should properly decode pong frame' do
@@ -50,7 +53,7 @@ RSpec.describe 'Incoming frame draft 07' do
50
53
  let(:frame_type) { :pong }
51
54
  let(:decoded_text) { 'Hello' }
52
55
 
53
- it_should_behave_like 'valid_incoming_frame'
56
+ it_behaves_like 'valid_incoming_frame'
54
57
  end
55
58
 
56
59
  context 'should properly decode text frame' do
@@ -58,7 +61,7 @@ RSpec.describe 'Incoming frame draft 07' do
58
61
  let(:decoded_text) { 'Hello' }
59
62
  let(:frame_type) { :text }
60
63
 
61
- it_should_behave_like 'valid_incoming_frame'
64
+ it_behaves_like 'valid_incoming_frame'
62
65
  end
63
66
 
64
67
  context 'should properly decode masked text frame' do
@@ -66,7 +69,7 @@ RSpec.describe 'Incoming frame draft 07' do
66
69
  let(:decoded_text) { 'Hello' }
67
70
  let(:frame_type) { :text }
68
71
 
69
- it_should_behave_like 'valid_incoming_frame'
72
+ it_behaves_like 'valid_incoming_frame'
70
73
  end
71
74
 
72
75
  context 'should properly decode text frame with continuation' do
@@ -74,7 +77,7 @@ RSpec.describe 'Incoming frame draft 07' do
74
77
  let(:frame_type) { :text }
75
78
  let(:decoded_text) { 'Hello' }
76
79
 
77
- it_should_behave_like 'valid_incoming_frame'
80
+ it_behaves_like 'valid_incoming_frame'
78
81
  end
79
82
 
80
83
  context 'should properly decode masked text frame with continuation' do
@@ -82,15 +85,15 @@ RSpec.describe 'Incoming frame draft 07' do
82
85
  let(:frame_type) { :text }
83
86
  let(:decoded_text) { 'Hello' }
84
87
 
85
- it_should_behave_like 'valid_incoming_frame'
88
+ it_behaves_like 'valid_incoming_frame'
86
89
  end
87
90
 
88
91
  context 'should properly decode text frame in between of continuation' do
89
92
  let(:encoded_text) { "\x01\x03Hel\x8a\x03abc\x80\x02lo" }
90
- let(:frame_type) { [:pong, :text] }
91
- let(:decoded_text) { %w(abc Hello) }
93
+ let(:frame_type) { %i[pong text] }
94
+ let(:decoded_text) { %w[abc Hello] }
92
95
 
93
- it_should_behave_like 'valid_incoming_frame'
96
+ it_behaves_like 'valid_incoming_frame'
94
97
  end
95
98
 
96
99
  context 'should not return unfinished more frame' do
@@ -98,7 +101,7 @@ RSpec.describe 'Incoming frame draft 07' do
98
101
  let(:frame_type) { :pong }
99
102
  let(:decoded_text) { 'abc' }
100
103
 
101
- it_should_behave_like 'valid_incoming_frame'
104
+ it_behaves_like 'valid_incoming_frame'
102
105
  end
103
106
 
104
107
  context 'should properly decode 256 bytes binary frame' do
@@ -106,7 +109,7 @@ RSpec.describe 'Incoming frame draft 07' do
106
109
  let(:frame_type) { :binary }
107
110
  let(:decoded_text) { 'a' * 256 }
108
111
 
109
- it_should_behave_like 'valid_incoming_frame'
112
+ it_behaves_like 'valid_incoming_frame'
110
113
  end
111
114
 
112
115
  context 'should properly decode 64KiB binary frame' do
@@ -114,14 +117,14 @@ RSpec.describe 'Incoming frame draft 07' do
114
117
  let(:frame_type) { :binary }
115
118
  let(:decoded_text) { 'a' * 65_536 }
116
119
 
117
- it_should_behave_like 'valid_incoming_frame'
120
+ it_behaves_like 'valid_incoming_frame'
118
121
  end
119
122
 
120
123
  context 'should wait with incomplete frame' do
121
124
  let(:encoded_text) { "\x81\x06Hello" }
122
125
  let(:decoded_text) { nil }
123
126
 
124
- it_should_behave_like 'valid_incoming_frame'
127
+ it_behaves_like 'valid_incoming_frame'
125
128
  end
126
129
 
127
130
  context 'should raise error with invalid opcode' do
@@ -129,7 +132,7 @@ RSpec.describe 'Incoming frame draft 07' do
129
132
  let(:decoded_text) { nil }
130
133
  let(:error) { WebSocket::Error::Frame::UnknownOpcode }
131
134
 
132
- it_should_behave_like 'valid_incoming_frame'
135
+ it_behaves_like 'valid_incoming_frame'
133
136
  end
134
137
 
135
138
  context 'should raise error with too long frame' do
@@ -137,7 +140,7 @@ RSpec.describe 'Incoming frame draft 07' do
137
140
  let(:decoded_text) { nil }
138
141
  let(:error) { WebSocket::Error::Frame::TooLong }
139
142
 
140
- it_should_behave_like 'valid_incoming_frame'
143
+ it_behaves_like 'valid_incoming_frame'
141
144
  end
142
145
 
143
146
  context 'should raise error with continuation frame without more frame earlier' do
@@ -145,6 +148,6 @@ RSpec.describe 'Incoming frame draft 07' do
145
148
  let(:decoded_text) { nil }
146
149
  let(:error) { WebSocket::Error::Frame::UnexpectedContinuationFrame }
147
150
 
148
- it_should_behave_like 'valid_incoming_frame'
151
+ it_behaves_like 'valid_incoming_frame'
149
152
  end
150
153
  end
@@ -1,31 +1,34 @@
1
1
  # encoding: binary
2
+ # frozen_string_literal: true
3
+
2
4
  require 'spec_helper'
3
5
 
4
6
  RSpec.describe 'Incoming frame draft 75' do
7
+ subject { frame }
8
+
5
9
  let(:version) { 75 }
6
10
  let(:frame) { WebSocket::Frame::Incoming.new(version: version, data: encoded_text) }
7
11
  let(:encoded_text) { nil }
8
12
  let(:decoded_text) { nil }
9
13
  let(:frame_type) { nil }
10
14
  let(:error) { nil }
11
- subject { frame }
12
15
 
13
- it_should_behave_like 'valid_incoming_frame'
16
+ it_behaves_like 'valid_incoming_frame'
14
17
 
15
18
  context 'with valid text frame' do
16
19
  let(:encoded_text) { "\x00abc\xFF" }
17
20
  let(:decoded_text) { 'abc' }
18
21
  let(:frame_type) { :text }
19
22
 
20
- it_should_behave_like 'valid_incoming_frame'
23
+ it_behaves_like 'valid_incoming_frame'
21
24
  end
22
25
 
23
26
  context 'with two frames' do
24
27
  let(:encoded_text) { "\x00abc\xFF\x00def\xFF" }
25
- let(:decoded_text) { %w(abc def) }
26
- let(:frame_type) { [:text, :text] }
28
+ let(:decoded_text) { %w[abc def] }
29
+ let(:frame_type) { %i[text text] }
27
30
 
28
- it_should_behave_like 'valid_incoming_frame'
31
+ it_behaves_like 'valid_incoming_frame'
29
32
  end
30
33
 
31
34
  context 'with close frame' do
@@ -33,27 +36,27 @@ RSpec.describe 'Incoming frame draft 75' do
33
36
  let(:decoded_text) { '' }
34
37
  let(:frame_type) { :close }
35
38
 
36
- it_should_behave_like 'valid_incoming_frame'
39
+ it_behaves_like 'valid_incoming_frame'
37
40
  end
38
41
 
39
42
  context 'with incomplete frame' do
40
43
  let(:encoded_text) { "\x00test" }
41
44
  let(:decoded_text) { nil }
42
45
 
43
- it_should_behave_like 'valid_incoming_frame'
46
+ it_behaves_like 'valid_incoming_frame'
44
47
  end
45
48
 
46
49
  context 'with invalid frame' do
47
50
  let(:encoded_text) { 'invalid' }
48
51
  let(:error) { WebSocket::Error::Frame::Invalid }
49
52
 
50
- it_should_behave_like 'valid_incoming_frame'
53
+ it_behaves_like 'valid_incoming_frame'
51
54
  end
52
55
 
53
56
  context 'with too long frame' do
54
57
  let(:encoded_text) { "\x00" + 'a' * WebSocket.max_frame_size + "\xFF" }
55
58
  let(:error) { WebSocket::Error::Frame::TooLong }
56
59
 
57
- it_should_behave_like 'valid_incoming_frame'
60
+ it_behaves_like 'valid_incoming_frame'
58
61
  end
59
62
  end
@@ -1,22 +1,32 @@
1
1
  # encoding: binary
2
+ # frozen_string_literal: true
3
+
2
4
  require 'spec_helper'
3
5
 
4
6
  RSpec.describe 'Incoming common frame' do
5
7
  subject { WebSocket::Frame::Incoming.new }
6
8
 
7
- its(:version) { is_expected.to eql(13) }
8
- its(:decoded?) { is_expected.to be false }
9
- its(:error?) { is_expected.to be false }
9
+ it 'is version 13' do
10
+ expect(subject.version).to be 13
11
+ end
12
+
13
+ it 'is not decoded' do
14
+ expect(subject.decoded?).to be false
15
+ end
16
+
17
+ it 'has no errors' do
18
+ expect(subject.error?).to be false
19
+ end
10
20
 
11
- it 'should allow adding data via <<' do
12
- expect(subject.data).to eql('')
21
+ it 'allows adding data via <<' do
22
+ expect(subject.data).to eql ''
13
23
  subject << 'test'
14
- expect(subject.data).to eql('test')
24
+ expect(subject.data).to eql 'test'
15
25
  end
16
26
 
17
- it 'should raise error on invalid version' do
27
+ it 'raises error on invalid version' do
18
28
  subject = WebSocket::Frame::Incoming.new(version: 70)
19
29
  expect(subject.error?).to be true
20
- expect(subject.error).to eql(:unknown_protocol_version)
30
+ expect(subject.error).to be :unknown_protocol_version
21
31
  end
22
32
  end
@@ -1,8 +1,10 @@
1
1
  # encoding: binary
2
+ # frozen_string_literal: true
3
+
2
4
  require 'spec_helper'
3
5
 
4
6
  RSpec.describe 'Masking frame draft 07' do
5
- it 'should encode and decode masked frame correctly' do
7
+ it 'encodes and decode masked frame correctly' do
6
8
  outgoing_frame = WebSocket::Frame::Outgoing::Client.new(data: 'Hello World', type: 'text')
7
9
  outgoing_frame.to_s
8
10
  expect(outgoing_frame.error).to be_nil
@@ -1,17 +1,20 @@
1
1
  # encoding: binary
2
+ # frozen_string_literal: true
3
+
2
4
  require 'spec_helper'
3
5
 
4
6
  RSpec.describe 'Outgoing frame draft 03' do
5
- let(:version) { 03 }
7
+ subject { frame }
8
+
9
+ let(:version) { 3 }
6
10
  let(:frame) { WebSocket::Frame::Outgoing.new(version: version, data: decoded_text, type: frame_type) }
7
11
  let(:decoded_text) { '' }
8
12
  let(:encoded_text) { "\x04\x00" }
9
13
  let(:frame_type) { :text }
10
14
  let(:require_sending) { true }
11
15
  let(:error) { nil }
12
- subject { frame }
13
16
 
14
- it_should_behave_like 'valid_outgoing_frame'
17
+ it_behaves_like 'valid_outgoing_frame'
15
18
 
16
19
  context 'should properly encode close frame' do
17
20
  let(:frame_type) { :close }
@@ -19,7 +22,7 @@ RSpec.describe 'Outgoing frame draft 03' do
19
22
  let(:encoded_text) { "\x01\x05" + decoded_text }
20
23
  let(:require_sending) { true }
21
24
 
22
- it_should_behave_like 'valid_outgoing_frame'
25
+ it_behaves_like 'valid_outgoing_frame'
23
26
  end
24
27
 
25
28
  context 'should properly encode ping frame' do
@@ -28,7 +31,7 @@ RSpec.describe 'Outgoing frame draft 03' do
28
31
  let(:encoded_text) { "\x02\x05" + decoded_text }
29
32
  let(:require_sending) { true }
30
33
 
31
- it_should_behave_like 'valid_outgoing_frame'
34
+ it_behaves_like 'valid_outgoing_frame'
32
35
  end
33
36
 
34
37
  context 'should properly encode pong frame' do
@@ -37,7 +40,7 @@ RSpec.describe 'Outgoing frame draft 03' do
37
40
  let(:encoded_text) { "\x03\x05" + decoded_text }
38
41
  let(:require_sending) { true }
39
42
 
40
- it_should_behave_like 'valid_outgoing_frame'
43
+ it_behaves_like 'valid_outgoing_frame'
41
44
  end
42
45
 
43
46
  context 'should properly encode text frame' do
@@ -45,7 +48,7 @@ RSpec.describe 'Outgoing frame draft 03' do
45
48
  let(:encoded_text) { "\x04\x05" + decoded_text }
46
49
  let(:require_sending) { true }
47
50
 
48
- it_should_behave_like 'valid_outgoing_frame'
51
+ it_behaves_like 'valid_outgoing_frame'
49
52
  end
50
53
 
51
54
  context 'should properly encode 256 bytes binary frame' do
@@ -54,7 +57,7 @@ RSpec.describe 'Outgoing frame draft 03' do
54
57
  let(:encoded_text) { "\x05\x7E\x01\x00" + decoded_text }
55
58
  let(:require_sending) { true }
56
59
 
57
- it_should_behave_like 'valid_outgoing_frame'
60
+ it_behaves_like 'valid_outgoing_frame'
58
61
  end
59
62
 
60
63
  context 'should properly encode 64KiB binary frame' do
@@ -63,7 +66,7 @@ RSpec.describe 'Outgoing frame draft 03' do
63
66
  let(:encoded_text) { "\x05\x7F\x00\x00\x00\x00\x00\x01\x00\x00" + decoded_text }
64
67
  let(:require_sending) { true }
65
68
 
66
- it_should_behave_like 'valid_outgoing_frame'
69
+ it_behaves_like 'valid_outgoing_frame'
67
70
  end
68
71
 
69
72
  context 'should return error for unknown frame type' do
@@ -73,6 +76,6 @@ RSpec.describe 'Outgoing frame draft 03' do
73
76
  let(:error) { :unknown_frame_type }
74
77
  let(:require_sending) { false }
75
78
 
76
- it_should_behave_like 'valid_outgoing_frame'
79
+ it_behaves_like 'valid_outgoing_frame'
77
80
  end
78
81
  end