winton-sum 0.1.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 (280) hide show
  1. data/Capfile +3 -0
  2. data/MIT-LICENSE +18 -0
  3. data/README.markdown +55 -0
  4. data/Rakefile +45 -0
  5. data/config/database.example.yml +10 -0
  6. data/config/deploy.example.rb +36 -0
  7. data/config/externals.yml +18 -0
  8. data/config/mail.example.yml +32 -0
  9. data/config/schedule.rb +20 -0
  10. data/config.ru +3 -0
  11. data/db/migrate/001_users.rb +22 -0
  12. data/db/migrate/002_user_emails.rb +15 -0
  13. data/features/front_page.feature +14 -0
  14. data/features/read_email.feature +446 -0
  15. data/features/receive_email.feature +59 -0
  16. data/features/step_definitions/email.rb +52 -0
  17. data/features/step_definitions/given.rb +60 -0
  18. data/features/step_definitions/then.rb +32 -0
  19. data/features/step_definitions/when.rb +41 -0
  20. data/features/support/env.rb +27 -0
  21. data/features/support/helpers.rb +44 -0
  22. data/features/support/rspec.rb +11 -0
  23. data/features/support/webrat.rb +3 -0
  24. data/features/update_user.feature +76 -0
  25. data/gemspec.rb +45 -0
  26. data/lib/sum/boot.rb +29 -0
  27. data/lib/sum/controller/cron.rb +12 -0
  28. data/lib/sum/controller/front.rb +6 -0
  29. data/lib/sum/controller/new.rb +15 -0
  30. data/lib/sum/helper/application.rb +8 -0
  31. data/lib/sum/helper/cron.rb +12 -0
  32. data/lib/sum/helper/new.rb +26 -0
  33. data/lib/sum/model/incoming_mail.rb +89 -0
  34. data/lib/sum/model/user.rb +286 -0
  35. data/lib/sum/model/user_email.rb +31 -0
  36. data/lib/sum/view/email.haml +70 -0
  37. data/lib/sum/view/field.haml +10 -0
  38. data/lib/sum/view/form.haml +12 -0
  39. data/lib/sum/view/front.haml +25 -0
  40. data/lib/sum/view/layout.haml +26 -0
  41. data/lib/sum/view/new.haml +15 -0
  42. data/lib/sum.rb +30 -0
  43. data/public/image/1.png +0 -0
  44. data/public/image/2.png +0 -0
  45. data/public/image/3.png +0 -0
  46. data/public/image/bg.png +0 -0
  47. data/public/image/bot.png +0 -0
  48. data/public/image/facebox/b.png +0 -0
  49. data/public/image/facebox/bl.png +0 -0
  50. data/public/image/facebox/br.png +0 -0
  51. data/public/image/facebox/closelabel.gif +0 -0
  52. data/public/image/facebox/loading.gif +0 -0
  53. data/public/image/facebox/tl.png +0 -0
  54. data/public/image/facebox/tr.png +0 -0
  55. data/public/image/favicon.png +0 -0
  56. data/public/image/field_off.png +0 -0
  57. data/public/image/field_on.png +0 -0
  58. data/public/image/ribbon.png +0 -0
  59. data/public/image/screenshot_receive.png +0 -0
  60. data/public/image/screenshot_send.png +0 -0
  61. data/public/image/submit.png +0 -0
  62. data/public/image/top.png +0 -0
  63. data/public/javascript/facebox.js +319 -0
  64. data/public/javascript/jquery-1.3.2.js +19 -0
  65. data/public/javascript/sum.js +9 -0
  66. data/public/style/facebox.css +95 -0
  67. data/public/style/ie.css +35 -0
  68. data/public/style/print.css +30 -0
  69. data/public/style/screen.css +256 -0
  70. data/public/style/sum.css +22 -0
  71. data/public/style/sum.less +135 -0
  72. data/spec/spec.opts +1 -0
  73. data/spec/spec_helper.rb +58 -0
  74. data/spec/sum/model/incoming_mail_spec.rb +106 -0
  75. data/spec/sum/model/user_spec.rb +171 -0
  76. data/sum.gemspec +69 -0
  77. data/vendor/webrat/History.txt +358 -0
  78. data/vendor/webrat/MIT-LICENSE.txt +19 -0
  79. data/vendor/webrat/README.rdoc +85 -0
  80. data/vendor/webrat/Rakefile +200 -0
  81. data/vendor/webrat/install.rb +1 -0
  82. data/vendor/webrat/lib/webrat/core/configuration.rb +102 -0
  83. data/vendor/webrat/lib/webrat/core/elements/area.rb +31 -0
  84. data/vendor/webrat/lib/webrat/core/elements/element.rb +33 -0
  85. data/vendor/webrat/lib/webrat/core/elements/field.rb +409 -0
  86. data/vendor/webrat/lib/webrat/core/elements/form.rb +103 -0
  87. data/vendor/webrat/lib/webrat/core/elements/label.rb +31 -0
  88. data/vendor/webrat/lib/webrat/core/elements/link.rb +93 -0
  89. data/vendor/webrat/lib/webrat/core/elements/select_option.rb +35 -0
  90. data/vendor/webrat/lib/webrat/core/locators/area_locator.rb +38 -0
  91. data/vendor/webrat/lib/webrat/core/locators/button_locator.rb +54 -0
  92. data/vendor/webrat/lib/webrat/core/locators/field_by_id_locator.rb +37 -0
  93. data/vendor/webrat/lib/webrat/core/locators/field_labeled_locator.rb +56 -0
  94. data/vendor/webrat/lib/webrat/core/locators/field_locator.rb +25 -0
  95. data/vendor/webrat/lib/webrat/core/locators/field_named_locator.rb +41 -0
  96. data/vendor/webrat/lib/webrat/core/locators/form_locator.rb +19 -0
  97. data/vendor/webrat/lib/webrat/core/locators/label_locator.rb +34 -0
  98. data/vendor/webrat/lib/webrat/core/locators/link_locator.rb +74 -0
  99. data/vendor/webrat/lib/webrat/core/locators/locator.rb +20 -0
  100. data/vendor/webrat/lib/webrat/core/locators/select_option_locator.rb +59 -0
  101. data/vendor/webrat/lib/webrat/core/locators.rb +20 -0
  102. data/vendor/webrat/lib/webrat/core/logging.rb +24 -0
  103. data/vendor/webrat/lib/webrat/core/matchers/have_content.rb +73 -0
  104. data/vendor/webrat/lib/webrat/core/matchers/have_selector.rb +74 -0
  105. data/vendor/webrat/lib/webrat/core/matchers/have_tag.rb +21 -0
  106. data/vendor/webrat/lib/webrat/core/matchers/have_xpath.rb +147 -0
  107. data/vendor/webrat/lib/webrat/core/matchers.rb +4 -0
  108. data/vendor/webrat/lib/webrat/core/methods.rb +63 -0
  109. data/vendor/webrat/lib/webrat/core/mime.rb +29 -0
  110. data/vendor/webrat/lib/webrat/core/save_and_open_page.rb +48 -0
  111. data/vendor/webrat/lib/webrat/core/scope.rb +350 -0
  112. data/vendor/webrat/lib/webrat/core/session.rb +299 -0
  113. data/vendor/webrat/lib/webrat/core/xml/hpricot.rb +19 -0
  114. data/vendor/webrat/lib/webrat/core/xml/nokogiri.rb +76 -0
  115. data/vendor/webrat/lib/webrat/core/xml/rexml.rb +24 -0
  116. data/vendor/webrat/lib/webrat/core/xml.rb +115 -0
  117. data/vendor/webrat/lib/webrat/core.rb +14 -0
  118. data/vendor/webrat/lib/webrat/core_extensions/blank.rb +58 -0
  119. data/vendor/webrat/lib/webrat/core_extensions/deprecate.rb +8 -0
  120. data/vendor/webrat/lib/webrat/core_extensions/detect_mapped.rb +12 -0
  121. data/vendor/webrat/lib/webrat/core_extensions/meta_class.rb +6 -0
  122. data/vendor/webrat/lib/webrat/core_extensions/nil_to_param.rb +5 -0
  123. data/vendor/webrat/lib/webrat/core_extensions/tcp_socket.rb +27 -0
  124. data/vendor/webrat/lib/webrat/mechanize.rb +74 -0
  125. data/vendor/webrat/lib/webrat/merb.rb +9 -0
  126. data/vendor/webrat/lib/webrat/merb_multipart_support.rb +27 -0
  127. data/vendor/webrat/lib/webrat/merb_session.rb +82 -0
  128. data/vendor/webrat/lib/webrat/rack.rb +25 -0
  129. data/vendor/webrat/lib/webrat/rails.rb +106 -0
  130. data/vendor/webrat/lib/webrat/rspec-rails.rb +10 -0
  131. data/vendor/webrat/lib/webrat/selenium/application_server_factory.rb +40 -0
  132. data/vendor/webrat/lib/webrat/selenium/application_servers/base.rb +46 -0
  133. data/vendor/webrat/lib/webrat/selenium/application_servers/external.rb +26 -0
  134. data/vendor/webrat/lib/webrat/selenium/application_servers/merb.rb +50 -0
  135. data/vendor/webrat/lib/webrat/selenium/application_servers/rails.rb +44 -0
  136. data/vendor/webrat/lib/webrat/selenium/application_servers/sinatra.rb +37 -0
  137. data/vendor/webrat/lib/webrat/selenium/application_servers.rb +5 -0
  138. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/button.js +19 -0
  139. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/label.js +16 -0
  140. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webrat.js +5 -0
  141. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlink.js +12 -0
  142. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -0
  143. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -0
  144. data/vendor/webrat/lib/webrat/selenium/matchers/have_content.rb +66 -0
  145. data/vendor/webrat/lib/webrat/selenium/matchers/have_selector.rb +49 -0
  146. data/vendor/webrat/lib/webrat/selenium/matchers/have_tag.rb +72 -0
  147. data/vendor/webrat/lib/webrat/selenium/matchers/have_xpath.rb +45 -0
  148. data/vendor/webrat/lib/webrat/selenium/matchers.rb +4 -0
  149. data/vendor/webrat/lib/webrat/selenium/selenium_extensions.js +6 -0
  150. data/vendor/webrat/lib/webrat/selenium/selenium_rc_server.rb +84 -0
  151. data/vendor/webrat/lib/webrat/selenium/selenium_session.rb +248 -0
  152. data/vendor/webrat/lib/webrat/selenium/silence_stream.rb +18 -0
  153. data/vendor/webrat/lib/webrat/selenium.rb +81 -0
  154. data/vendor/webrat/lib/webrat/sinatra.rb +11 -0
  155. data/vendor/webrat/lib/webrat.rb +31 -0
  156. data/vendor/webrat/spec/fakes/test_session.rb +34 -0
  157. data/vendor/webrat/spec/integration/merb/Rakefile +35 -0
  158. data/vendor/webrat/spec/integration/merb/app/controllers/application.rb +2 -0
  159. data/vendor/webrat/spec/integration/merb/app/controllers/exceptions.rb +13 -0
  160. data/vendor/webrat/spec/integration/merb/app/controllers/testing.rb +27 -0
  161. data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -0
  162. data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -0
  163. data/vendor/webrat/spec/integration/merb/app/views/layout/application.html.erb +12 -0
  164. data/vendor/webrat/spec/integration/merb/app/views/testing/show_form.html.erb +27 -0
  165. data/vendor/webrat/spec/integration/merb/app/views/testing/upload.html.erb +9 -0
  166. data/vendor/webrat/spec/integration/merb/config/environments/development.rb +15 -0
  167. data/vendor/webrat/spec/integration/merb/config/environments/rake.rb +11 -0
  168. data/vendor/webrat/spec/integration/merb/config/environments/test.rb +14 -0
  169. data/vendor/webrat/spec/integration/merb/config/init.rb +25 -0
  170. data/vendor/webrat/spec/integration/merb/config/rack.rb +11 -0
  171. data/vendor/webrat/spec/integration/merb/config/router.rb +34 -0
  172. data/vendor/webrat/spec/integration/merb/spec/spec.opts +1 -0
  173. data/vendor/webrat/spec/integration/merb/spec/spec_helper.rb +24 -0
  174. data/vendor/webrat/spec/integration/merb/spec/webrat_spec.rb +39 -0
  175. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
  176. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
  177. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
  178. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/main.thor +150 -0
  179. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
  180. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
  181. data/vendor/webrat/spec/integration/rack/Rakefile +5 -0
  182. data/vendor/webrat/spec/integration/rack/app.rb +73 -0
  183. data/vendor/webrat/spec/integration/rack/test/helper.rb +20 -0
  184. data/vendor/webrat/spec/integration/rack/test/webrat_rack_test.rb +62 -0
  185. data/vendor/webrat/spec/integration/rails/Rakefile +30 -0
  186. data/vendor/webrat/spec/integration/rails/app/controllers/application.rb +15 -0
  187. data/vendor/webrat/spec/integration/rails/app/controllers/buttons_controller.rb +7 -0
  188. data/vendor/webrat/spec/integration/rails/app/controllers/fields_controller.rb +4 -0
  189. data/vendor/webrat/spec/integration/rails/app/controllers/links_controller.rb +7 -0
  190. data/vendor/webrat/spec/integration/rails/app/controllers/webrat_controller.rb +43 -0
  191. data/vendor/webrat/spec/integration/rails/app/helpers/buttons_helper.rb +2 -0
  192. data/vendor/webrat/spec/integration/rails/app/helpers/fields_helper.rb +2 -0
  193. data/vendor/webrat/spec/integration/rails/app/helpers/links_helper.rb +2 -0
  194. data/vendor/webrat/spec/integration/rails/app/views/buttons/show.html.erb +11 -0
  195. data/vendor/webrat/spec/integration/rails/app/views/fields/show.html.erb +9 -0
  196. data/vendor/webrat/spec/integration/rails/app/views/links/show.html.erb +5 -0
  197. data/vendor/webrat/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +4 -0
  198. data/vendor/webrat/spec/integration/rails/app/views/webrat/buttons.html.erb +11 -0
  199. data/vendor/webrat/spec/integration/rails/app/views/webrat/form.html.erb +28 -0
  200. data/vendor/webrat/spec/integration/rails/config/boot.rb +109 -0
  201. data/vendor/webrat/spec/integration/rails/config/environment.rb +12 -0
  202. data/vendor/webrat/spec/integration/rails/config/environments/development.rb +17 -0
  203. data/vendor/webrat/spec/integration/rails/config/environments/selenium.rb +22 -0
  204. data/vendor/webrat/spec/integration/rails/config/environments/test.rb +22 -0
  205. data/vendor/webrat/spec/integration/rails/config/initializers/inflections.rb +10 -0
  206. data/vendor/webrat/spec/integration/rails/config/initializers/mime_types.rb +5 -0
  207. data/vendor/webrat/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
  208. data/vendor/webrat/spec/integration/rails/config/locales/en.yml +5 -0
  209. data/vendor/webrat/spec/integration/rails/config/routes.rb +18 -0
  210. data/vendor/webrat/spec/integration/rails/public/404.html +30 -0
  211. data/vendor/webrat/spec/integration/rails/public/422.html +30 -0
  212. data/vendor/webrat/spec/integration/rails/public/500.html +33 -0
  213. data/vendor/webrat/spec/integration/rails/script/about +4 -0
  214. data/vendor/webrat/spec/integration/rails/script/console +3 -0
  215. data/vendor/webrat/spec/integration/rails/script/dbconsole +3 -0
  216. data/vendor/webrat/spec/integration/rails/script/destroy +3 -0
  217. data/vendor/webrat/spec/integration/rails/script/generate +3 -0
  218. data/vendor/webrat/spec/integration/rails/script/performance/benchmarker +3 -0
  219. data/vendor/webrat/spec/integration/rails/script/performance/profiler +3 -0
  220. data/vendor/webrat/spec/integration/rails/script/performance/request +3 -0
  221. data/vendor/webrat/spec/integration/rails/script/plugin +3 -0
  222. data/vendor/webrat/spec/integration/rails/script/process/inspector +3 -0
  223. data/vendor/webrat/spec/integration/rails/script/process/reaper +3 -0
  224. data/vendor/webrat/spec/integration/rails/script/process/spawner +3 -0
  225. data/vendor/webrat/spec/integration/rails/script/runner +3 -0
  226. data/vendor/webrat/spec/integration/rails/script/server +3 -0
  227. data/vendor/webrat/spec/integration/rails/test/integration/button_click_test.rb +80 -0
  228. data/vendor/webrat/spec/integration/rails/test/integration/fill_in_test.rb +24 -0
  229. data/vendor/webrat/spec/integration/rails/test/integration/link_click_test.rb +27 -0
  230. data/vendor/webrat/spec/integration/rails/test/integration/webrat_test.rb +97 -0
  231. data/vendor/webrat/spec/integration/rails/test/test_helper.rb +25 -0
  232. data/vendor/webrat/spec/integration/sinatra/Rakefile +5 -0
  233. data/vendor/webrat/spec/integration/sinatra/classic_app.rb +64 -0
  234. data/vendor/webrat/spec/integration/sinatra/modular_app.rb +16 -0
  235. data/vendor/webrat/spec/integration/sinatra/test/classic_app_test.rb +37 -0
  236. data/vendor/webrat/spec/integration/sinatra/test/modular_app_test.rb +18 -0
  237. data/vendor/webrat/spec/integration/sinatra/test/test_helper.rb +16 -0
  238. data/vendor/webrat/spec/private/core/configuration_spec.rb +116 -0
  239. data/vendor/webrat/spec/private/core/field_spec.rb +85 -0
  240. data/vendor/webrat/spec/private/core/link_spec.rb +24 -0
  241. data/vendor/webrat/spec/private/core/logging_spec.rb +10 -0
  242. data/vendor/webrat/spec/private/core/session_spec.rb +195 -0
  243. data/vendor/webrat/spec/private/mechanize/mechanize_session_spec.rb +81 -0
  244. data/vendor/webrat/spec/private/merb/attaches_file_spec.rb +93 -0
  245. data/vendor/webrat/spec/private/merb/merb_session_spec.rb +61 -0
  246. data/vendor/webrat/spec/private/nokogiri_spec.rb +77 -0
  247. data/vendor/webrat/spec/private/rails/attaches_file_spec.rb +81 -0
  248. data/vendor/webrat/spec/private/rails/rails_session_spec.rb +112 -0
  249. data/vendor/webrat/spec/private/selenium/application_servers/rails_spec.rb +26 -0
  250. data/vendor/webrat/spec/public/basic_auth_spec.rb +24 -0
  251. data/vendor/webrat/spec/public/check_spec.rb +191 -0
  252. data/vendor/webrat/spec/public/choose_spec.rb +118 -0
  253. data/vendor/webrat/spec/public/click_area_spec.rb +106 -0
  254. data/vendor/webrat/spec/public/click_button_spec.rb +496 -0
  255. data/vendor/webrat/spec/public/click_link_spec.rb +511 -0
  256. data/vendor/webrat/spec/public/fill_in_spec.rb +209 -0
  257. data/vendor/webrat/spec/public/locators/field_by_xpath_spec.rb +19 -0
  258. data/vendor/webrat/spec/public/locators/field_labeled_spec.rb +172 -0
  259. data/vendor/webrat/spec/public/locators/field_with_id_spec.rb +16 -0
  260. data/vendor/webrat/spec/public/matchers/contain_spec.rb +114 -0
  261. data/vendor/webrat/spec/public/matchers/have_selector_spec.rb +142 -0
  262. data/vendor/webrat/spec/public/matchers/have_tag_spec.rb +39 -0
  263. data/vendor/webrat/spec/public/matchers/have_xpath_spec.rb +136 -0
  264. data/vendor/webrat/spec/public/reload_spec.rb +10 -0
  265. data/vendor/webrat/spec/public/save_and_open_spec.rb +70 -0
  266. data/vendor/webrat/spec/public/select_date_spec.rb +112 -0
  267. data/vendor/webrat/spec/public/select_datetime_spec.rb +137 -0
  268. data/vendor/webrat/spec/public/select_spec.rb +249 -0
  269. data/vendor/webrat/spec/public/select_time_spec.rb +100 -0
  270. data/vendor/webrat/spec/public/selenium/application_server_factory_spec.rb +49 -0
  271. data/vendor/webrat/spec/public/selenium/application_servers/external_spec.rb +12 -0
  272. data/vendor/webrat/spec/public/selenium/selenium_session_spec.rb +37 -0
  273. data/vendor/webrat/spec/public/set_hidden_field_spec.rb +5 -0
  274. data/vendor/webrat/spec/public/submit_form_spec.rb +5 -0
  275. data/vendor/webrat/spec/public/visit_spec.rb +58 -0
  276. data/vendor/webrat/spec/public/within_spec.rb +177 -0
  277. data/vendor/webrat/spec/rcov.opts +1 -0
  278. data/vendor/webrat/spec/spec.opts +2 -0
  279. data/vendor/webrat/spec/spec_helper.rb +50 -0
  280. metadata +554 -0
@@ -0,0 +1,30 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+
6
+ <head>
7
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
8
+ <title>The change you wanted was rejected (422)</title>
9
+ <style type="text/css">
10
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
11
+ div.dialog {
12
+ width: 25em;
13
+ padding: 0 4em;
14
+ margin: 4em auto 0 auto;
15
+ border: 1px solid #ccc;
16
+ border-right-color: #999;
17
+ border-bottom-color: #999;
18
+ }
19
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
20
+ </style>
21
+ </head>
22
+
23
+ <body>
24
+ <!-- This file lives in public/422.html -->
25
+ <div class="dialog">
26
+ <h1>The change you wanted was rejected.</h1>
27
+ <p>Maybe you tried to change something you didn't have access to.</p>
28
+ </div>
29
+ </body>
30
+ </html>
@@ -0,0 +1,33 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+
6
+ <head>
7
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
8
+ <title>We're sorry, but something went wrong (500)</title>
9
+ <style type="text/css">
10
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
11
+ div.dialog {
12
+ width: 25em;
13
+ padding: 0 4em;
14
+ margin: 4em auto 0 auto;
15
+ border: 1px solid #ccc;
16
+ border-right-color: #999;
17
+ border-bottom-color: #999;
18
+ }
19
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
20
+ </style>
21
+ </head>
22
+
23
+ <body>
24
+ <!-- This file lives in public/500.html -->
25
+ <div class="dialog">
26
+ <h1>We're sorry, but something went wrong.</h1>
27
+ <p>We've been notified about this issue and we'll take a look at it shortly.</p>
28
+ <p><small>(If you're the administrator of this website, then please read
29
+ the log file "<%=h RAILS_ENV %>.log"
30
+ to find out what went wrong.)</small></p>
31
+ </div>
32
+ </body>
33
+ </html>
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ $LOAD_PATH.unshift "#{RAILTIES_PATH}/builtin/rails_info"
4
+ require 'commands/about'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/console'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/dbconsole'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/destroy'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/generate'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/benchmarker'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/profiler'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/request'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/plugin'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/inspector'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/reaper'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/spawner'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/runner'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/server'
@@ -0,0 +1,80 @@
1
+ require 'test_helper'
2
+
3
+ class ButtonClickTest < ActionController::IntegrationTest
4
+ # <button type="button" ...>
5
+ test "should click button with type button by id" do
6
+ visit buttons_path
7
+ click_button "button_button_id"
8
+ end
9
+ test "should click button with type button by value" do
10
+ visit buttons_path
11
+ click_button "button_button_value"
12
+ end
13
+ test "should click button with type button by html" do
14
+ visit buttons_path
15
+ click_button "button_button_text"
16
+ end
17
+
18
+ # <button type="submit" ...>
19
+ test "should click button with type submit by id" do
20
+ visit buttons_path
21
+ click_button "button_submit_id"
22
+ end
23
+ test "should click button with type submit by value" do
24
+ visit buttons_path
25
+ click_button "button_submit_value"
26
+ end
27
+ test "should click button with type submit by html" do
28
+ visit buttons_path
29
+ click_button "button_submit_text"
30
+ end
31
+
32
+ # <button type="image" ...>
33
+ test "should click button with type image by id" do
34
+ visit buttons_path
35
+ click_button "button_image_id"
36
+ end
37
+ test "should click button with type image by value" do
38
+ visit buttons_path
39
+ click_button "button_image_value"
40
+ end
41
+ test "should click button with type image by html" do
42
+ visit buttons_path
43
+ click_button "button_image_text"
44
+ end
45
+
46
+ # <input type="button" ...>
47
+ test "should click image with type button by id" do
48
+ visit buttons_path
49
+ click_button "input_button_id"
50
+ end
51
+ test "should click input with type button by value" do
52
+ visit buttons_path
53
+ click_button "input_button_value"
54
+ end
55
+
56
+ # <input type="submit" ...>
57
+ test "should click input with type submit by id" do
58
+ visit buttons_path
59
+ click_button "input_submit_id"
60
+ end
61
+ test "should click input with type submit by value" do
62
+ visit buttons_path
63
+ click_button "input_submit_value"
64
+ end
65
+
66
+ # <input type="image" ...>
67
+ test "should click input with type image by id" do
68
+ visit buttons_path
69
+ click_button "input_image_id"
70
+ end
71
+ test "should click input with type image by value" do
72
+ visit buttons_path
73
+ click_button "input_image_value"
74
+ end
75
+ test "should click input with type image by alt" do
76
+ visit buttons_path
77
+ click_button "input_image_alt"
78
+ end
79
+
80
+ end
@@ -0,0 +1,24 @@
1
+ require 'test_helper'
2
+
3
+ class FillInTest < ActionController::IntegrationTest
4
+ test "should fill in text field by name" do
5
+ visit fields_path
6
+ fill_in "field_by_name", :with => "value"
7
+ end
8
+ test "should fill in text field by name, rails naming lh257" do
9
+ visit fields_path
10
+ fill_in "rails[naming]", :with => "value"
11
+ end
12
+ test "should fill in text field by id" do
13
+ visit fields_path
14
+ fill_in "field_by_id", :with => "value"
15
+ end
16
+ test "should fill in text field by label via id" do
17
+ visit fields_path
18
+ fill_in "FieldByLabelId", :with => "value"
19
+ end
20
+ test "should fill in text field by label with special characters" do
21
+ visit fields_path
22
+ fill_in "[Field]:", :with => "value"
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ class LinkClickTest < ActionController::IntegrationTest
4
+ test "should click link by text" do
5
+ visit links_path
6
+ click_link "LinkByText"
7
+ assert_contain("Link:LinkByText")
8
+ end
9
+
10
+ test "should click link by id" do
11
+ visit links_path
12
+ click_link "link_by_id"
13
+ assert_contain("Link:link_by_id")
14
+ end
15
+
16
+ test "should click link by title" do
17
+ visit links_path
18
+ click_link "LinkByTitle"
19
+ assert_contain("Link:LinkByTitle")
20
+ end
21
+
22
+ test "should be able to click links with non letter characters" do
23
+ visit links_path
24
+ click_link "Link With (parens)"
25
+ assert_contain("Link:link_with_parens")
26
+ end
27
+ end
@@ -0,0 +1,97 @@
1
+ require 'test_helper'
2
+
3
+ class WebratTest < ActionController::IntegrationTest
4
+
5
+ #Firefox raises a security concern under Selenium
6
+ unless ENV['WEBRAT_INTEGRATION_MODE'] == 'selenium'
7
+ test "should visit fully qualified urls" do
8
+ visit root_url(:host => "chunkybacon.example.com")
9
+ assert_equal "chunkybacon", request.subdomains.first
10
+ end
11
+ end
12
+
13
+ test "should visit pages" do
14
+ visit root_path
15
+ assert_contain("Webrat Form")
16
+ assert URI.parse(current_url).path, root_path
17
+ end
18
+
19
+ test "should submit forms" do
20
+ visit root_path
21
+ fill_in "Text field", :with => "Hello"
22
+ check "TOS"
23
+ select "January"
24
+ click_button "Test"
25
+ end
26
+
27
+ test "should check the value of a field" do
28
+ visit "/"
29
+ assert field_labeled("Prefilled").value, "text"
30
+ end
31
+
32
+ test "should not carry params through redirects" do
33
+ visit before_redirect_form_path
34
+ fill_in "Text field", :with => "value"
35
+ click_button
36
+
37
+ automate do
38
+ selenium.wait_for_page_to_load
39
+ end
40
+ assert response.body !~ /value/
41
+ assert response.body =~ /custom_param/
42
+ end
43
+
44
+ test "should follow internal redirects" do
45
+ visit internal_redirect_path
46
+ assert !response.redirect?
47
+ assert response.body.include?("OK")
48
+ end
49
+
50
+ test "should not follow external redirects" do
51
+ visit external_redirect_path
52
+ assert response.redirect?
53
+ end
54
+
55
+ test "should recognize the host header to follow redirects properly" do
56
+ header "Host", "foo.bar"
57
+ visit host_redirect_path
58
+ assert !response.redirect?
59
+ assert response.body.include?("OK")
60
+ end
61
+
62
+ test "should click link by text" do
63
+ visit internal_redirect_path
64
+ click_link "Test Link Text"
65
+ assert_contain("Webrat Form")
66
+ end
67
+
68
+ test "should click link by id" do
69
+ visit internal_redirect_path
70
+ click_link "link_id"
71
+ assert_contain("Webrat Form")
72
+ end
73
+
74
+ test "should be able to assert xpath" do
75
+ visit root_path
76
+ assert_have_xpath "//h1"
77
+ end
78
+
79
+ test "should be able to assert selector" do
80
+ visit root_path
81
+ assert_have_selector "h1"
82
+ end
83
+
84
+ # Firefox detects and prevents infinite redirects under Selenium
85
+ unless ENV['WEBRAT_INTEGRATION_MODE'] == 'selenium'
86
+ test "should detect infinite redirects" do
87
+ assert_raises Webrat::InfiniteRedirectError do
88
+ visit infinite_redirect_path
89
+ end
90
+ end
91
+ end
92
+
93
+ # test "should be able to assert have tag" do
94
+ # visit root_path
95
+ # assert_have_tag "h1"
96
+ # end
97
+ end
@@ -0,0 +1,25 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
3
+ require 'test_help'
4
+
5
+ # begin
6
+ # require "redgreen"
7
+ # rescue MissingSourceFile
8
+ # end
9
+
10
+ require File.dirname(__FILE__) + "/../../../../lib/webrat"
11
+
12
+ Webrat.configure do |config|
13
+ config.mode = ENV['WEBRAT_INTEGRATION_MODE'].to_sym
14
+ end
15
+
16
+ ActionController::Base.class_eval do
17
+ def perform_action
18
+ perform_action_without_rescue
19
+ end
20
+ end
21
+ Dispatcher.class_eval do
22
+ def self.failsafe_response(output, status, exception = nil)
23
+ raise exception
24
+ end
25
+ end
@@ -0,0 +1,5 @@
1
+ require "rake/testtask"
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.test_files = FileList["test/*_test.rb"]
5
+ end
@@ -0,0 +1,64 @@
1
+ require "rubygems"
2
+ require "sinatra"
3
+
4
+ use_in_file_templates!
5
+
6
+ get "/" do
7
+ erb :home
8
+ end
9
+
10
+ get "/go" do
11
+ erb :go
12
+ end
13
+
14
+ get "/internal_redirect" do
15
+ redirect "/"
16
+ end
17
+
18
+ get "/external_redirect" do
19
+ redirect "http://google.com"
20
+ end
21
+
22
+ post "/go" do
23
+ @user = params[:name]
24
+ @email = params[:email]
25
+ erb :hello
26
+ end
27
+
28
+ __END__
29
+
30
+ @@ layout
31
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
32
+ <html>
33
+ <title>sinatra testing with webrat</title>
34
+ <body>
35
+ <%= yield %>
36
+ </body>
37
+ </html>
38
+
39
+ @@ home
40
+ <p> visit <a href="/go">there</a></p>
41
+
42
+ <form>
43
+ <label>
44
+ Prefilled
45
+ <input type="text" name="prefilled" value="text" />
46
+ </label>
47
+ </form>
48
+
49
+ @@ go
50
+ <form method="post" action="/go">
51
+ <div>
52
+ <label for="name">Name</label>
53
+ <input type="text" name="name" id="name">
54
+ </div>
55
+ <div>
56
+ <label for="email">Email</label>
57
+ <input type="text" name="email" id="email">
58
+ </div>
59
+ <input type="submit" value="Submit" />
60
+ </form>
61
+
62
+ @@ hello
63
+ <p>Hello, <%= @user %></p>
64
+ <p>Your email is: <%= @email %></p>
@@ -0,0 +1,16 @@
1
+ require "rubygems"
2
+ require "sinatra/base"
3
+
4
+ class MyModularApp < Sinatra::Default
5
+ get "/" do
6
+ "Hello World"
7
+ end
8
+
9
+ get "/redirect_absolute_url" do
10
+ redirect URI.join(request.url, "foo").to_s
11
+ end
12
+
13
+ get "/foo" do
14
+ "spam"
15
+ end
16
+ end
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + "/test_helper"
2
+ require File.dirname(__FILE__) + "/../classic_app"
3
+
4
+ class MyClassicAppTest < Test::Unit::TestCase
5
+ def test_visits_pages
6
+ visit "/"
7
+ assert response_body.include?("visit")
8
+
9
+ click_link "there"
10
+ assert response_body.include?('<form method="post" action="/go">')
11
+ end
12
+
13
+ def test_submits_form
14
+ visit "/go"
15
+ fill_in "Name", :with => "World"
16
+ fill_in "Email", :with => "world@example.org"
17
+ click_button "Submit"
18
+
19
+ assert response_body.include?("Hello, World")
20
+ assert response_body.include?("Your email is: world@example.org")
21
+ end
22
+
23
+ def test_check_value_of_field
24
+ visit "/"
25
+ assert field_labeled("Prefilled").value, "text"
26
+ end
27
+
28
+ def test_follows_internal_redirects
29
+ visit "/internal_redirect"
30
+ assert response_body.include?("visit")
31
+ end
32
+
33
+ def test_does_not_follow_external_redirects
34
+ visit "/external_redirect"
35
+ assert response_code == 302
36
+ end
37
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + "/test_helper"
2
+ require File.dirname(__FILE__) + "/../modular_app"
3
+
4
+ class MyModularAppTest < Test::Unit::TestCase
5
+ def app
6
+ MyModularApp
7
+ end
8
+
9
+ def test_it_works
10
+ visit "/"
11
+ assert_contain "Hello World"
12
+ end
13
+
14
+ def test_redirects
15
+ visit "/redirect_absolute_url"
16
+ assert_equal "spam", response_body
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ require "rubygems"
2
+ require "test/unit"
3
+ # require "redgreen"
4
+
5
+ require File.dirname(__FILE__) + "/../../../../lib/webrat"
6
+
7
+ Webrat.configure do |config|
8
+ config.mode = :sinatra
9
+ end
10
+
11
+ class Test::Unit::TestCase
12
+ include Webrat::Methods
13
+ include Webrat::Matchers
14
+
15
+ Webrat::Methods.delegate_to_session :response_code, :response_body
16
+ end
@@ -0,0 +1,116 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
+
3
+ describe Webrat::Configuration do
4
+
5
+ Spec::Matchers.define :parse_with_nokogiri do
6
+ match do |config|
7
+ config.parse_with_nokogiri?
8
+ end
9
+ end
10
+
11
+ Spec::Matchers.define :open_error_files do
12
+ match do |config|
13
+ config.open_error_files?
14
+ end
15
+ end
16
+
17
+ it "should have a mode" do
18
+ Webrat.configuration.should respond_to(:mode)
19
+ end
20
+
21
+ it "should use Nokogiri as the parser by default" do
22
+ config = Webrat::Configuration.new
23
+ config.should parse_with_nokogiri
24
+ end
25
+
26
+ it "should open error files by default" do
27
+ config = Webrat::Configuration.new
28
+ config.should open_error_files
29
+ end
30
+
31
+ it "should detect infinite redirects after 10" do
32
+ config = Webrat::Configuration.new
33
+ config.infinite_redirect_limit.should == 10
34
+ end
35
+
36
+ it "should be configurable with a block" do
37
+ Webrat.configure do |config|
38
+ config.open_error_files = false
39
+ end
40
+
41
+ config = Webrat.configuration
42
+ config.should_not open_error_files
43
+ end
44
+
45
+ it "should be configurable with multiple blocks" do
46
+ Webrat.configure do |config|
47
+ config.open_error_files = false
48
+ end
49
+
50
+ Webrat.configure do |config|
51
+ config.selenium_server_port = 1234
52
+ end
53
+
54
+ config = Webrat.configuration
55
+ config.should_not open_error_files
56
+ config.selenium_server_port.should == 1234
57
+ end
58
+
59
+ [:rails,
60
+ :selenium,
61
+ :rack,
62
+ :sinatra,
63
+ :mechanize].each do |mode|
64
+ it "should require correct lib when in #{mode} mode" do
65
+ config = Webrat::Configuration.new
66
+ config.should_receive(:require).with("webrat/#{mode}")
67
+ config.mode = mode
68
+ end
69
+ end
70
+
71
+ it "should require merb_session when in merb mode" do
72
+ config = Webrat::Configuration.new
73
+ config.should_receive(:require).with("webrat/merb_session")
74
+ config.mode = :merb
75
+ end
76
+
77
+ describe "Selenium" do
78
+ before :each do
79
+ @config = Webrat::Configuration.new
80
+ end
81
+
82
+ it "should use 'test' as the application environment by default" do
83
+ @config.application_environment.should == :test
84
+ end
85
+
86
+ it "should use 3001 as the application port by default" do
87
+ @config.application_port.should == 3001
88
+ end
89
+
90
+ it 'should default application address to localhost' do
91
+ @config.application_address.should == 'localhost'
92
+ end
93
+
94
+ it 'should default selenium server address to nil' do
95
+ @config.selenium_server_address.should be_nil
96
+ end
97
+
98
+ it 'should default selenium server port to 4444' do
99
+ @config.selenium_server_port.should == 4444
100
+ end
101
+
102
+ it 'should default selenium browser key to *firefox' do
103
+ @config.selenium_browser_key.should == '*firefox'
104
+ end
105
+
106
+ it 'should default selenium browser startup timeout to 5 seconds' do
107
+ @config.selenium_browser_startup_timeout.should == 5
108
+ end
109
+
110
+ it 'should allow overriding of the browser startup timeout' do
111
+ @config.selenium_browser_startup_timeout = 10
112
+ @config.selenium_browser_startup_timeout.should == 10
113
+ end
114
+ end
115
+
116
+ end