nitro 0.8.0 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
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