nitro 0.8.0 → 0.9.3

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 (198) hide show
  1. data/AUTHORS +3 -4
  2. data/ChangeLog +418 -0
  3. data/LICENSE +1 -1
  4. data/README +157 -89
  5. data/RELEASES +50 -0
  6. data/Rakefile +5 -7
  7. data/benchmark/nitro/bench.rb +5 -0
  8. data/benchmark/nitro/simple-webrick-n-200.txt +44 -0
  9. data/benchmark/nitro/static-webrick-n-200.txt +43 -0
  10. data/benchmark/nitro/tiny-lhttpd-n-200-c-5.txt +43 -0
  11. data/benchmark/nitro/tiny-webrick-n-200-c-5.txt +44 -0
  12. data/benchmark/nitro/tiny-webrick-n-200.txt +44 -0
  13. data/benchmark/nitro/tiny2-webrick-n-200.txt +44 -0
  14. data/{lib/nitro/server/cluster.rb → bin/cluster} +26 -30
  15. data/bin/proto/README +2 -2
  16. data/bin/proto/{apache.conf → conf/apache.conf} +0 -0
  17. data/bin/proto/conf/app.conf.rb +22 -0
  18. data/bin/proto/conf/lhttpd.conf +236 -0
  19. data/bin/proto/ctl +4 -0
  20. data/bin/proto/lib/README +5 -0
  21. data/bin/proto/log/README +3 -0
  22. data/bin/proto/root/fcgi.rb +6 -0
  23. data/bin/proto/root/index.xhtml +65 -7
  24. data/bin/proto/root/m/nitro.png +0 -0
  25. data/examples/blog/README +7 -5
  26. data/examples/blog/{apache.conf → conf/apache.conf} +0 -0
  27. data/examples/blog/conf/app.conf.rb +56 -0
  28. data/examples/blog/conf/lhttpd.conf +236 -0
  29. data/examples/blog/ctl +4 -0
  30. data/examples/blog/lib/blog.rb +11 -136
  31. data/examples/blog/lib/blog/controller.rb +99 -0
  32. data/examples/blog/lib/blog/model.rb +39 -0
  33. data/examples/blog/log/README +3 -0
  34. data/examples/blog/root/comments.xhtml +2 -2
  35. data/examples/blog/root/fcgi.rb +6 -0
  36. data/examples/blog/root/index.xhtml +4 -5
  37. data/examples/blog/root/login.xhtml +2 -2
  38. data/examples/blog/root/style.xsl +9 -9
  39. data/examples/blog/root/view_entry.xhtml +2 -2
  40. data/examples/flash/conf/app.conf.rb +23 -0
  41. data/examples/flash/ctl +4 -0
  42. data/examples/flash/log/README +3 -0
  43. data/examples/flash/root/index.xhtml +0 -9
  44. data/examples/flash/root/show_inline_text.xhtml +10 -5
  45. data/examples/no_xsl_blog/README +12 -0
  46. data/examples/no_xsl_blog/conf/apache.conf +0 -0
  47. data/examples/no_xsl_blog/conf/app.conf.rb +57 -0
  48. data/examples/no_xsl_blog/conf/lhttpd.conf +236 -0
  49. data/examples/no_xsl_blog/ctl +4 -0
  50. data/examples/no_xsl_blog/lib/blog.rb +20 -0
  51. data/examples/no_xsl_blog/lib/blog/controller.rb +102 -0
  52. data/examples/no_xsl_blog/lib/blog/model.rb +39 -0
  53. data/examples/no_xsl_blog/lib/blog/template.rb +134 -0
  54. data/examples/no_xsl_blog/log/README +3 -0
  55. data/examples/no_xsl_blog/root/comments.xhtml +41 -0
  56. data/examples/no_xsl_blog/root/entry_form.xhtml +22 -0
  57. data/examples/no_xsl_blog/root/fcgi.rb +6 -0
  58. data/examples/no_xsl_blog/root/index.xhtml +39 -0
  59. data/examples/no_xsl_blog/root/login.xhtml +21 -0
  60. data/examples/no_xsl_blog/root/m/bubbles.gif +0 -0
  61. data/examples/no_xsl_blog/root/m/comments_curve.gif +0 -0
  62. data/examples/no_xsl_blog/root/m/down.gif +0 -0
  63. data/examples/no_xsl_blog/root/m/footer_bg.gif +0 -0
  64. data/examples/no_xsl_blog/root/m/garrow.gif +0 -0
  65. data/examples/no_xsl_blog/root/m/gbull.gif +0 -0
  66. data/examples/no_xsl_blog/root/m/grbull.gif +0 -0
  67. data/examples/no_xsl_blog/root/m/h1_bg.gif +0 -0
  68. data/examples/no_xsl_blog/root/m/header_bg.gif +0 -0
  69. data/examples/no_xsl_blog/root/m/nitro.gif +0 -0
  70. data/examples/no_xsl_blog/root/m/obull.gif +0 -0
  71. data/examples/no_xsl_blog/root/m/page_bg.gif +0 -0
  72. data/examples/no_xsl_blog/root/m/rss.gif +0 -0
  73. data/examples/no_xsl_blog/root/m/side_title_bg.gif +0 -0
  74. data/examples/no_xsl_blog/root/m/sidebar_bg.gif +0 -0
  75. data/examples/no_xsl_blog/root/recent_posts.xhtml +14 -0
  76. data/examples/no_xsl_blog/root/style.css +301 -0
  77. data/examples/no_xsl_blog/root/view_entry.xhtml +25 -0
  78. data/examples/no_xsl_blog/root/view_entry.xml +12 -0
  79. data/examples/og/run.rb +2 -2
  80. data/examples/tiny/README +2 -2
  81. data/examples/tiny/conf/apache.conf +5 -0
  82. data/examples/tiny/conf/app.conf.rb +21 -0
  83. data/examples/tiny/conf/lhttpd.conf +236 -0
  84. data/examples/tiny/ctl +4 -0
  85. data/examples/tiny/log/README +3 -0
  86. data/examples/tiny/root/fcgi.rb +6 -0
  87. data/examples/tiny/root/index.xhtml +7 -4
  88. data/examples/tiny/root/nitro.png +0 -0
  89. data/lib/glue.rb +13 -9
  90. data/lib/glue/array.rb +1 -1
  91. data/lib/glue/cache.rb +1 -1
  92. data/lib/glue/flexob.rb +12 -0
  93. data/lib/glue/hash.rb +1 -1
  94. data/lib/glue/inflector.rb +2 -2
  95. data/lib/glue/logger.rb +4 -8
  96. data/lib/glue/misc.rb +14 -0
  97. data/lib/glue/number.rb +1 -1
  98. data/lib/glue/object.rb +26 -0
  99. data/lib/glue/pool.rb +1 -1
  100. data/lib/glue/property.rb +84 -91
  101. data/lib/glue/string.rb +1 -1
  102. data/lib/glue/time.rb +1 -1
  103. data/lib/glue/validation.rb +1 -1
  104. data/lib/nitro.rb +18 -6
  105. data/lib/nitro/adaptors/cgi.rb +291 -0
  106. data/lib/nitro/adaptors/fastcgi.rb +42 -0
  107. data/lib/nitro/adaptors/runner.rb +123 -0
  108. data/lib/nitro/adaptors/webrick.rb +110 -0
  109. data/lib/nitro/buffering.rb +43 -0
  110. data/lib/nitro/builders/form.rb +1 -1
  111. data/lib/nitro/builders/rss.rb +1 -1
  112. data/{bin → lib/nitro}/cluster.rb +26 -30
  113. data/lib/nitro/context.rb +82 -0
  114. data/lib/nitro/controller.rb +50 -0
  115. data/lib/nitro/cookie.rb +46 -0
  116. data/lib/nitro/dispatcher.rb +105 -0
  117. data/lib/nitro/filters.rb +9 -10
  118. data/lib/nitro/localization.rb +42 -0
  119. data/lib/nitro/mail.rb +11 -14
  120. data/lib/nitro/render.rb +275 -0
  121. data/lib/nitro/request.rb +128 -0
  122. data/lib/nitro/response.rb +38 -0
  123. data/lib/nitro/scaffold.rb +11 -11
  124. data/lib/nitro/session.rb +84 -0
  125. data/lib/nitro/{server/shaders.rb → shaders.rb} +56 -36
  126. data/lib/nitro/ui/pager.rb +23 -26
  127. data/lib/nitro/{sitemap.rb → ui/sitemap.rb} +4 -12
  128. data/lib/nitro/uri.rb +1 -1
  129. data/lib/nitro/version.rb +10 -8
  130. data/lib/og.rb +66 -65
  131. data/lib/og/backend.rb +1 -1
  132. data/lib/og/backends/mysql.rb +48 -52
  133. data/lib/og/backends/psql.rb +34 -37
  134. data/lib/og/connection.rb +15 -15
  135. data/lib/og/enchant.rb +16 -9
  136. data/lib/og/meta.rb +127 -54
  137. data/lib/og/mock.rb +18 -18
  138. data/lib/og/version.rb +6 -4
  139. data/lib/parts/content.rb +4 -8
  140. data/test/glue/tc_logger.rb +3 -0
  141. data/test/glue/tc_property.rb +19 -3
  142. data/test/nitro/adaptors/tc_cgi.rb +63 -0
  143. data/test/nitro/adaptors/tc_webrick.rb +15 -0
  144. data/test/nitro/builders/tc_xml.rb +2 -2
  145. data/test/nitro/tc_context.rb +13 -0
  146. data/test/nitro/tc_controller.rb +47 -0
  147. data/test/nitro/tc_dispatcher.rb +64 -0
  148. data/test/nitro/tc_session.rb +20 -0
  149. data/test/nitro/{tc_sitemap.rb → ui/tc_sitemap.rb} +1 -1
  150. data/test/root/blog/list.xhtml +6 -0
  151. data/test/tc_og.rb +41 -4
  152. metadata +115 -59
  153. data/bin/proto/app.rb +0 -20
  154. data/bin/proto/config.rb +0 -77
  155. data/examples/blog/app.rb +0 -21
  156. data/examples/blog/config.rb +0 -95
  157. data/examples/blog/env.rb +0 -22
  158. data/examples/flash/README +0 -34
  159. data/examples/flash/app.rb +0 -20
  160. data/examples/flash/config.rb +0 -38
  161. data/examples/flash/lib/flash.rb +0 -40
  162. data/examples/flash/tmp.swf +0 -0
  163. data/examples/tiny/app.rb +0 -19
  164. data/examples/tiny/config.rb +0 -29
  165. data/examples/tiny/root/nitro-small.png +0 -0
  166. data/lib/nitro/application.rb +0 -217
  167. data/lib/nitro/config.rb +0 -128
  168. data/lib/nitro/events.rb +0 -122
  169. data/lib/nitro/html.rb +0 -151
  170. data/lib/nitro/http.rb +0 -102
  171. data/lib/nitro/l10n.rb +0 -30
  172. data/lib/nitro/server.rb +0 -59
  173. data/lib/nitro/server/appserver.rb +0 -67
  174. data/lib/nitro/server/cookie.rb +0 -87
  175. data/lib/nitro/server/dispatcher.rb +0 -62
  176. data/lib/nitro/server/filters.rb +0 -75
  177. data/lib/nitro/server/filters/autologin.rb +0 -51
  178. data/lib/nitro/server/fragment.rb +0 -70
  179. data/lib/nitro/server/handlers.rb +0 -127
  180. data/lib/nitro/server/render.rb +0 -426
  181. data/lib/nitro/server/request.rb +0 -658
  182. data/lib/nitro/server/requestpart.rb +0 -54
  183. data/lib/nitro/server/script.rb +0 -387
  184. data/lib/nitro/server/server.rb +0 -57
  185. data/lib/nitro/server/session.rb +0 -220
  186. data/lib/nitro/server/user.rb +0 -46
  187. data/lib/nitro/server/webrick.rb +0 -180
  188. data/lib/nitro/service.rb +0 -26
  189. data/lib/xsl/ui.xsl +0 -51
  190. data/lib/xsl/xforms.xsl +0 -28
  191. data/test/nitro/server/tc_cookie.rb +0 -34
  192. data/test/nitro/server/tc_filters.rb +0 -38
  193. data/test/nitro/server/tc_request.rb +0 -70
  194. data/test/nitro/server/tc_requestpart.rb +0 -28
  195. data/test/nitro/server/tc_session.rb +0 -34
  196. data/test/nitro/tc_events.rb +0 -44
  197. data/test/nitro/tc_html.rb +0 -79
  198. data/test/nitro/tc_http.rb +0 -18
@@ -1,51 +0,0 @@
1
- <?xml version="1.0" ?>
2
-
3
- <!--
4
- author: gmosx
5
- -->
6
-
7
- <!DOCTYPE shader
8
- [
9
- <!ENTITY nbsp "<![CDATA[&nbsp;]]>">
10
- <!ENTITY copy "<![CDATA[&copy;]]>">
11
- <!ENTITY euro "<![CDATA[&euro;]]>">
12
- <!ENTITY laquo "<![CDATA[&laquo;]]>">
13
- <!ENTITY raquo "<![CDATA[&raquo;]]>">
14
- ]>
15
-
16
- <xsl:stylesheet
17
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
18
- xmlns:x="http://www.navel.gr/xml/pager.xsd"
19
- exclude-result-prefixes="x"
20
- version="1.0">
21
-
22
- <xsl:template name="x:pager-first" match="x:pager-first">
23
- <xsl:apply-templates />
24
- <a href="#{target_uri(first_page())}">
25
- <xsl:apply-templates />
26
- </a>
27
- </xsl:template>
28
-
29
- <xsl:template name="x:pager-prev" match="x:pager-prev">
30
- <xsl:apply-templates />
31
- <a href="#{target_uri(previous_page())}">
32
- <xsl:apply-templates />
33
- </a>
34
- </xsl:template>
35
-
36
- <xsl:template name="x:pager-next" match="x:pager-next">
37
- <xsl:apply-templates />
38
- <a href="#{target_uri(next_page())}">
39
- <xsl:apply-templates />
40
- </a>
41
- </xsl:template>
42
-
43
- <xsl:template name="x:pager-last" match="x:pager-last">
44
- <xsl:apply-templates />
45
- <a href="#{target_uri(first_page())}">
46
- <xsl:apply-templates />
47
- </a>
48
- </xsl:template>
49
-
50
- </xsl:stylesheet>
51
-
@@ -1,28 +0,0 @@
1
- <?xml version='1.0' encoding='iso-8859-7'?>
2
-
3
- <!--
4
- gmosx:
5
- XForms related templates
6
-
7
- NOT IMPLEMENTED yet.
8
- -->
9
-
10
- <xsl:stylesheet
11
- xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
12
- xmlns:xf='http://www.w3.org/2002/08/xforms/cr'
13
- xmlns:x='http://www.navel.gr/xml/shader.xsd' version='1.0'>
14
-
15
- <xsl:template match='xf:form'>
16
- <table width='100%'>
17
- <xsl:apply-templates/>
18
- </table>
19
- </xsl:template>
20
-
21
- <xsl:template match='xf:input'>
22
- <tr><td class='form-label'>
23
- <xsl:value-of select='xf:label'/>:<br/>
24
- <input type='text'/>
25
- </td></tr>
26
- </xsl:template>
27
-
28
- </xsl:stylesheet>
@@ -1,34 +0,0 @@
1
- # :nodoc: all
2
-
3
- require "test/unit"
4
-
5
- require "nitro/server/cookie"
6
-
7
- include N
8
-
9
-
10
- class TC_Cookie < Test::Unit::TestCase
11
- # :nodoc: all
12
-
13
- def setup
14
- end
15
-
16
- def teardown
17
- end
18
-
19
- def test_initialize
20
- # bug: default path should be /
21
- cookie = Cookie.new("nsid", "24324234234234234")
22
- assert_equal("/", cookie.path)
23
- end
24
-
25
- def test_parse
26
- res = Cookie.parse("nsid=293230807; nauth=gmosx:meMXs0ifW7JBQ; koko=123&345")
27
-
28
- assert_equal("293230807", res["nsid"][0])
29
- assert_equal("gmosx:meMXs0ifW7JBQ", res["nauth"][0])
30
- assert_equal("123", res["koko"][0])
31
- assert_equal("345", res["koko"][1])
32
- end
33
-
34
- end
@@ -1,38 +0,0 @@
1
- require "test/unit"
2
-
3
- require "nitro/server/filters"
4
-
5
- class Filter1 < N::ServerFilter
6
- # :nodoc: all
7
- def process(request)
8
- return "filter1:#{process_next(request)}"
9
- end
10
- end
11
-
12
- class Filter2 < ServerFilter
13
- # :nodoc: all
14
- def process(request)
15
- return "filter2:#{process_next(request)}"
16
- end
17
- end
18
-
19
- class TC_Server_Filter < Test::Unit::TestCase
20
- # :nodoc: all
21
-
22
- def setup
23
- @filter = Filter1.new(Filter2.new)
24
- end
25
-
26
- def teardown
27
- @filter = nil
28
- end
29
-
30
- def test_process_next
31
- @filter = Filter1.new
32
- assert_equal("filter1:", @filter.process(nil))
33
-
34
- @filter = Filter1.new(Filter2.new)
35
- assert_equal("filter1:filter2:", @filter.process(nil))
36
- end
37
-
38
- end
@@ -1,70 +0,0 @@
1
- # :nodoc: all
2
-
3
- require "test/unit"
4
-
5
- require "glue/logger"
6
-
7
- require "nitro/server/cookie"
8
- require "nitro/server/request"
9
-
10
- include N
11
-
12
- class TC_Request < Test::Unit::TestCase
13
- # :nodoc: all
14
-
15
- def setup
16
- end
17
-
18
- def teardown
19
- end
20
- =begin
21
- def test_parse
22
- request = N::Request.new
23
-
24
- request.parse_cookies("nsid=293230807; nauth=gmosx:meMXs0ifW7JBQ; koko=123&345")
25
-
26
- # empty cookie should be converted to nil.
27
- assert_nil(request.get_cookie("nonexisting-cookie"))
28
-
29
- assert_equal("293230807", request.get_cookie("nsid"))
30
- assert_equal("gmosx:meMXs0ifW7JBQ", request.get_cookie("nauth"))
31
-
32
- # multivalued cookie
33
- assert_equal(2, request.get_cookie("koko").length)
34
-
35
- assert_equal("123", request.get_cookie("koko")[0])
36
- assert_equal("345", request.get_cookie("koko")[1])
37
- end
38
- =end
39
- def test_get_cookie
40
- # bug: call get_cookie w/o cookies.
41
- request = N::Request.new
42
- request.in_cookies = nil
43
- assert_nothing_raised {
44
- request.get_cookie("test")
45
- }
46
- end
47
-
48
- def test_tx
49
- request = N::Request.new
50
- request.session = {}
51
- request.parameters = {}
52
-
53
- request.new_tx_entity!(1)
54
- assert_equal(1, request.session["TXSEQ"])
55
-
56
- request.new_tx_entity!("test")
57
- assert_equal(2, request.session["TXSEQ"])
58
-
59
- assert_equal("TX2", request["txid"])
60
-
61
- assert_equal("test", request.get_tx_entity())
62
- request.update_tx_entity!("changed")
63
- assert_equal("changed", request.get_tx_entity())
64
- assert_equal(2, request.session["TXSEQ"])
65
-
66
- request.del_tx_entity!;
67
- assert_equal(nil, request.get_tx_entity())
68
- end
69
-
70
- end
@@ -1,28 +0,0 @@
1
- # :nodoc: all
2
-
3
- require "test/unit"
4
-
5
- require "nitro/server/cookie"
6
- require "nitro/server/request"
7
-
8
- include N
9
-
10
- class TC_N2_Web_Server_RequestPart < Test::Unit::TestCase # :nodoc: all
11
- # :nodoc: all
12
-
13
- def setup
14
- end
15
-
16
- def teardown
17
- end
18
-
19
- def test_filename
20
- part = RequestPart.new("/home/gmosx/files/pic.gif", "tmp/1232132.0", nil)
21
- assert_equal("pic.gif", part.filename)
22
-
23
- # bug: handle \ as separator
24
- part = RequestPart.new('C:\gmosx\files\pic.gif', "tmp/1232132.0", nil)
25
- assert_equal("pic.gif", part.filename)
26
- end
27
-
28
- end
@@ -1,34 +0,0 @@
1
- # :nodoc: all
2
-
3
- require "test/unit"
4
-
5
- require "nitro/server/session"
6
-
7
- include N
8
-
9
- class TC_N2_Web_Server_Session < Test::Unit::TestCase
10
- # :nodoc: all
11
-
12
- def setup
13
- end
14
-
15
- def teardown
16
- end
17
-
18
- def test_calculate_id
19
- id1 = Session.calculate_id
20
- id2 = Session.calculate_id
21
- id3 = Session.calculate_id
22
- id4 = Session.calculate_id
23
- id5 = Session.calculate_id
24
- id6 = Session.calculate_id
25
-
26
- assert_not_equal(id1, id2)
27
- assert_not_equal(id2, id3)
28
- assert_not_equal(id3, id4)
29
- assert_not_equal(id4, id5)
30
- assert_not_equal(id5, id6)
31
- assert_not_equal(id1, id6)
32
- end
33
-
34
- end
@@ -1,44 +0,0 @@
1
- # :nodoc: all
2
-
3
- require "test/unit"
4
- require "nitro/events"
5
-
6
- class TC_Events < Test::Unit::TestCase
7
- # :nodoc: all
8
- include N
9
-
10
- def setup
11
- $flag = 0
12
- $flag2 = 1
13
- @events = N::EventManager.new
14
- end
15
-
16
- def teardown
17
- @events = nil
18
- end
19
-
20
- def test_events
21
- @events.add_handler("my.event", "test1", proc { |val|
22
- $flag = val
23
- })
24
- @events.add_handler("my.event", "test2", proc { |val|
25
- $flag2 += val
26
- })
27
-
28
- @events.fire("my.event", 5)
29
-
30
- assert_equal(5, $flag)
31
- assert_equal(6, $flag2)
32
-
33
- @events.fire("my.event", 5)
34
-
35
- assert_equal(11, $flag2)
36
-
37
- # test remove handler
38
-
39
- @events.remove_handler("my.event", "test2")
40
- @events.fire("my.event", 5)
41
-
42
- assert_equal(11, $flag2)
43
- end
44
- end
@@ -1,79 +0,0 @@
1
-
2
- require "test/unit"
3
- require "nitro/html"
4
-
5
- include N
6
-
7
- class TC_HtmlUtils < Test::Unit::TestCase
8
- # :nodoc: all
9
-
10
- def test_escape
11
- assert_equal("&lt;b&gt;test&lt;/b&gt;", HtmlUtils::escape("<b>test</b>"))
12
- assert_equal("&lt;p&gt;test", HtmlUtils::escape("<p>test"))
13
- assert_equal("", HtmlUtils::escape(""))
14
- assert_equal(nil, HtmlUtils::escape(nil))
15
- end
16
-
17
- def test_expand_urls
18
- s = "visit http://www.navel.gr"
19
- r = "visit <a href='http://www.navel.gr'>http://www.navel.gr</a>"
20
- assert_equal(r, HtmlUtils::expand_urls(s))
21
-
22
- s = "visit www.navel.gr"
23
- r = "visit <a href='http://www.navel.gr'>http://www.navel.gr</a>"
24
- assert_equal(r, HtmlUtils::expand_urls(s))
25
-
26
- assert_equal(nil, HtmlUtils::expand_urls(nil))
27
-
28
- s = "visit: www.navel.gr"
29
- r = "visit: <a href='http://www.navel.gr'>http://www.navel.gr</a>"
30
- assert_equal(r, HtmlUtils::expand_urls(s))
31
- end
32
-
33
- def test_only_safe_tags
34
- s = "<table>lala</table>"
35
- r = "&lt;table&gt;lala&lt;/table&gt;"
36
- assert_equal(r, HtmlUtils::only_safe_tags(s))
37
-
38
- # bug: img is NOT A SAFE tag, fucks up layout
39
- s = "<a href='lala'<img src='koko'><table>"
40
- # lala is quoted because it belongs in an open tag!
41
- r = "<a href=&#39;lala&#39;>&lt;img src=&#39;koko&#39;&gt;&lt;table&gt;"
42
- assert_equal(r, HtmlUtils::only_safe_tags(s))
43
-
44
- s = "<a href='lala'><img src='koko'><table>"
45
- # lala is not quoted because it belongs in a valid tag!
46
- r = "<a href=&#39;lala&#39;>&lt;img src=&#39;koko&#39;&gt;&lt;table&gt;"
47
- assert_equal(r, HtmlUtils::only_safe_tags(s))
48
-
49
- s = "<a href='lala'<table<bar<koko"
50
- # lala is quoted because it belongs in an open tag!
51
- r = "<a href=&#39;lala&#39;>&lt;table&gt;&lt;bar&gt;&lt;koko"
52
- assert_equal(r, HtmlUtils::only_safe_tags(s))
53
-
54
- s = "<a href='lala'<foo>text<bar<koko"
55
- # lala is quoted because it belongs in an open tag!
56
- r = "<a href=&#39;lala&#39;>&lt;foo&gt;text&lt;bar&gt;&lt;koko"
57
- assert_equal(r, HtmlUtils::only_safe_tags(s))
58
-
59
- # bug: open ' quotes fuckup the html
60
- s = "<tr><td><a href='koko</td></tr>"
61
- r = "&lt;tr&gt;&lt;td&gt;<a href=&#39;koko>&lt;/td&gt;&lt;/tr&gt;"
62
- assert_equal(r, HtmlUtils::only_safe_tags(s))
63
-
64
- # open quotes on valid tag
65
- s = "<a href='koko>kokok</a>"
66
- r = "<a href=&#39;koko>kokok</a>"
67
- assert_equal(r, HtmlUtils::only_safe_tags(s))
68
-
69
- assert_equal(nil, HtmlUtils::only_safe_tags(nil))
70
- end
71
-
72
- def test_convert_newlines
73
- # bug:
74
-
75
- assert_equal(nil, HtmlUtils::convert_newlines(nil))
76
- assert_equal(nil, HtmlUtils::convert_newlines(""))
77
- end
78
-
79
- end
@@ -1,18 +0,0 @@
1
- require "test/unit"
2
- require "nitro/http"
3
-
4
- class TC_HttpUtils < Test::Unit::TestCase
5
- # :nodoc: all
6
-
7
- def setup
8
- end
9
-
10
- def teardown
11
- end
12
-
13
- def test_time_to_string
14
- r = N::HttpUtils.time_to_string(Time.now)
15
- assert_match(/GMT/, r)
16
- end
17
-
18
- end