tp2 0.17 → 0.18

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f064819fba5d42c4376f3895ee0cce07745149e6b9ed06e864acb1ac3515d9e
4
- data.tar.gz: 84767b1d2cd87c6006ba7202f48c2bf1cdc9345ddf258c8fcd716bcf2023c264
3
+ metadata.gz: 6b2eaad3a3794a09c6a10e69cc3813ad27789049bd71055f315edcc5ac61b1a6
4
+ data.tar.gz: 7a8529db038480936bbb44a2a9e059ea5625b6d3f1cbb9eb7d04c185ab4268b9
5
5
  SHA512:
6
- metadata.gz: 72b97e276e4abb593566d761f44ac7bfa0a9af5d9ff5dcbece407412dd07eac84a9dfbe6d983c832010fb9a365be27053df471d2b9e76a2955b7332a33b06e69
7
- data.tar.gz: 6a13102f1f2008b32aa34fec7da9b2cda496e19f5445525f398b6c4f0a863b15bb68bf94b457e56f0b3c6ace41d3caca4722158ea69fc638d6a828f39e047bbd
6
+ metadata.gz: 5a8c23907e0e4f4d9024bf2457efdfa1b003d3d4870a65ec6a44e8ab3cc67d5d7bf096a5adba39a0e552c0eefe7fe9306a1612c19382ff64a3689805c98ff903
7
+ data.tar.gz: c4183ad2dade4aaf4511fd4d9f856c2532bf8c374a99a632010c629112c1f1fc8020f7bc7580cf3295a25bfd2826ce79b99561348f35c727176b20ea4f559cb6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.18 2025-09-14
2
+
3
+ - Add `Request#set_cookie` method
4
+
1
5
  # 0.17 2025-09-14
2
6
 
3
7
  - Add support for server extensions: `Date`, `Server` headers
@@ -142,6 +142,15 @@ module TP2
142
142
  @response_headers ? @response_headers.merge!(headers) : @response_headers = headers
143
143
  end
144
144
 
145
+ def set_cookie(*cookies)
146
+ existing_cookies = @response_headers && @response_headers['Set-Cookie']
147
+ if existing_cookies
148
+ @response_headers['Set-Cookie'] = existing_cookies + cookies
149
+ else
150
+ set_response_headers('Set-Cookie' => cookies)
151
+ end
152
+ end
153
+
145
154
  SEND_FLAGS = UM::MSG_NOSIGNAL | UM::MSG_WAITALL
146
155
 
147
156
  # Sends response including headers and body. Waits for the request to complete
@@ -15,4 +15,8 @@ class Qeweney::Request
15
15
  def set_response_headers(headers)
16
16
  adapter.set_response_headers(headers)
17
17
  end
18
+
19
+ def set_cookie(*)
20
+ adapter.set_cookie(*)
21
+ end
18
22
  end
data/lib/tp2/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module TP2
2
- VERSION = '0.17'
2
+ VERSION = '0.18'
3
3
  end
@@ -582,4 +582,48 @@ class ConnectionTest < Minitest::Test
582
582
  expected = "HTTP/1.1 200\r\nTransfer-Encoding: chunked\r\nSet-Cookie: foo=bar\r\nFoo: bar\r\nContent-Type: text/plain\r\n\r\n3\r\nfoo\r\n0\r\n\r\n"
583
583
  assert_equal expected, response
584
584
  end
585
+
586
+ def test_set_cookie_single
587
+ @hook = ->(req) {
588
+ req.set_cookie('foo=bar; HttpOnly')
589
+ req.respond('foo')
590
+ }
591
+
592
+ write_client_side("GET / HTTP/1.1\r\n\r\n")
593
+ @adapter.serve_request
594
+ response = read_client_side(65536)
595
+ expected = "HTTP/1.1 200\r\nTransfer-Encoding: chunked\r\nSet-Cookie: foo=bar; HttpOnly\r\n\r\n3\r\nfoo\r\n0\r\n\r\n"
596
+ assert_equal expected, response
597
+
598
+ end
599
+
600
+ def test_set_cookie_multi1
601
+ @hook = ->(req) {
602
+ req.set_cookie('foo=bar; HttpOnly', 'bar=baz')
603
+ req.respond('foo')
604
+ }
605
+
606
+ write_client_side("GET / HTTP/1.1\r\n\r\n")
607
+ @adapter.serve_request
608
+ response = read_client_side(65536)
609
+ expected = "HTTP/1.1 200\r\nTransfer-Encoding: chunked\r\nSet-Cookie: foo=bar; HttpOnly\r\nSet-Cookie: bar=baz\r\n\r\n3\r\nfoo\r\n0\r\n\r\n"
610
+ assert_equal expected, response
611
+
612
+ end
613
+
614
+ def test_set_cookie_multi2
615
+ @hook = ->(req) {
616
+ req.set_cookie('a=1', 'b=2')
617
+ req.set_cookie('c=3')
618
+ req.set_cookie('d=4', 'e=5')
619
+ req.respond('foo')
620
+ }
621
+
622
+ write_client_side("GET / HTTP/1.1\r\n\r\n")
623
+ @adapter.serve_request
624
+ response = read_client_side(65536)
625
+ expected = "HTTP/1.1 200\r\nTransfer-Encoding: chunked\r\nSet-Cookie: a=1\r\nSet-Cookie: b=2\r\nSet-Cookie: c=3\r\nSet-Cookie: d=4\r\nSet-Cookie: e=5\r\n\r\n3\r\nfoo\r\n0\r\n\r\n"
626
+ assert_equal expected, response
627
+
628
+ end
585
629
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tp2
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.17'
4
+ version: '0.18'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner