rubysl-cgi 1.0.0

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 (104) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE +25 -0
  6. data/README.md +29 -0
  7. data/Rakefile +2 -0
  8. data/lib/cgi.rb +1 -0
  9. data/lib/rubysl/cgi.rb +2 -0
  10. data/lib/rubysl/cgi/cgi.rb +2333 -0
  11. data/lib/rubysl/cgi/version.rb +5 -0
  12. data/rubysl-cgi.gemspec +23 -0
  13. data/spec/cookie/domain_spec.rb +22 -0
  14. data/spec/cookie/expires_spec.rb +22 -0
  15. data/spec/cookie/initialize_spec.rb +146 -0
  16. data/spec/cookie/name_spec.rb +22 -0
  17. data/spec/cookie/parse_spec.rb +17 -0
  18. data/spec/cookie/path_spec.rb +22 -0
  19. data/spec/cookie/secure_spec.rb +69 -0
  20. data/spec/cookie/to_s_spec.rb +28 -0
  21. data/spec/cookie/value_spec.rb +79 -0
  22. data/spec/escapeElement_spec.rb +19 -0
  23. data/spec/escapeHTML_spec.rb +25 -0
  24. data/spec/escape_spec.rb +13 -0
  25. data/spec/header_spec.rb +7 -0
  26. data/spec/htmlextension/a_spec.rb +48 -0
  27. data/spec/htmlextension/base_spec.rb +32 -0
  28. data/spec/htmlextension/blockquote_spec.rb +32 -0
  29. data/spec/htmlextension/br_spec.rb +21 -0
  30. data/spec/htmlextension/caption_spec.rb +32 -0
  31. data/spec/htmlextension/checkbox_group_spec.rb +77 -0
  32. data/spec/htmlextension/checkbox_spec.rb +76 -0
  33. data/spec/htmlextension/doctype_spec.rb +26 -0
  34. data/spec/htmlextension/file_field_spec.rb +73 -0
  35. data/spec/htmlextension/fixtures/common.rb +16 -0
  36. data/spec/htmlextension/form_spec.rb +57 -0
  37. data/spec/htmlextension/frame_spec.rb +13 -0
  38. data/spec/htmlextension/frameset_spec.rb +13 -0
  39. data/spec/htmlextension/hidden_spec.rb +58 -0
  40. data/spec/htmlextension/html_spec.rb +65 -0
  41. data/spec/htmlextension/image_button_spec.rb +68 -0
  42. data/spec/htmlextension/img_spec.rb +84 -0
  43. data/spec/htmlextension/multipart_form_spec.rb +63 -0
  44. data/spec/htmlextension/password_field_spec.rb +83 -0
  45. data/spec/htmlextension/popup_menu_spec.rb +7 -0
  46. data/spec/htmlextension/radio_button_spec.rb +76 -0
  47. data/spec/htmlextension/radio_group_spec.rb +78 -0
  48. data/spec/htmlextension/reset_spec.rb +56 -0
  49. data/spec/htmlextension/scrolling_list_spec.rb +7 -0
  50. data/spec/htmlextension/shared/popup_menu.rb +94 -0
  51. data/spec/htmlextension/submit_spec.rb +56 -0
  52. data/spec/htmlextension/text_field_spec.rb +83 -0
  53. data/spec/htmlextension/textarea_spec.rb +72 -0
  54. data/spec/http_header_spec.rb +9 -0
  55. data/spec/initialize_spec.rb +171 -0
  56. data/spec/out_spec.rb +50 -0
  57. data/spec/parse_spec.rb +23 -0
  58. data/spec/pretty_spec.rb +23 -0
  59. data/spec/print_spec.rb +25 -0
  60. data/spec/queryextension/accept_charset_spec.rb +21 -0
  61. data/spec/queryextension/accept_encoding_spec.rb +21 -0
  62. data/spec/queryextension/accept_language_spec.rb +21 -0
  63. data/spec/queryextension/accept_spec.rb +21 -0
  64. data/spec/queryextension/auth_type_spec.rb +21 -0
  65. data/spec/queryextension/cache_control_spec.rb +21 -0
  66. data/spec/queryextension/content_length_spec.rb +25 -0
  67. data/spec/queryextension/content_type_spec.rb +21 -0
  68. data/spec/queryextension/cookies_spec.rb +9 -0
  69. data/spec/queryextension/element_reference_spec.rb +33 -0
  70. data/spec/queryextension/from_spec.rb +21 -0
  71. data/spec/queryextension/gateway_interface_spec.rb +21 -0
  72. data/spec/queryextension/has_key_spec.rb +6 -0
  73. data/spec/queryextension/host_spec.rb +21 -0
  74. data/spec/queryextension/include_spec.rb +6 -0
  75. data/spec/queryextension/key_spec.rb +6 -0
  76. data/spec/queryextension/keys_spec.rb +19 -0
  77. data/spec/queryextension/multipart_spec.rb +39 -0
  78. data/spec/queryextension/negotiate_spec.rb +21 -0
  79. data/spec/queryextension/params_spec.rb +44 -0
  80. data/spec/queryextension/path_info_spec.rb +21 -0
  81. data/spec/queryextension/path_translated_spec.rb +21 -0
  82. data/spec/queryextension/pragma_spec.rb +21 -0
  83. data/spec/queryextension/query_string_spec.rb +21 -0
  84. data/spec/queryextension/raw_cookie2_spec.rb +21 -0
  85. data/spec/queryextension/raw_cookie_spec.rb +21 -0
  86. data/spec/queryextension/referer_spec.rb +21 -0
  87. data/spec/queryextension/remote_addr_spec.rb +21 -0
  88. data/spec/queryextension/remote_host_spec.rb +21 -0
  89. data/spec/queryextension/remote_ident_spec.rb +21 -0
  90. data/spec/queryextension/remote_user_spec.rb +21 -0
  91. data/spec/queryextension/request_method_spec.rb +21 -0
  92. data/spec/queryextension/script_name_spec.rb +21 -0
  93. data/spec/queryextension/server_name_spec.rb +21 -0
  94. data/spec/queryextension/server_port_spec.rb +25 -0
  95. data/spec/queryextension/server_protocol_spec.rb +21 -0
  96. data/spec/queryextension/server_software_spec.rb +21 -0
  97. data/spec/queryextension/shared/has_key.rb +19 -0
  98. data/spec/queryextension/user_agent_spec.rb +21 -0
  99. data/spec/rfc1123_date_spec.rb +9 -0
  100. data/spec/shared/http_header.rb +111 -0
  101. data/spec/unescapeElement_spec.rb +19 -0
  102. data/spec/unescapeHTML_spec.rb +33 -0
  103. data/spec/unescape_spec.rb +14 -0
  104. metadata +293 -0
@@ -0,0 +1,21 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#accept_charset" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['HTTP_ACCEPT_CHARSET']" do
14
+ old_value, ENV['HTTP_ACCEPT_CHARSET'] = ENV['HTTP_ACCEPT_CHARSET'], "ISO-8859-1,utf-8;q=0.7,*;q=0.7"
15
+ begin
16
+ @cgi.accept_charset.should == "ISO-8859-1,utf-8;q=0.7,*;q=0.7"
17
+ ensure
18
+ ENV['HTTP_ACCEPT_CHARSET'] = old_value
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#accept_encoding" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['HTTP_ACCEPT_ENCODING']" do
14
+ old_value, ENV['HTTP_ACCEPT_ENCODING'] = ENV['HTTP_ACCEPT_ENCODING'], "gzip,deflate"
15
+ begin
16
+ @cgi.accept_encoding.should == "gzip,deflate"
17
+ ensure
18
+ ENV['HTTP_ACCEPT_ENCODING'] = old_value
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#accept_language" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['HTTP_ACCEPT_LANGUAGE']" do
14
+ old_value, ENV['HTTP_ACCEPT_LANGUAGE'] = ENV['HTTP_ACCEPT_LANGUAGE'], "en-us,en;q=0.5"
15
+ begin
16
+ @cgi.accept_language.should == "en-us,en;q=0.5"
17
+ ensure
18
+ ENV['HTTP_ACCEPT_LANGUAGE'] = old_value
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#accept" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['HTTP_ACCEPT']" do
14
+ old_value, ENV['HTTP_ACCEPT'] = ENV['HTTP_ACCEPT'], "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
15
+ begin
16
+ @cgi.accept.should == "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
17
+ ensure
18
+ ENV['HTTP_ACCEPT'] = old_value
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#auth_type" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['AUTH_TYPE']" do
14
+ old_value, ENV['AUTH_TYPE'] = ENV['AUTH_TYPE'], "Basic"
15
+ begin
16
+ @cgi.auth_type.should == "Basic"
17
+ ensure
18
+ ENV['AUTH_TYPE'] = old_value
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#cache_control" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['HTTP_CACHE_CONTROL']" do
14
+ old_value, ENV['HTTP_CACHE_CONTROL'] = ENV['HTTP_CACHE_CONTROL'], "no-cache"
15
+ begin
16
+ @cgi.cache_control.should == "no-cache"
17
+ ensure
18
+ ENV['HTTP_CACHE_CONTROL'] = old_value
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#content_length" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['CONTENT_LENGTH'] as Integer" do
14
+ old_value = ENV['CONTENT_LENGTH']
15
+ begin
16
+ ENV['CONTENT_LENGTH'] = nil
17
+ @cgi.content_length.should be_nil
18
+
19
+ ENV['CONTENT_LENGTH'] = "100"
20
+ @cgi.content_length.should eql(100)
21
+ ensure
22
+ ENV['CONTENT_LENGTH'] = old_value
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#content_type" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['CONTENT_TYPE']" do
14
+ old_value, ENV['CONTENT_TYPE'] = ENV['CONTENT_TYPE'], "text/html"
15
+ begin
16
+ @cgi.content_type.should == "text/html"
17
+ ensure
18
+ ENV['CONTENT_TYPE'] = old_value
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#cookies" do
4
+ it "needs to be reviewed for spec completeness"
5
+ end
6
+
7
+ describe "CGI::QueryExtension#cookies=" do
8
+ it "needs to be reviewed for spec completeness"
9
+ end
@@ -0,0 +1,33 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#[]" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ ENV['QUERY_STRING'], @old_query_string = "one=a&two=b&two=c", ENV['QUERY_STRING']
7
+ @cgi = CGI.new
8
+ end
9
+
10
+ after(:each) do
11
+ ENV['REQUEST_METHOD'] = @old_request_method
12
+ ENV['QUERY_STRING'] = @old_query_string
13
+ end
14
+
15
+ it "it returns the value for the parameter with the given key" do
16
+ @cgi["one"].should == "a"
17
+ end
18
+
19
+ it "only returns the first value for parameters with multiple values" do
20
+ @cgi["two"].should == "b"
21
+ end
22
+
23
+ it "returns a String" do
24
+ @cgi["one"].should be_kind_of(String)
25
+ end
26
+
27
+ ruby_version_is "" ... "1.9" do
28
+ it "sets the other values in the returned value" do
29
+ @cgi["one"].to_a.should == ["a"]
30
+ @cgi["two"].to_a.should == ["b", "c"]
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,21 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#from" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['HTTP_FROM']" do
14
+ old_value, ENV['HTTP_FROM'] = ENV['HTTP_FROM'], "googlebot(at)googlebot.com"
15
+ begin
16
+ @cgi.from.should == "googlebot(at)googlebot.com"
17
+ ensure
18
+ ENV['HTTP_FROM'] = old_value
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#gateway_interface" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['GATEWAY_INTERFACE']" do
14
+ old_value, ENV['GATEWAY_INTERFACE'] = ENV['GATEWAY_INTERFACE'], "CGI/1.1"
15
+ begin
16
+ @cgi.gateway_interface.should == "CGI/1.1"
17
+ ensure
18
+ ENV['GATEWAY_INTERFACE'] = old_value
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,6 @@
1
+ require 'cgi'
2
+ require File.expand_path('../shared/has_key', __FILE__)
3
+
4
+ describe "CGI::QueryExtension#has_key?" do
5
+ it_behaves_like :cgi_query_extension_has_key_p, :has_key?
6
+ end
@@ -0,0 +1,21 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#host" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['HTTP_HOST']" do
14
+ old_value, ENV['HTTP_HOST'] = ENV['HTTP_HOST'], "localhost"
15
+ begin
16
+ @cgi.host.should == "localhost"
17
+ ensure
18
+ ENV['HTTP_HOST'] = old_value
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,6 @@
1
+ require 'cgi'
2
+ require File.expand_path('../shared/has_key', __FILE__)
3
+
4
+ describe "CGI::QueryExtension#include?" do
5
+ it_behaves_like :cgi_query_extension_has_key_p, :include?
6
+ end
@@ -0,0 +1,6 @@
1
+ require 'cgi'
2
+ require File.expand_path('../shared/has_key', __FILE__)
3
+
4
+ describe "CGI::QueryExtension#key?" do
5
+ it_behaves_like :cgi_query_extension_has_key_p, :key?
6
+ end
@@ -0,0 +1,19 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#keys" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ ENV['QUERY_STRING'], @old_query_string = "one=a&two=b", ENV['QUERY_STRING']
7
+
8
+ @cgi = CGI.new
9
+ end
10
+
11
+ after(:each) do
12
+ ENV['REQUEST_METHOD'] = @old_request_method
13
+ ENV['QUERY_STRING'] = @old_query_string
14
+ end
15
+
16
+ it "returns all parameter keys as an Array" do
17
+ @cgi.keys.sort.should == ["one", "two"]
18
+ end
19
+ end
@@ -0,0 +1,39 @@
1
+ require 'cgi'
2
+ require "stringio"
3
+
4
+ describe "CGI::QueryExtension#multipart?" do
5
+ before(:each) do
6
+ @old_stdin = $stdin
7
+
8
+ @old_request_method = ENV['REQUEST_METHOD']
9
+ @old_content_type = ENV['CONTENT_TYPE']
10
+ @old_content_length = ENV['CONTENT_LENGTH']
11
+
12
+ ENV['REQUEST_METHOD'] = "POST"
13
+ ENV["CONTENT_TYPE"] = "multipart/form-data; boundary=---------------------------1137522503144128232716531729"
14
+ ENV["CONTENT_LENGTH"] = "222"
15
+
16
+ $stdin = StringIO.new <<-EOS
17
+ -----------------------------1137522503144128232716531729\r
18
+ Content-Disposition: form-data; name="file"; filename=""\r
19
+ Content-Type: application/octet-stream\r
20
+ \r
21
+ \r
22
+ -----------------------------1137522503144128232716531729--\r
23
+ EOS
24
+
25
+ @cgi = CGI.new
26
+ end
27
+
28
+ after(:each) do
29
+ $stdin = @old_stdin
30
+
31
+ ENV['REQUEST_METHOD'] = @old_request_method
32
+ ENV['CONTENT_TYPE'] = @old_content_type
33
+ ENV['CONTENT_LENGTH'] = @old_content_length
34
+ end
35
+
36
+ it "returns true if the current Request is a multipart request" do
37
+ @cgi.multipart?.should be_true
38
+ end
39
+ end
@@ -0,0 +1,21 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#negotiate" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ @cgi = CGI.new
7
+ end
8
+
9
+ after(:each) do
10
+ ENV['REQUEST_METHOD'] = @old_request_method
11
+ end
12
+
13
+ it "returns ENV['HTTP_NEGOTIATE']" do
14
+ old_value, ENV['HTTP_NEGOTIATE'] = ENV['HTTP_NEGOTIATE'], "trans"
15
+ begin
16
+ @cgi.negotiate.should == "trans"
17
+ ensure
18
+ ENV['HTTP_NEGOTIATE'] = old_value
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,44 @@
1
+ require 'cgi'
2
+
3
+ describe "CGI::QueryExtension#params" do
4
+ before(:each) do
5
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
6
+ ENV['QUERY_STRING'], @old_query_string = "one=a&two=b&two=c&three", ENV['QUERY_STRING']
7
+ @cgi = CGI.new
8
+ end
9
+
10
+ after(:each) do
11
+ ENV['QUERY_STRING'] = @old_query_string
12
+ ENV['REQUEST_METHOD'] = @old_request_method
13
+ end
14
+
15
+ ruby_version_is "" ... "1.9" do
16
+ it "returns the parsed HTTP Query Params" do
17
+ @cgi.params.should == {"three"=>[nil], "two"=>["b", "c"], "one"=>["a"]}
18
+ end
19
+ end
20
+
21
+ ruby_version_is "1.9" do
22
+ it "returns the parsed HTTP Query Params" do
23
+ @cgi.params.should == {"three"=>[], "two"=>["b", "c"], "one"=>["a"]}
24
+ end
25
+ end
26
+ end
27
+
28
+ describe "CGI::QueryExtension#params=" do
29
+ before(:each) do
30
+ ENV['REQUEST_METHOD'], @old_request_method = "GET", ENV['REQUEST_METHOD']
31
+ @cgi = CGI.new
32
+ end
33
+
34
+ after(:each) do
35
+ ENV['REQUEST_METHOD'] = @old_request_method
36
+ end
37
+
38
+ it "sets the HTTP Query Params to the passed argument" do
39
+ @cgi.params.should == {}
40
+
41
+ @cgi.params = {"one"=>["a"], "two"=>["b", "c"]}
42
+ @cgi.params.should == {"one"=>["a"], "two"=>["b", "c"]}
43
+ end
44
+ end