branston 0.3.2

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 (409) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +17 -0
  3. data/bin/branston +4 -0
  4. data/lib/branston/README +1 -0
  5. data/lib/branston/Rakefile +20 -0
  6. data/lib/branston/app/controllers/application_controller.rb +13 -0
  7. data/lib/branston/app/controllers/iterations_controller.rb +106 -0
  8. data/lib/branston/app/controllers/outcomes_controller.rb +102 -0
  9. data/lib/branston/app/controllers/preconditions_controller.rb +106 -0
  10. data/lib/branston/app/controllers/releases_controller.rb +93 -0
  11. data/lib/branston/app/controllers/scenarios_controller.rb +104 -0
  12. data/lib/branston/app/controllers/sessions_controller.rb +44 -0
  13. data/lib/branston/app/controllers/stories_controller.rb +121 -0
  14. data/lib/branston/app/controllers/user_roles_controller.rb +91 -0
  15. data/lib/branston/app/controllers/users_controller.rb +28 -0
  16. data/lib/branston/app/helpers/application_helper.rb +14 -0
  17. data/lib/branston/app/helpers/iterations_helper.rb +2 -0
  18. data/lib/branston/app/helpers/outcomes_helper.rb +2 -0
  19. data/lib/branston/app/helpers/preconditions_helper.rb +2 -0
  20. data/lib/branston/app/helpers/releases_helper.rb +2 -0
  21. data/lib/branston/app/helpers/sessions_helper.rb +2 -0
  22. data/lib/branston/app/helpers/stories_helper.rb +2 -0
  23. data/lib/branston/app/helpers/user_roles_helper.rb +2 -0
  24. data/lib/branston/app/helpers/users_helper.rb +93 -0
  25. data/lib/branston/app/models/iteration.rb +15 -0
  26. data/lib/branston/app/models/outcome.rb +16 -0
  27. data/lib/branston/app/models/participation.rb +7 -0
  28. data/lib/branston/app/models/precondition.rb +16 -0
  29. data/lib/branston/app/models/release.rb +7 -0
  30. data/lib/branston/app/models/scenario.rb +14 -0
  31. data/lib/branston/app/models/story.rb +33 -0
  32. data/lib/branston/app/models/user.rb +56 -0
  33. data/lib/branston/app/models/user_role.rb +7 -0
  34. data/lib/branston/app/views/iterations/_form.html.erb +24 -0
  35. data/lib/branston/app/views/iterations/edit.html.erb +14 -0
  36. data/lib/branston/app/views/iterations/index.html.erb +31 -0
  37. data/lib/branston/app/views/iterations/new.html.erb +13 -0
  38. data/lib/branston/app/views/iterations/show.html.erb +39 -0
  39. data/lib/branston/app/views/layouts/_footer.html.erb +7 -0
  40. data/lib/branston/app/views/layouts/_header.html.erb +30 -0
  41. data/lib/branston/app/views/layouts/_meta.html.erb +5 -0
  42. data/lib/branston/app/views/layouts/main.html.erb +31 -0
  43. data/lib/branston/app/views/layouts/outcomes.html.erb +17 -0
  44. data/lib/branston/app/views/layouts/preconditions.html.erb +17 -0
  45. data/lib/branston/app/views/layouts/releases.html.erb +17 -0
  46. data/lib/branston/app/views/layouts/user_roles.html.erb +32 -0
  47. data/lib/branston/app/views/outcomes/_outcome.html.erb +19 -0
  48. data/lib/branston/app/views/outcomes/_outcomes.html.erb +13 -0
  49. data/lib/branston/app/views/outcomes/create.js.rjs +3 -0
  50. data/lib/branston/app/views/outcomes/destroy.js.rjs +2 -0
  51. data/lib/branston/app/views/outcomes/edit.html.erb +12 -0
  52. data/lib/branston/app/views/outcomes/index.html.erb +18 -0
  53. data/lib/branston/app/views/outcomes/index.js.rjs +3 -0
  54. data/lib/branston/app/views/outcomes/new.html.erb +11 -0
  55. data/lib/branston/app/views/outcomes/new.js.rjs +3 -0
  56. data/lib/branston/app/views/outcomes/show.html.erb +3 -0
  57. data/lib/branston/app/views/preconditions/_precondition.html.erb +19 -0
  58. data/lib/branston/app/views/preconditions/_preconditions.html.erb +13 -0
  59. data/lib/branston/app/views/preconditions/create.js.rjs +3 -0
  60. data/lib/branston/app/views/preconditions/destroy.js.rjs +2 -0
  61. data/lib/branston/app/views/preconditions/edit.html.erb +12 -0
  62. data/lib/branston/app/views/preconditions/index.html.erb +18 -0
  63. data/lib/branston/app/views/preconditions/index.js.rjs +3 -0
  64. data/lib/branston/app/views/preconditions/new.html.erb +16 -0
  65. data/lib/branston/app/views/preconditions/new.js.rjs +3 -0
  66. data/lib/branston/app/views/preconditions/show.html.erb +3 -0
  67. data/lib/branston/app/views/releases/edit.html.erb +20 -0
  68. data/lib/branston/app/views/releases/index.html.erb +28 -0
  69. data/lib/branston/app/views/releases/new.html.erb +19 -0
  70. data/lib/branston/app/views/releases/show.html.erb +13 -0
  71. data/lib/branston/app/views/scenarios/_scenario.html.erb +25 -0
  72. data/lib/branston/app/views/scenarios/_scenarios.html.erb +16 -0
  73. data/lib/branston/app/views/scenarios/create.js.rjs +2 -0
  74. data/lib/branston/app/views/scenarios/destroy.js.rjs +2 -0
  75. data/lib/branston/app/views/scenarios/edit.html.erb +0 -0
  76. data/lib/branston/app/views/scenarios/index.html.erb +0 -0
  77. data/lib/branston/app/views/scenarios/index.js.rjs +3 -0
  78. data/lib/branston/app/views/scenarios/new.html.erb +0 -0
  79. data/lib/branston/app/views/scenarios/new.js.rjs +3 -0
  80. data/lib/branston/app/views/scenarios/show.html.erb +0 -0
  81. data/lib/branston/app/views/sessions/new.html.erb +21 -0
  82. data/lib/branston/app/views/stories/_form.html.erb +17 -0
  83. data/lib/branston/app/views/stories/_story.html.erb +37 -0
  84. data/lib/branston/app/views/stories/edit.html.erb +14 -0
  85. data/lib/branston/app/views/stories/index.html.erb +52 -0
  86. data/lib/branston/app/views/stories/new.html.erb +13 -0
  87. data/lib/branston/app/views/stories/show.html.erb +23 -0
  88. data/lib/branston/app/views/stories/show.js.rjs +3 -0
  89. data/lib/branston/app/views/stories/update.js.rjs +1 -0
  90. data/lib/branston/app/views/user_roles/edit.html.erb +16 -0
  91. data/lib/branston/app/views/user_roles/index.html.erb +20 -0
  92. data/lib/branston/app/views/user_roles/new.html.erb +15 -0
  93. data/lib/branston/app/views/user_roles/show.html.erb +8 -0
  94. data/lib/branston/app/views/users/_user_bar.html.erb +8 -0
  95. data/lib/branston/app/views/users/new.html.erb +28 -0
  96. data/lib/branston/config/boot.rb +110 -0
  97. data/lib/branston/config/database.yml +31 -0
  98. data/lib/branston/config/environment.rb +51 -0
  99. data/lib/branston/config/environments/cucumber.rb +24 -0
  100. data/lib/branston/config/environments/development.rb +20 -0
  101. data/lib/branston/config/environments/production.rb +29 -0
  102. data/lib/branston/config/environments/test.rb +43 -0
  103. data/lib/branston/config/initializers/backtrace_silencers.rb +7 -0
  104. data/lib/branston/config/initializers/inflections.rb +10 -0
  105. data/lib/branston/config/initializers/mime_types.rb +5 -0
  106. data/lib/branston/config/initializers/new_rails_defaults.rb +21 -0
  107. data/lib/branston/config/initializers/session_store.rb +15 -0
  108. data/lib/branston/config/initializers/site_keys.rb +38 -0
  109. data/lib/branston/config/locales/en.yml +5 -0
  110. data/lib/branston/config/routes.rb +26 -0
  111. data/lib/branston/coverage/app-controllers-application_controller_rb.html +141 -0
  112. data/lib/branston/coverage/app-controllers-iterations_controller_rb.html +693 -0
  113. data/lib/branston/coverage/app-controllers-outcomes_controller_rb.html +663 -0
  114. data/lib/branston/coverage/app-controllers-preconditions_controller_rb.html +735 -0
  115. data/lib/branston/coverage/app-controllers-releases_controller_rb.html +609 -0
  116. data/lib/branston/coverage/app-controllers-scenarios_controller_rb.html +669 -0
  117. data/lib/branston/coverage/app-controllers-sessions_controller_rb.html +309 -0
  118. data/lib/branston/coverage/app-controllers-stories_controller_rb.html +717 -0
  119. data/lib/branston/coverage/app-controllers-user_roles_controller_rb.html +573 -0
  120. data/lib/branston/coverage/app-controllers-users_controller_rb.html +219 -0
  121. data/lib/branston/coverage/app-helpers-application_helper_rb.html +129 -0
  122. data/lib/branston/coverage/app-helpers-iterations_helper_rb.html +75 -0
  123. data/lib/branston/coverage/app-helpers-outcomes_helper_rb.html +75 -0
  124. data/lib/branston/coverage/app-helpers-preconditions_helper_rb.html +75 -0
  125. data/lib/branston/coverage/app-helpers-releases_helper_rb.html +75 -0
  126. data/lib/branston/coverage/app-helpers-sessions_helper_rb.html +75 -0
  127. data/lib/branston/coverage/app-helpers-stories_helper_rb.html +75 -0
  128. data/lib/branston/coverage/app-helpers-user_roles_helper_rb.html +75 -0
  129. data/lib/branston/coverage/app-models-iteration_rb.html +153 -0
  130. data/lib/branston/coverage/app-models-outcome_rb.html +159 -0
  131. data/lib/branston/coverage/app-models-participation_rb.html +105 -0
  132. data/lib/branston/coverage/app-models-precondition_rb.html +153 -0
  133. data/lib/branston/coverage/app-models-release_rb.html +105 -0
  134. data/lib/branston/coverage/app-models-scenario_rb.html +147 -0
  135. data/lib/branston/coverage/app-models-story_rb.html +189 -0
  136. data/lib/branston/coverage/app-models-user_rb.html +399 -0
  137. data/lib/branston/coverage/app-models-user_role_rb.html +105 -0
  138. data/lib/branston/coverage/index.html +554 -0
  139. data/lib/branston/coverage/jquery-1.3.2.min.js +19 -0
  140. data/lib/branston/coverage/jquery.tablesorter.min.js +15 -0
  141. data/lib/branston/coverage/lib-faker_extras_rb.html +207 -0
  142. data/lib/branston/coverage/lib-story_generator_rb.html +879 -0
  143. data/lib/branston/coverage/print.css +12 -0
  144. data/lib/branston/coverage/rcov.js +42 -0
  145. data/lib/branston/coverage/screen.css +270 -0
  146. data/lib/branston/db/development.sqlite3 +0 -0
  147. data/lib/branston/db/development_structure.sql +35 -0
  148. data/lib/branston/db/migrate/20091127114237_create_users.rb +22 -0
  149. data/lib/branston/db/migrate/20091127120627_create_iterations.rb +17 -0
  150. data/lib/branston/db/migrate/20091127122422_create_stories.rb +16 -0
  151. data/lib/branston/db/migrate/20091127131037_create_user_roles.rb +13 -0
  152. data/lib/branston/db/migrate/20091127144645_create_participations.rb +15 -0
  153. data/lib/branston/db/migrate/20091127164217_create_scenarios.rb +14 -0
  154. data/lib/branston/db/migrate/20091127164446_create_preconditions.rb +14 -0
  155. data/lib/branston/db/migrate/20091127164705_create_outcomes.rb +14 -0
  156. data/lib/branston/db/migrate/20091127172849_add_title_to_stories.rb +9 -0
  157. data/lib/branston/db/migrate/20091127172950_add_story_id_to_user_role.rb +10 -0
  158. data/lib/branston/db/migrate/20091127173744_add_author_id_to_story.rb +10 -0
  159. data/lib/branston/db/migrate/20091202105555_create_releases.rb +17 -0
  160. data/lib/branston/db/migrate/20091204173634_add_slug_to_stories.rb +13 -0
  161. data/lib/branston/db/pristine.sqlite3 +0 -0
  162. data/lib/branston/db/production.sqlite3 +0 -0
  163. data/lib/branston/db/schema.rb +91 -0
  164. data/lib/branston/db/seeds.rb +7 -0
  165. data/lib/branston/db/test.sqlite3 +0 -0
  166. data/lib/branston/doc/README_FOR_APP +2 -0
  167. data/lib/branston/doc/branston.zargo +0 -0
  168. data/lib/branston/features/step_definitions/webrat_steps.rb +189 -0
  169. data/lib/branston/features/support/env.rb +46 -0
  170. data/lib/branston/features/support/paths.rb +27 -0
  171. data/lib/branston/features/support/version_check.rb +31 -0
  172. data/lib/branston/lib/authenticated_system.rb +189 -0
  173. data/lib/branston/lib/authenticated_test_helper.rb +11 -0
  174. data/lib/branston/lib/branston.rb +149 -0
  175. data/lib/branston/lib/client.rb +61 -0
  176. data/lib/branston/lib/faker_extras.rb +24 -0
  177. data/lib/branston/lib/story_generator.rb +135 -0
  178. data/lib/branston/lib/tasks/cucumber.rake +46 -0
  179. data/lib/branston/lib/tasks/make_pristine_copy.rake +18 -0
  180. data/lib/branston/log/cucumber.log +1 -0
  181. data/lib/branston/log/development.log +10836 -0
  182. data/lib/branston/log/test.log +52955 -0
  183. data/lib/branston/public/404.html +75 -0
  184. data/lib/branston/public/422.html +74 -0
  185. data/lib/branston/public/500.html +65 -0
  186. data/lib/branston/public/blank_iframe.html +2 -0
  187. data/lib/branston/public/favicon.ico +0 -0
  188. data/lib/branston/public/images/branston_pickle_bg.png +0 -0
  189. data/lib/branston/public/images/calendar_date_select/calendar.gif +0 -0
  190. data/lib/branston/public/images/icons/back_icon_30x23.png +0 -0
  191. data/lib/branston/public/images/icons/delete_icon_20x19.png +0 -0
  192. data/lib/branston/public/images/icons/delete_icon_30x29.png +0 -0
  193. data/lib/branston/public/images/icons/plus_icon_15x15.png +0 -0
  194. data/lib/branston/public/images/icons/plus_icon_20x20.png +0 -0
  195. data/lib/branston/public/images/icons/plus_icon_30x30.png +0 -0
  196. data/lib/branston/public/images/img01.gif +0 -0
  197. data/lib/branston/public/images/img02.gif +0 -0
  198. data/lib/branston/public/images/img03.gif +0 -0
  199. data/lib/branston/public/images/img04.gif +0 -0
  200. data/lib/branston/public/images/img05.gif +0 -0
  201. data/lib/branston/public/images/img06.gif +0 -0
  202. data/lib/branston/public/images/img07.gif +0 -0
  203. data/lib/branston/public/images/img08.gif +0 -0
  204. data/lib/branston/public/images/logo.png +0 -0
  205. data/lib/branston/public/images/rails.png +0 -0
  206. data/lib/branston/public/javascripts/accordion.js +126 -0
  207. data/lib/branston/public/javascripts/application.js +11 -0
  208. data/lib/branston/public/javascripts/calendar_date_select/calendar_date_select.js +443 -0
  209. data/lib/branston/public/javascripts/calendar_date_select/calendar_date_select.prototype.js +443 -0
  210. data/lib/branston/public/javascripts/calendar_date_select/format_american.js +34 -0
  211. data/lib/branston/public/javascripts/calendar_date_select/format_db.js +27 -0
  212. data/lib/branston/public/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
  213. data/lib/branston/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js +7 -0
  214. data/lib/branston/public/javascripts/calendar_date_select/format_finnish.js +32 -0
  215. data/lib/branston/public/javascripts/calendar_date_select/format_german.js +34 -0
  216. data/lib/branston/public/javascripts/calendar_date_select/format_hyphen_ampm.js +37 -0
  217. data/lib/branston/public/javascripts/calendar_date_select/format_iso_date.js +46 -0
  218. data/lib/branston/public/javascripts/calendar_date_select/format_italian.js +24 -0
  219. data/lib/branston/public/javascripts/calendar_date_select/locale/de.js +11 -0
  220. data/lib/branston/public/javascripts/calendar_date_select/locale/fi.js +10 -0
  221. data/lib/branston/public/javascripts/calendar_date_select/locale/fr.js +10 -0
  222. data/lib/branston/public/javascripts/calendar_date_select/locale/pl.js +10 -0
  223. data/lib/branston/public/javascripts/calendar_date_select/locale/pt.js +11 -0
  224. data/lib/branston/public/javascripts/calendar_date_select/locale/ru.js +10 -0
  225. data/lib/branston/public/javascripts/controls.js +963 -0
  226. data/lib/branston/public/javascripts/dragdrop.js +973 -0
  227. data/lib/branston/public/javascripts/effects.js +1128 -0
  228. data/lib/branston/public/javascripts/prototype.js +4320 -0
  229. data/lib/branston/public/robots.txt +5 -0
  230. data/lib/branston/public/stylesheets/application.css +74 -0
  231. data/lib/branston/public/stylesheets/calendar_date_select/blue.css +130 -0
  232. data/lib/branston/public/stylesheets/calendar_date_select/default.css +135 -0
  233. data/lib/branston/public/stylesheets/calendar_date_select/plain.css +128 -0
  234. data/lib/branston/public/stylesheets/calendar_date_select/red.css +135 -0
  235. data/lib/branston/public/stylesheets/calendar_date_select/silver.css +133 -0
  236. data/lib/branston/public/stylesheets/scaffold.css +54 -0
  237. data/lib/branston/public/stylesheets/style.css +485 -0
  238. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  239. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  240. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  241. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  242. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  243. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  244. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  245. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  246. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  247. data/lib/branston/public/stylesheets/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  248. data/lib/branston/public/stylesheets/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  249. data/lib/branston/public/stylesheets/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  250. data/lib/branston/public/stylesheets/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  251. data/lib/branston/public/stylesheets/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  252. data/lib/branston/public/stylesheets/ui-lightness/jquery-ui-1.7.2.custom.css +406 -0
  253. data/lib/branston/script/about +4 -0
  254. data/lib/branston/script/console +3 -0
  255. data/lib/branston/script/cucumber +17 -0
  256. data/lib/branston/script/dbconsole +3 -0
  257. data/lib/branston/script/destroy +3 -0
  258. data/lib/branston/script/generate +3 -0
  259. data/lib/branston/script/performance/benchmarker +3 -0
  260. data/lib/branston/script/performance/profiler +3 -0
  261. data/lib/branston/script/plugin +3 -0
  262. data/lib/branston/script/runner +3 -0
  263. data/lib/branston/script/server +3 -0
  264. data/lib/branston/test/blueprints.rb +108 -0
  265. data/lib/branston/test/fixtures/outcomes.yml +7 -0
  266. data/lib/branston/test/fixtures/preconditions.yml +7 -0
  267. data/lib/branston/test/functional/iterations_controller_test.rb +155 -0
  268. data/lib/branston/test/functional/outcomes_controller_test.rb +97 -0
  269. data/lib/branston/test/functional/preconditions_controller_test.rb +106 -0
  270. data/lib/branston/test/functional/releases_controller_test.rb +68 -0
  271. data/lib/branston/test/functional/scenarios_controller_test.rb +100 -0
  272. data/lib/branston/test/functional/sessions_controller_test.rb +85 -0
  273. data/lib/branston/test/functional/stories_controller_test.rb +129 -0
  274. data/lib/branston/test/functional/user_roles_controller_test.rb +71 -0
  275. data/lib/branston/test/functional/users_controller_test.rb +61 -0
  276. data/lib/branston/test/performance/browsing_test.rb +9 -0
  277. data/lib/branston/test/test_helper.rb +49 -0
  278. data/lib/branston/test/unit/client_test.rb +101 -0
  279. data/lib/branston/test/unit/helpers/iterations_helper_test.rb +4 -0
  280. data/lib/branston/test/unit/helpers/outcomes_helper_test.rb +4 -0
  281. data/lib/branston/test/unit/helpers/preconditions_helper_test.rb +4 -0
  282. data/lib/branston/test/unit/helpers/releases_helper_test.rb +4 -0
  283. data/lib/branston/test/unit/helpers/stories_helper_test.rb +4 -0
  284. data/lib/branston/test/unit/helpers/user_roles_helper_test.rb +4 -0
  285. data/lib/branston/test/unit/iteration_test.rb +13 -0
  286. data/lib/branston/test/unit/outcome_test.rb +9 -0
  287. data/lib/branston/test/unit/participation_test.rb +9 -0
  288. data/lib/branston/test/unit/precondition_test.rb +9 -0
  289. data/lib/branston/test/unit/release_test.rb +5 -0
  290. data/lib/branston/test/unit/scenario_test.rb +12 -0
  291. data/lib/branston/test/unit/story_generator_test.rb +37 -0
  292. data/lib/branston/test/unit/story_test.rb +159 -0
  293. data/lib/branston/test/unit/user_role_test.rb +9 -0
  294. data/lib/branston/test/unit/user_test.rb +115 -0
  295. data/lib/branston/test/xml/example.xml +45 -0
  296. data/lib/branston/test/xml/no_scenarios.xml +12 -0
  297. data/lib/branston/vendor/plugins/calendar_date_select-1.15/History.txt +237 -0
  298. data/lib/branston/vendor/plugins/calendar_date_select-1.15/MIT-LICENSE +20 -0
  299. data/lib/branston/vendor/plugins/calendar_date_select-1.15/Manifest.txt +42 -0
  300. data/lib/branston/vendor/plugins/calendar_date_select-1.15/Rakefile +31 -0
  301. data/lib/branston/vendor/plugins/calendar_date_select-1.15/Readme.txt +16 -0
  302. data/lib/branston/vendor/plugins/calendar_date_select-1.15/init.rb +1 -0
  303. data/lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/functional/cds_test.html +334 -0
  304. data/lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/prototype.js +4184 -0
  305. data/lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/test.css +40 -0
  306. data/lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/unit/cds_helper_methods.html +46 -0
  307. data/lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/unittest.js +564 -0
  308. data/lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select.rb +33 -0
  309. data/lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select/calendar_date_select.rb +116 -0
  310. data/lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select/form_helpers.rb +225 -0
  311. data/lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select/includes_helper.rb +29 -0
  312. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/blank_iframe.html +2 -0
  313. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/images/calendar_date_select/calendar.gif +0 -0
  314. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/calendar_date_select.js +443 -0
  315. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_american.js +34 -0
  316. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_db.js +27 -0
  317. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
  318. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js +7 -0
  319. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_finnish.js +32 -0
  320. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_hyphen_ampm.js +37 -0
  321. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_iso_date.js +46 -0
  322. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_italian.js +24 -0
  323. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/de.js +11 -0
  324. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/fi.js +10 -0
  325. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/fr.js +10 -0
  326. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/pl.js +10 -0
  327. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/pt.js +11 -0
  328. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/ru.js +10 -0
  329. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/blue.css +130 -0
  330. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/default.css +135 -0
  331. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/plain.css +128 -0
  332. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/red.css +135 -0
  333. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/silver.css +133 -0
  334. data/lib/branston/vendor/plugins/calendar_date_select-1.15/spec/calendar_date_select/calendar_date_select_spec.rb +14 -0
  335. data/lib/branston/vendor/plugins/calendar_date_select-1.15/spec/calendar_date_select/form_helpers_spec.rb +166 -0
  336. data/lib/branston/vendor/plugins/calendar_date_select-1.15/spec/spec_helper.rb +26 -0
  337. data/lib/branston/vendor/plugins/in_place_editing/README +14 -0
  338. data/lib/branston/vendor/plugins/in_place_editing/Rakefile +22 -0
  339. data/lib/branston/vendor/plugins/in_place_editing/init.rb +2 -0
  340. data/lib/branston/vendor/plugins/in_place_editing/lib/in_place_editing.rb +28 -0
  341. data/lib/branston/vendor/plugins/in_place_editing/lib/in_place_macros_helper.rb +82 -0
  342. data/lib/branston/vendor/plugins/in_place_editing/test/in_place_editing_test.rb +89 -0
  343. data/lib/branston/vendor/plugins/in_place_editing/test/test_helper.rb +8 -0
  344. data/lib/branston/vendor/plugins/restful_authentication/CHANGELOG +68 -0
  345. data/lib/branston/vendor/plugins/restful_authentication/LICENSE +20 -0
  346. data/lib/branston/vendor/plugins/restful_authentication/README.textile +224 -0
  347. data/lib/branston/vendor/plugins/restful_authentication/Rakefile +32 -0
  348. data/lib/branston/vendor/plugins/restful_authentication/TODO +15 -0
  349. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/USAGE +1 -0
  350. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/authenticated_generator.rb +478 -0
  351. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/lib/insert_routes.rb +54 -0
  352. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/_model_partial.html.erb +8 -0
  353. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/activation.erb +3 -0
  354. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/authenticated_system.rb +189 -0
  355. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/authenticated_test_helper.rb +22 -0
  356. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/controller.rb +43 -0
  357. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/accounts.feature +109 -0
  358. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/sessions.feature +134 -0
  359. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_env.rb +9 -0
  360. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_navigation_steps.rb +48 -0
  361. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_resource_steps.rb +178 -0
  362. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_response_steps.rb +169 -0
  363. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/rest_auth_features_helper.rb +81 -0
  364. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/user_steps.rb +131 -0
  365. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/helper.rb +2 -0
  366. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/login.html.erb +16 -0
  367. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/mailer.rb +25 -0
  368. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/migration.rb +26 -0
  369. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model.rb +83 -0
  370. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model_controller.rb +85 -0
  371. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model_helper.rb +93 -0
  372. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model_helper_spec.rb +158 -0
  373. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/observer.rb +11 -0
  374. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/signup.html.erb +19 -0
  375. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/signup_notification.erb +8 -0
  376. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/site_keys.rb +38 -0
  377. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/access_control_spec.rb +90 -0
  378. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/authenticated_system_spec.rb +102 -0
  379. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/sessions_controller_spec.rb +139 -0
  380. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/users_controller_spec.rb +198 -0
  381. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/fixtures/users.yml +60 -0
  382. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/helpers/users_helper_spec.rb +141 -0
  383. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/models/user_spec.rb +290 -0
  384. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/functional_test.rb +82 -0
  385. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/mailer_test.rb +31 -0
  386. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/model_functional_test.rb +93 -0
  387. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/unit_test.rb +164 -0
  388. data/lib/branston/vendor/plugins/restful_authentication/init.rb +1 -0
  389. data/lib/branston/vendor/plugins/restful_authentication/lib/authentication.rb +40 -0
  390. data/lib/branston/vendor/plugins/restful_authentication/lib/authentication/by_cookie_token.rb +82 -0
  391. data/lib/branston/vendor/plugins/restful_authentication/lib/authentication/by_password.rb +64 -0
  392. data/lib/branston/vendor/plugins/restful_authentication/lib/authorization.rb +14 -0
  393. data/lib/branston/vendor/plugins/restful_authentication/lib/authorization/aasm_roles.rb +63 -0
  394. data/lib/branston/vendor/plugins/restful_authentication/lib/authorization/stateful_roles.rb +62 -0
  395. data/lib/branston/vendor/plugins/restful_authentication/lib/trustification.rb +14 -0
  396. data/lib/branston/vendor/plugins/restful_authentication/lib/trustification/email_validation.rb +20 -0
  397. data/lib/branston/vendor/plugins/restful_authentication/notes/AccessControl.txt +2 -0
  398. data/lib/branston/vendor/plugins/restful_authentication/notes/Authentication.txt +5 -0
  399. data/lib/branston/vendor/plugins/restful_authentication/notes/Authorization.txt +154 -0
  400. data/lib/branston/vendor/plugins/restful_authentication/notes/RailsPlugins.txt +78 -0
  401. data/lib/branston/vendor/plugins/restful_authentication/notes/SecurityFramework.graffle +0 -0
  402. data/lib/branston/vendor/plugins/restful_authentication/notes/SecurityFramework.png +0 -0
  403. data/lib/branston/vendor/plugins/restful_authentication/notes/SecurityPatterns.txt +163 -0
  404. data/lib/branston/vendor/plugins/restful_authentication/notes/Tradeoffs.txt +126 -0
  405. data/lib/branston/vendor/plugins/restful_authentication/notes/Trustification.txt +49 -0
  406. data/lib/branston/vendor/plugins/restful_authentication/rails/init.rb +3 -0
  407. data/lib/branston/vendor/plugins/restful_authentication/restful-authentication.gemspec +33 -0
  408. data/lib/branston/vendor/plugins/restful_authentication/tasks/auth.rake +33 -0
  409. metadata +513 -0
@@ -0,0 +1,163 @@
1
+ h1. Security from the perspective of a community site.
2
+
3
+ Better than anything you'll read below on the subject:
4
+
5
+ * "The OWASP Guide to Building Secure Web Applications":http://www.owasp.org/index.php/Category:OWASP_Guide_Project
6
+ * "Secure Programming for Linux and Unix HOWTO":http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/web-authentication.html
7
+ * "Core Security Patterns":http://www.coresecuritypatterns.com/patterns.htm
8
+ * Stephen Downes' article on "Authentication and Identification":http://www.downes.ca/post/12
9
+
10
+ h2. Snazzy Diagram
11
+
12
+ !http://github.com/technoweenie/restful-authentication/tree/master/notes/SecurityFramework.png?raw=true!:http://github.com/technoweenie/restful-authentication/tree/master/notes/SecurityFramework.png
13
+
14
+ (in notes/SecurityFramework.png)
15
+
16
+ h2. Terms
17
+
18
+ * Identification: Assign this visitor a name and an associated identity
19
+ (picture, website, favorite pokemon, trust metric, security roles).
20
+
21
+ bq. "Behold. I am not Gandalf the Grey, whom you betrayed, I am Gandalf the White,
22
+ who has returned from death." -- Tolkien
23
+
24
+ * Authentication: Verify this visitor matches the claimed identity.
25
+
26
+ bq. "My name is Werner Brandis. My voice is my password. Verify me." -- Sneakers
27
+
28
+ * Authorization: Given a request (Actions+Resource+Environment), decide if it's safe.
29
+
30
+ bq. "Of every tree of the garden thou mayest freely eat: But of the tree of
31
+ the knowledge of good and evil, thou shalt not eat of it: for in the day that
32
+ thou eatest thereof thou shalt surely die." -- Gen 2:16-17
33
+
34
+ * Trust: Confidence this visitor will act reliably.
35
+
36
+ bq. "A copper! A copper! How d'ya like that, boys? And we went for it. _I_ went
37
+ for it. Treated him like a kid brother. And I was gonna split fifty-fifty with
38
+ a copper." -- James Cagney, White Heat
39
+
40
+ ** Reputation from Trust Network: Award trust to this visitor based on what other trusted parties say.
41
+
42
+ bq. "He used my name? In the /street/? He called me a punk? My name was on
43
+ the street? When we bounce from this s-t here, Y'all gonna go down on them
44
+ corners, let the people know: word did not get back to me. Let 'em know Marlo
45
+ step to any m-f-: Omar, Barksdale, whoever. My name IS my NAME." -- Marlo
46
+ Stansfield, The Wire (paraphrased)
47
+
48
+ * Reputation from Past Actions:
49
+
50
+ bq. "The man you just killed was just released from prison. He could've f-in'
51
+ walked. All he had to do was say my dad's name, but he didn't; he kept his
52
+ f-ing mouth shut. And did his f-in' time, and he did it like a man. He did
53
+ four years for us. So, Mr. Orange, you're tellin' me this very good friend of
54
+ mine, who did four years for my father, who in four years never made a deal,
55
+ no matter what they dangled in front of him, you're telling me that now, that
56
+ now this man is free, and we're making good on our commitment to him, he's
57
+ just gonna decide, out of the f-ing blue, to rip us off?" -- Nice Guy Eddie,
58
+ Reservoir Dogs
59
+
60
+ * Access control
61
+
62
+ ** Role
63
+ * http://en.wikipedia.org/wiki/Role-based_access_control
64
+ * "Role-Based Access Control FAQ":http://csrc.nist.gov/groups/SNS/rbac/faq.html
65
+ * "Role Based Access Control and Role Based Security":http://csrc.nist.gov/groups/SNS/rbac/ from the NIST Computer Security Division
66
+
67
+
68
+ * Auditing & Recovery
69
+
70
+ h2. Concept
71
+
72
+ @ The below is a mixture of half-baked, foolish and incomplete. Just sos you know. @
73
+
74
+ * Identity here will mean 'online presence' -- user account, basically.
75
+ * Person will mean the remote endpoint -- whether that's a person or robot or
76
+ company. (Security papers call this "Subject" but that's awful).
77
+ * It's easy to confuse 'person' and 'identity', so easy I probably have below.
78
+
79
+ Why do you need to authenticate? For authorization. So traditionally, we think
80
+
81
+ person <- (ath'n token) <- identity <- (policy) <- actions
82
+
83
+ That is, actions are attached to an identity by security policy, identity is
84
+ attached to a person by their authentication token.
85
+
86
+ The problem is that we cannot authenticate a /person/, only the token they
87
+ present: password, ATM card+PIN number, etc.
88
+ bq. "The Doors of Durin, Lord of Moria. Speak friend, and enter" -- Tolkien
89
+
90
+ Anyone who presents that card+PIN, Elvish catchphrase, or voice print will be
91
+ authenticated to act as the corresponding identity (account holder, friend of
92
+ the elves, nerdy scientist), and we have no control over those tokens.
93
+
94
+ person <- (ath'n token) <- identity <- (az'n policy) <- actions
95
+ ^^^^ This step is wrong.
96
+
97
+ The solution is to not care, or rather to reframe our goals.
98
+
99
+ What we actually want is not to /control/ users' actions, but to /predict/ them.
100
+ When Mr. Blonde helps Mr. White rob a jewelry store it's a security failure for
101
+ the store but a success for the crime gang. When Mr. Orange (an undercover cop)
102
+ shoots Mr. Blonde it's a security failure for the crime gang and a success for
103
+ the police. We want to know how to use
104
+
105
+ ( identity, past actions ) => (trust, future actions)
106
+
107
+ If you can predict someone is a vandal or troll, don't let them change pages, or
108
+ only let them post to Ye Flaming Pitte of Flamage.
109
+
110
+ We can to reasonable satisfaction authenticate a token: only grant that
111
+ identity to visitors who bear that token. So this part is fine:
112
+
113
+ person (token)<- identity
114
+
115
+ But we have no control over authentication token - identity correspondence.
116
+ This part is broken:
117
+
118
+ person x (token)<- identity
119
+
120
+ The only one who does have that control is the person behind that identity.
121
+ They can reasonably guarantee
122
+
123
+ person ->(token)<- identity
124
+
125
+ If that person is going to be in your community, they have an interest in their
126
+ identity: they want to be known as someone who isn't a punk, or doesn't troll,
127
+ or does troll and better than anyone, or won't rat you out to the cops. The
128
+ actions of a person are moderated by their interest in maintaining their
129
+ reputation:
130
+
131
+ past actions -> reputation ->person
132
+
133
+ So give up authorization in favor of auditing and recoverability, and authorize
134
+ based on reputation -- on the past behavior and vouchsafes offered by the
135
+ identity,
136
+
137
+ reputation -> trust -> permissions ->actions
138
+
139
+ They want to know that they have full control of their identity; among other
140
+ things, privacy and an understanding that nobody can act without permission on
141
+ their behalf. In fact, we can assure that only a token-holder can assume the
142
+ corresponding identity:
143
+
144
+ person ->(token)<->identity ->(trust) actions ->reputation ->person
145
+
146
+ poop
147
+
148
+ reputation ->trust
149
+
150
+
151
+ So we need to
152
+ * Understand and encourage how their security interests aligns with ours,
153
+ * Understand how it doesn't, and be robust in the face of that; and
154
+ * Recover gracefully if it goes wrong.
155
+
156
+ Instead of
157
+
158
+ authorization -> user -> token -> identity
159
+
160
+ we assign roles based on
161
+
162
+ authorization <- trust <- reputation <- identity <- token <- person
163
+
@@ -0,0 +1,126 @@
1
+ Guides to best practices:
2
+ * "The OWASP Guide to Building Secure Web Applications":http://www.owasp.org/index.php/Category:OWASP_Guide_Project
3
+ * "Secure Programming for Linux and Unix HOWTO":http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/web-authentication.html
4
+ * [[http://www.coresecuritypatterns.com/patterns.htm]]
5
+
6
+ ***************************************************************************
7
+ h2. Session resetting
8
+
9
+ Best practices recommend that you regenerate all session tokens (for us, the
10
+ browser session ID and the remember_token cookie) on any privilege change (for
11
+ us, logging in or logging out) -- see http://tinyurl.com/5vdvuq. This release
12
+ properly regenerates remember_token cookies, but does *not* by default
13
+ reset_session.
14
+
15
+ Calling reset_session can interact with Form Authentication tokens (a *much*
16
+ more important security feature). If a visitor logs in but has a form open in
17
+ another tab, or uses the back button to pull one up from their history (perhaps
18
+ the one that required them to log in), they will get the exceedingly unpleasant
19
+ Request Forgery error. Imagine spending twenty minutes crafting a devastating
20
+ critique of this week's Battlestar Galactica episode, finding you need to log in
21
+ before posting -- but then getting a Request Forgery when you re-attempt the
22
+ post. Frak! Thus, it's disabled by default.
23
+
24
+ On the other hand, this does moderately reduce your defense-in-depth against a
25
+ "Cross-Site Request Forgery":http://en.wikipedia.org/wiki/CSRF attack. To
26
+ enable session_resetting, look for any
27
+ # reset session
28
+ lines in the app/controllers/session_controller.rb and
29
+ app/controllers/users_controller.rb and uncomment them.
30
+
31
+ ***************************************************************************
32
+ h2. Site Key
33
+
34
+ A Site key gives additional protection against a dictionary attack if your
35
+ DB is ever compromised. With no site key, we store
36
+ DB_password = hash(user_password, DB_user_salt)
37
+ If your database were to be compromised you'd be vulnerable to a dictionary
38
+ attack on all your stupid users' passwords. With a site key, we store
39
+ DB_password = hash(user_password, DB_user_salt, Code_site_key)
40
+ That means an attacker needs access to both your site's code *and* its
41
+ database to mount an "offline dictionary attack.":http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/web-authentication.html
42
+
43
+ It's probably of minor importance, but recommended by best practices: 'defense
44
+ in depth'. Needless to say, if you upload this to github or the youtubes or
45
+ otherwise place it in public view you'll kinda defeat the point. Your users'
46
+ passwords are still secure, and the world won't end, but defense_in_depth -= 1.
47
+
48
+ Please note: if you change this, all the passwords will be invalidated, so DO
49
+ keep it someplace secure. Use the random value given or type in the lyrics to
50
+ your favorite Jay-Z song or something; any moderately long, unpredictable text.
51
+
52
+ ***************************************************************************
53
+ h2. Password stretching
54
+
55
+ If someone were to capture your user accounts database, they could farm it out
56
+ for brute-force or dictionary-attack password cracking. "Password Stretching"
57
+ makes brute force (even with a compromised database and site key) attacks
58
+ harder, and scales with Moore's law. Basically, you apply the password
59
+ encryption process several times, meaning that each brute-force attempt takes
60
+ that much longer. Hash your password ten times, and a brute-force attack takes
61
+ ten times longer; hash 100,000 times and an attack takes 100,000 times longer.
62
+
63
+ bq. "To squeeze the most security out of a limited-entropy password or
64
+ passphrase, we can use two techniques [salting and stretching]... that are so
65
+ simple and obvious that they should be used in every password system. There
66
+ is really no excuse not to use them. ... Choose stretching factor so computing
67
+ K from (salt, passwd) takes 200-1000 ms. Store r with the user's password, and
68
+ increase it as computers get faster." -- http://tinyurl.com/37lb73
69
+ Practical Security (Ferguson & Scheier) p350
70
+
71
+ Now, adding even a 0.2s delay to page requests isn't justifiable for most online
72
+ applications, and storing r is unnecessary (at least on your first design
73
+ iteration). But
74
+ On a 1G Slicehost already under moderate load:
75
+ irb(main):005:0> puts Time.now; (10**6).times{ secure_digest(Time.now, rand) }; puts Time.now
76
+ Fri May 16 08:26:16 +0000 2008
77
+ Fri May 16 08:30:58 +0000 2008
78
+ => 280s/1M ~= 0.000_3 ms / digest
79
+ A modest 10 (the default here) foldings makes brute forcing, even given the site
80
+ key and database, 10 times harder at a 3ms penalty. An app that otherwise
81
+ serves 100 reqs/s is reduced to 78 signin reqs/s; an app that does 10reqs/s is
82
+ reduced to 9.7 signin reqs/s
83
+
84
+ * http://www.owasp.org/index.php/Hashing_Java
85
+ * "An Illustrated Guide to Cryptographic Hashes":http://www.unixwiz.net/techtips/iguide-crypto-hashes.html
86
+
87
+ The default of 10 is a reasonable compromise, but the security-paranoid and
88
+ resource-rich may consider increasing REST_AUTH_DIGEST_STRETCHES to match the
89
+ one-second best-practices value, while those with existing userbases (whose
90
+ passwords would otherwise no longer work) should leave the value at one.
91
+
92
+ ***************************************************************************
93
+ h2. Token regeneration
94
+
95
+ The session and the remember_token should both be expired and regenerated
96
+ every time we cross the logged out / logged in barrier by either password
97
+ or cookie. ("To reduce the risk from session hijacking":http://www.owasp.org/index.php/Session_Management#Regeneration_of_Session_Tokens
98
+ and brute force attacks, the HTTP server can seamlessly expire and
99
+ regenerate tokens. This decreases the window of opportunity for a replay or
100
+ brute force attack.) It does mean we set the cookie more often.
101
+
102
+ http://www.owasp.org/index.php/Session_Management#Regeneration_of_Session_Tokens
103
+ http://palisade.plynt.com/issues/2004Jul/safe-auth-practices/
104
+
105
+
106
+ ***************************************************************************
107
+ h2. Field validation
108
+
109
+ We restrict login names to only contain the characters
110
+ <nowiki>A-Za-z0-9.-_@</nowiki> This allows (most) email addresses and is safe
111
+ for urls, database expressions (the at sign, technically reserved in a url, will
112
+ survive in most browsers). If you want to be more permissive:
113
+ * "URL-legal characters":http://www.blooberry.com/indexdot/html/topics/urlencoding.htm are <nowiki>-_.!~*'()</nowiki>
114
+ * "XML-legal characters":http://www.sklar.com/blog/archives/96-XML-vs.-Control-Characters.html are <nowiki>Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]</nowiki>
115
+ * "Email-address legal characters":http://tools.ietf.org/html/rfc2822#section-3.4.1 are <nowiki>0-9a-zA-Z!#\$%\&\'\*\+_/=\?^\-`\{|\}~\.</nowiki> but see "this discussion of what is sane"http://www.regular-expressions.info/email.html (as opposed to legal)
116
+
117
+ We restrict email addresses to match only those actually seen in the wild,
118
+ invalidating some that are technically allowed (characters such as % and ! that
119
+ date back to UUCP days. The line to allow all RFC-2822 emails is commented out,
120
+ so feel free to enable it, or remove this validation. See "this discussion of
121
+ what is sane"http://www.regular-expressions.info/email.html as opposed to what
122
+ is legal. Also understand that this is just a cursory bogus-input check --
123
+ there's no guarantee that this email matches an account or is even well-formed.
124
+
125
+ If you change these validations you should change the RSpec tests as well.
126
+
@@ -0,0 +1,49 @@
1
+ See also
2
+ * "Trustlet Wiki":http://www.trustlet.org/wiki
3
+
4
+ Potential Ingredients for a trust metric
5
+
6
+ h2. Reputation
7
+
8
+ * Web of trust
9
+ * Reputation systems
10
+ ** Akismet, Viking, etc.
11
+
12
+ * prove_as_human Completing a
13
+ * validate_email
14
+
15
+ logged_in
16
+ akismet, etc.
17
+ session duration
18
+
19
+ h2. Accountability
20
+
21
+ Does the person tied to this identity stand to lose or gain anything based on this action?
22
+
23
+
24
+ h2. Past history
25
+
26
+ * past history
27
+ ** we can revisit past trust decisions based on revised trust estimates
28
+ * recency of errors (reduce trust on an application exception)
29
+
30
+ h2. Commitment
31
+
32
+ * are_you_sure -- ask for con
33
+ * willingness to pay a "hate task" (compute big hash) a la Zed Shaw
34
+ * send_me_one_cent a micropayment
35
+ ** shows commitment
36
+ ** secondary validation from payment system
37
+ ** offsets rist
38
+
39
+ h2. Identity Binding
40
+
41
+ * Stale sessions
42
+ bq. "If your application allows users to be logged in for long periods of time
43
+ ensure that controls are in place to revalidate a user’s authorization to a
44
+ resource. For example, if Bob has the role of “Top Secret” at 1:00, and at
45
+ 2:00 while he is logged in his role is reduced to Secret he should not be able
46
+ to access “Top Secret” data any more." -- http://www.owasp.org/index.php/Guide_to_Authorization
47
+
48
+ * how I authenticated: for instance, 'logged in by cookie' << 'logged in by password'
49
+
@@ -0,0 +1,3 @@
1
+ require File.join(File.dirname(__FILE__), "..", "lib", "authentication")
2
+ require File.join(File.dirname(__FILE__), "..", "lib", "authentication", "by_password")
3
+ require File.join(File.dirname(__FILE__), "..", "lib", "authentication", "by_cookie_token")
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{restful-authentication}
5
+ s.version = "1.1.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["RailsJedi", "Rick Olson"]
9
+ s.date = %q{2008-07-04}
10
+ s.description = %q{This widely-used plugin provides a foundation for securely managing user.}
11
+ s.email = %q{railsjedi@gmail.com}
12
+ s.extra_rdoc_files = ["README.textile"]
13
+ s.files = ["CHANGELOG", "README.textile", "Rakefile", "TODO", "generators/authenticated/authenticated_generator.rb", "generators/authenticated/lib/insert_routes.rb", "generators/authenticated/templates/_model_partial.html.erb", "generators/authenticated/templates/activation.erb", "generators/authenticated/templates/authenticated_system.rb", "generators/authenticated/templates/authenticated_test_helper.rb", "generators/authenticated/templates/controller.rb", "generators/authenticated/templates/helper.rb", "generators/authenticated/templates/login.html.erb", "generators/authenticated/templates/mailer.rb", "generators/authenticated/templates/migration.rb", "generators/authenticated/templates/model.rb", "generators/authenticated/templates/model_controller.rb", "generators/authenticated/templates/model_helper.rb", "generators/authenticated/templates/model_helper_spec.rb", "generators/authenticated/templates/observer.rb", "generators/authenticated/templates/signup.html.erb", "generators/authenticated/templates/signup_notification.erb", "generators/authenticated/templates/site_keys.rb", "generators/authenticated/templates/spec/controllers/access_control_spec.rb", "generators/authenticated/templates/spec/controllers/authenticated_system_spec.rb", "generators/authenticated/templates/spec/controllers/sessions_controller_spec.rb", "generators/authenticated/templates/spec/controllers/users_controller_spec.rb", "generators/authenticated/templates/spec/fixtures/users.yml", "generators/authenticated/templates/spec/helpers/users_helper_spec.rb", "generators/authenticated/templates/spec/models/user_spec.rb", "generators/authenticated/templates/stories/rest_auth_stories.rb", "generators/authenticated/templates/stories/rest_auth_stories_helper.rb", "generators/authenticated/templates/stories/steps/ra_navigation_steps.rb", "generators/authenticated/templates/stories/steps/ra_resource_steps.rb", "generators/authenticated/templates/stories/steps/ra_response_steps.rb", "generators/authenticated/templates/stories/steps/user_steps.rb", "generators/authenticated/templates/stories/users/accounts.story", "generators/authenticated/templates/stories/users/sessions.story", "generators/authenticated/templates/test/functional_test.rb", "generators/authenticated/templates/test/mailer_test.rb", "generators/authenticated/templates/test/model_functional_test.rb", "generators/authenticated/templates/test/unit_test.rb", "generators/authenticated/USAGE", "init.rb", "lib/authentication/by_cookie_token.rb", "lib/authentication/by_password.rb", "lib/authentication.rb", "lib/authorization/aasm_roles.rb", "lib/authorization/stateful_roles.rb", "lib/authorization.rb", "lib/trustification/email_validation.rb", "lib/trustification.rb", "rails/init.rb"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://github.com/technoweenie/restful-authentication}
16
+ s.rdoc_options = ["--main", "README.textile"]
17
+ s.require_paths = ["lib"]
18
+ s.rubygems_version = %q{1.3.0}
19
+ s.summary = %q{Generates code for user login and authentication}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 2
24
+
25
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
+ s.add_runtime_dependency(%q<rails>, ["~> 2.1.0"])
27
+ else
28
+ s.add_dependency(%q<rails>, ["~> 2.1.0"])
29
+ end
30
+ else
31
+ s.add_dependency(%q<rails>, ["~> 2.1.0"])
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ require 'digest/sha1'
2
+ require 'erb'
3
+
4
+ def site_keys_file
5
+ File.join("config", "initializers", "site_keys.rb")
6
+ end
7
+
8
+ def secure_digest(*args)
9
+ Digest::SHA1.hexdigest(args.flatten.join('--'))
10
+ end
11
+
12
+ def make_token
13
+ secure_digest(Time.now, (1..10).map{ rand.to_s })
14
+ end
15
+
16
+ def make_site_keys_rb
17
+ site_key = secure_digest(Time.now, (1..10).map{ rand.to_s })
18
+ site_key_erb = <<-EOF
19
+ # key of 40 chars length
20
+ REST_AUTH_SITE_KEY = '#{site_key}'
21
+ REST_AUTH_DIGEST_STRETCHES = 10
22
+ EOF
23
+ end
24
+
25
+ namespace :auth do
26
+ namespace :gen do
27
+ desc "Generates config/initializers/site_keys.rb"
28
+ task :site_key do
29
+ file = ENV['file'] || site_keys_file
30
+ File.open(file, "w"){|f| f.write(make_site_keys_rb)}
31
+ end
32
+ end
33
+ end
metadata ADDED
@@ -0,0 +1,513 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: branston
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
+ platform: ruby
6
+ authors:
7
+ - dave.hrycyszyn@headlondon.com
8
+ - dan@dangarland.co.uk
9
+ - steve.laing@gmail.com
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2009-12-09 00:00:00 +00:00
15
+ default_executable: branston
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: thoughtbot-shoulda
19
+ type: :development
20
+ version_requirement:
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: "0"
26
+ version:
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ type: :runtime
30
+ version_requirement:
31
+ version_requirements: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 2.3.5
36
+ version:
37
+ - !ruby/object:Gem::Dependency
38
+ name: calendar_date_select
39
+ type: :runtime
40
+ version_requirement:
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "1.15"
46
+ version:
47
+ - !ruby/object:Gem::Dependency
48
+ name: cucumber
49
+ type: :runtime
50
+ version_requirement:
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "="
54
+ - !ruby/object:Gem::Version
55
+ version: 0.4.4
56
+ version:
57
+ - !ruby/object:Gem::Dependency
58
+ name: webrat
59
+ type: :runtime
60
+ version_requirement:
61
+ version_requirements: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: 0.5.3
66
+ version:
67
+ description: Cucumber and more!
68
+ email: dave.hrycyszyn@headlondon.com
69
+ executables:
70
+ - branston
71
+ extensions: []
72
+
73
+ extra_rdoc_files:
74
+ - LICENSE
75
+ - README.rdoc
76
+ files:
77
+ - lib/branston/README
78
+ - lib/branston/Rakefile
79
+ - lib/branston/app/controllers/application_controller.rb
80
+ - lib/branston/app/controllers/iterations_controller.rb
81
+ - lib/branston/app/controllers/outcomes_controller.rb
82
+ - lib/branston/app/controllers/preconditions_controller.rb
83
+ - lib/branston/app/controllers/releases_controller.rb
84
+ - lib/branston/app/controllers/scenarios_controller.rb
85
+ - lib/branston/app/controllers/sessions_controller.rb
86
+ - lib/branston/app/controllers/stories_controller.rb
87
+ - lib/branston/app/controllers/user_roles_controller.rb
88
+ - lib/branston/app/controllers/users_controller.rb
89
+ - lib/branston/app/helpers/application_helper.rb
90
+ - lib/branston/app/helpers/iterations_helper.rb
91
+ - lib/branston/app/helpers/outcomes_helper.rb
92
+ - lib/branston/app/helpers/preconditions_helper.rb
93
+ - lib/branston/app/helpers/releases_helper.rb
94
+ - lib/branston/app/helpers/sessions_helper.rb
95
+ - lib/branston/app/helpers/stories_helper.rb
96
+ - lib/branston/app/helpers/user_roles_helper.rb
97
+ - lib/branston/app/helpers/users_helper.rb
98
+ - lib/branston/app/models/iteration.rb
99
+ - lib/branston/app/models/outcome.rb
100
+ - lib/branston/app/models/participation.rb
101
+ - lib/branston/app/models/precondition.rb
102
+ - lib/branston/app/models/release.rb
103
+ - lib/branston/app/models/scenario.rb
104
+ - lib/branston/app/models/story.rb
105
+ - lib/branston/app/models/user.rb
106
+ - lib/branston/app/models/user_role.rb
107
+ - lib/branston/app/views/iterations/_form.html.erb
108
+ - lib/branston/app/views/iterations/edit.html.erb
109
+ - lib/branston/app/views/iterations/index.html.erb
110
+ - lib/branston/app/views/iterations/new.html.erb
111
+ - lib/branston/app/views/iterations/show.html.erb
112
+ - lib/branston/app/views/layouts/_footer.html.erb
113
+ - lib/branston/app/views/layouts/_header.html.erb
114
+ - lib/branston/app/views/layouts/_meta.html.erb
115
+ - lib/branston/app/views/layouts/main.html.erb
116
+ - lib/branston/app/views/layouts/outcomes.html.erb
117
+ - lib/branston/app/views/layouts/preconditions.html.erb
118
+ - lib/branston/app/views/layouts/releases.html.erb
119
+ - lib/branston/app/views/layouts/user_roles.html.erb
120
+ - lib/branston/app/views/outcomes/_outcome.html.erb
121
+ - lib/branston/app/views/outcomes/_outcomes.html.erb
122
+ - lib/branston/app/views/outcomes/create.js.rjs
123
+ - lib/branston/app/views/outcomes/destroy.js.rjs
124
+ - lib/branston/app/views/outcomes/edit.html.erb
125
+ - lib/branston/app/views/outcomes/index.html.erb
126
+ - lib/branston/app/views/outcomes/index.js.rjs
127
+ - lib/branston/app/views/outcomes/new.html.erb
128
+ - lib/branston/app/views/outcomes/new.js.rjs
129
+ - lib/branston/app/views/outcomes/show.html.erb
130
+ - lib/branston/app/views/preconditions/_precondition.html.erb
131
+ - lib/branston/app/views/preconditions/_preconditions.html.erb
132
+ - lib/branston/app/views/preconditions/create.js.rjs
133
+ - lib/branston/app/views/preconditions/destroy.js.rjs
134
+ - lib/branston/app/views/preconditions/edit.html.erb
135
+ - lib/branston/app/views/preconditions/index.html.erb
136
+ - lib/branston/app/views/preconditions/index.js.rjs
137
+ - lib/branston/app/views/preconditions/new.html.erb
138
+ - lib/branston/app/views/preconditions/new.js.rjs
139
+ - lib/branston/app/views/preconditions/show.html.erb
140
+ - lib/branston/app/views/releases/edit.html.erb
141
+ - lib/branston/app/views/releases/index.html.erb
142
+ - lib/branston/app/views/releases/new.html.erb
143
+ - lib/branston/app/views/releases/show.html.erb
144
+ - lib/branston/app/views/scenarios/_scenario.html.erb
145
+ - lib/branston/app/views/scenarios/_scenarios.html.erb
146
+ - lib/branston/app/views/scenarios/create.js.rjs
147
+ - lib/branston/app/views/scenarios/destroy.js.rjs
148
+ - lib/branston/app/views/scenarios/edit.html.erb
149
+ - lib/branston/app/views/scenarios/index.html.erb
150
+ - lib/branston/app/views/scenarios/index.js.rjs
151
+ - lib/branston/app/views/scenarios/new.html.erb
152
+ - lib/branston/app/views/scenarios/new.js.rjs
153
+ - lib/branston/app/views/scenarios/show.html.erb
154
+ - lib/branston/app/views/sessions/new.html.erb
155
+ - lib/branston/app/views/stories/_form.html.erb
156
+ - lib/branston/app/views/stories/_story.html.erb
157
+ - lib/branston/app/views/stories/edit.html.erb
158
+ - lib/branston/app/views/stories/index.html.erb
159
+ - lib/branston/app/views/stories/new.html.erb
160
+ - lib/branston/app/views/stories/show.html.erb
161
+ - lib/branston/app/views/stories/show.js.rjs
162
+ - lib/branston/app/views/stories/update.js.rjs
163
+ - lib/branston/app/views/user_roles/edit.html.erb
164
+ - lib/branston/app/views/user_roles/index.html.erb
165
+ - lib/branston/app/views/user_roles/new.html.erb
166
+ - lib/branston/app/views/user_roles/show.html.erb
167
+ - lib/branston/app/views/users/_user_bar.html.erb
168
+ - lib/branston/app/views/users/new.html.erb
169
+ - lib/branston/config/boot.rb
170
+ - lib/branston/config/database.yml
171
+ - lib/branston/config/environment.rb
172
+ - lib/branston/config/environments/cucumber.rb
173
+ - lib/branston/config/environments/development.rb
174
+ - lib/branston/config/environments/production.rb
175
+ - lib/branston/config/environments/test.rb
176
+ - lib/branston/config/initializers/backtrace_silencers.rb
177
+ - lib/branston/config/initializers/inflections.rb
178
+ - lib/branston/config/initializers/mime_types.rb
179
+ - lib/branston/config/initializers/new_rails_defaults.rb
180
+ - lib/branston/config/initializers/session_store.rb
181
+ - lib/branston/config/initializers/site_keys.rb
182
+ - lib/branston/config/locales/en.yml
183
+ - lib/branston/config/routes.rb
184
+ - lib/branston/coverage/app-controllers-application_controller_rb.html
185
+ - lib/branston/coverage/app-controllers-iterations_controller_rb.html
186
+ - lib/branston/coverage/app-controllers-outcomes_controller_rb.html
187
+ - lib/branston/coverage/app-controllers-preconditions_controller_rb.html
188
+ - lib/branston/coverage/app-controllers-releases_controller_rb.html
189
+ - lib/branston/coverage/app-controllers-scenarios_controller_rb.html
190
+ - lib/branston/coverage/app-controllers-sessions_controller_rb.html
191
+ - lib/branston/coverage/app-controllers-stories_controller_rb.html
192
+ - lib/branston/coverage/app-controllers-user_roles_controller_rb.html
193
+ - lib/branston/coverage/app-controllers-users_controller_rb.html
194
+ - lib/branston/coverage/app-helpers-application_helper_rb.html
195
+ - lib/branston/coverage/app-helpers-iterations_helper_rb.html
196
+ - lib/branston/coverage/app-helpers-outcomes_helper_rb.html
197
+ - lib/branston/coverage/app-helpers-preconditions_helper_rb.html
198
+ - lib/branston/coverage/app-helpers-releases_helper_rb.html
199
+ - lib/branston/coverage/app-helpers-sessions_helper_rb.html
200
+ - lib/branston/coverage/app-helpers-stories_helper_rb.html
201
+ - lib/branston/coverage/app-helpers-user_roles_helper_rb.html
202
+ - lib/branston/coverage/app-models-iteration_rb.html
203
+ - lib/branston/coverage/app-models-outcome_rb.html
204
+ - lib/branston/coverage/app-models-participation_rb.html
205
+ - lib/branston/coverage/app-models-precondition_rb.html
206
+ - lib/branston/coverage/app-models-release_rb.html
207
+ - lib/branston/coverage/app-models-scenario_rb.html
208
+ - lib/branston/coverage/app-models-story_rb.html
209
+ - lib/branston/coverage/app-models-user_rb.html
210
+ - lib/branston/coverage/app-models-user_role_rb.html
211
+ - lib/branston/coverage/index.html
212
+ - lib/branston/coverage/jquery-1.3.2.min.js
213
+ - lib/branston/coverage/jquery.tablesorter.min.js
214
+ - lib/branston/coverage/lib-faker_extras_rb.html
215
+ - lib/branston/coverage/lib-story_generator_rb.html
216
+ - lib/branston/coverage/print.css
217
+ - lib/branston/coverage/rcov.js
218
+ - lib/branston/coverage/screen.css
219
+ - lib/branston/db/development.sqlite3
220
+ - lib/branston/db/development_structure.sql
221
+ - lib/branston/db/migrate/20091127114237_create_users.rb
222
+ - lib/branston/db/migrate/20091127120627_create_iterations.rb
223
+ - lib/branston/db/migrate/20091127122422_create_stories.rb
224
+ - lib/branston/db/migrate/20091127131037_create_user_roles.rb
225
+ - lib/branston/db/migrate/20091127144645_create_participations.rb
226
+ - lib/branston/db/migrate/20091127164217_create_scenarios.rb
227
+ - lib/branston/db/migrate/20091127164446_create_preconditions.rb
228
+ - lib/branston/db/migrate/20091127164705_create_outcomes.rb
229
+ - lib/branston/db/migrate/20091127172849_add_title_to_stories.rb
230
+ - lib/branston/db/migrate/20091127172950_add_story_id_to_user_role.rb
231
+ - lib/branston/db/migrate/20091127173744_add_author_id_to_story.rb
232
+ - lib/branston/db/migrate/20091202105555_create_releases.rb
233
+ - lib/branston/db/migrate/20091204173634_add_slug_to_stories.rb
234
+ - lib/branston/db/pristine.sqlite3
235
+ - lib/branston/db/production.sqlite3
236
+ - lib/branston/db/schema.rb
237
+ - lib/branston/db/seeds.rb
238
+ - lib/branston/db/test.sqlite3
239
+ - lib/branston/doc/README_FOR_APP
240
+ - lib/branston/doc/branston.zargo
241
+ - lib/branston/features/step_definitions/webrat_steps.rb
242
+ - lib/branston/features/support/env.rb
243
+ - lib/branston/features/support/paths.rb
244
+ - lib/branston/features/support/version_check.rb
245
+ - lib/branston/lib/authenticated_system.rb
246
+ - lib/branston/lib/authenticated_test_helper.rb
247
+ - lib/branston/lib/branston.rb
248
+ - lib/branston/lib/client.rb
249
+ - lib/branston/lib/faker_extras.rb
250
+ - lib/branston/lib/story_generator.rb
251
+ - lib/branston/lib/tasks/cucumber.rake
252
+ - lib/branston/lib/tasks/make_pristine_copy.rake
253
+ - lib/branston/log/cucumber.log
254
+ - lib/branston/log/development.log
255
+ - lib/branston/log/test.log
256
+ - lib/branston/public/404.html
257
+ - lib/branston/public/422.html
258
+ - lib/branston/public/500.html
259
+ - lib/branston/public/blank_iframe.html
260
+ - lib/branston/public/favicon.ico
261
+ - lib/branston/public/images/branston_pickle_bg.png
262
+ - lib/branston/public/images/calendar_date_select/calendar.gif
263
+ - lib/branston/public/images/icons/back_icon_30x23.png
264
+ - lib/branston/public/images/icons/delete_icon_20x19.png
265
+ - lib/branston/public/images/icons/delete_icon_30x29.png
266
+ - lib/branston/public/images/icons/plus_icon_15x15.png
267
+ - lib/branston/public/images/icons/plus_icon_20x20.png
268
+ - lib/branston/public/images/icons/plus_icon_30x30.png
269
+ - lib/branston/public/images/img01.gif
270
+ - lib/branston/public/images/img02.gif
271
+ - lib/branston/public/images/img03.gif
272
+ - lib/branston/public/images/img04.gif
273
+ - lib/branston/public/images/img05.gif
274
+ - lib/branston/public/images/img06.gif
275
+ - lib/branston/public/images/img07.gif
276
+ - lib/branston/public/images/img08.gif
277
+ - lib/branston/public/images/logo.png
278
+ - lib/branston/public/images/rails.png
279
+ - lib/branston/public/javascripts/accordion.js
280
+ - lib/branston/public/javascripts/application.js
281
+ - lib/branston/public/javascripts/calendar_date_select/calendar_date_select.js
282
+ - lib/branston/public/javascripts/calendar_date_select/calendar_date_select.prototype.js
283
+ - lib/branston/public/javascripts/calendar_date_select/format_american.js
284
+ - lib/branston/public/javascripts/calendar_date_select/format_db.js
285
+ - lib/branston/public/javascripts/calendar_date_select/format_euro_24hr.js
286
+ - lib/branston/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js
287
+ - lib/branston/public/javascripts/calendar_date_select/format_finnish.js
288
+ - lib/branston/public/javascripts/calendar_date_select/format_german.js
289
+ - lib/branston/public/javascripts/calendar_date_select/format_hyphen_ampm.js
290
+ - lib/branston/public/javascripts/calendar_date_select/format_iso_date.js
291
+ - lib/branston/public/javascripts/calendar_date_select/format_italian.js
292
+ - lib/branston/public/javascripts/calendar_date_select/locale/de.js
293
+ - lib/branston/public/javascripts/calendar_date_select/locale/fi.js
294
+ - lib/branston/public/javascripts/calendar_date_select/locale/fr.js
295
+ - lib/branston/public/javascripts/calendar_date_select/locale/pl.js
296
+ - lib/branston/public/javascripts/calendar_date_select/locale/pt.js
297
+ - lib/branston/public/javascripts/calendar_date_select/locale/ru.js
298
+ - lib/branston/public/javascripts/controls.js
299
+ - lib/branston/public/javascripts/dragdrop.js
300
+ - lib/branston/public/javascripts/effects.js
301
+ - lib/branston/public/javascripts/prototype.js
302
+ - lib/branston/public/robots.txt
303
+ - lib/branston/public/stylesheets/application.css
304
+ - lib/branston/public/stylesheets/calendar_date_select/blue.css
305
+ - lib/branston/public/stylesheets/calendar_date_select/default.css
306
+ - lib/branston/public/stylesheets/calendar_date_select/plain.css
307
+ - lib/branston/public/stylesheets/calendar_date_select/red.css
308
+ - lib/branston/public/stylesheets/calendar_date_select/silver.css
309
+ - lib/branston/public/stylesheets/scaffold.css
310
+ - lib/branston/public/stylesheets/style.css
311
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
312
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
313
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
314
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
315
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
316
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
317
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
318
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
319
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
320
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-icons_222222_256x240.png
321
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-icons_228ef1_256x240.png
322
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-icons_ef8c08_256x240.png
323
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-icons_ffd27a_256x240.png
324
+ - lib/branston/public/stylesheets/ui-lightness/images/ui-icons_ffffff_256x240.png
325
+ - lib/branston/public/stylesheets/ui-lightness/jquery-ui-1.7.2.custom.css
326
+ - lib/branston/script/about
327
+ - lib/branston/script/console
328
+ - lib/branston/script/cucumber
329
+ - lib/branston/script/dbconsole
330
+ - lib/branston/script/destroy
331
+ - lib/branston/script/generate
332
+ - lib/branston/script/performance/benchmarker
333
+ - lib/branston/script/performance/profiler
334
+ - lib/branston/script/plugin
335
+ - lib/branston/script/runner
336
+ - lib/branston/script/server
337
+ - lib/branston/test/blueprints.rb
338
+ - lib/branston/test/fixtures/outcomes.yml
339
+ - lib/branston/test/fixtures/preconditions.yml
340
+ - lib/branston/test/functional/iterations_controller_test.rb
341
+ - lib/branston/test/functional/outcomes_controller_test.rb
342
+ - lib/branston/test/functional/preconditions_controller_test.rb
343
+ - lib/branston/test/functional/releases_controller_test.rb
344
+ - lib/branston/test/functional/scenarios_controller_test.rb
345
+ - lib/branston/test/functional/sessions_controller_test.rb
346
+ - lib/branston/test/functional/stories_controller_test.rb
347
+ - lib/branston/test/functional/user_roles_controller_test.rb
348
+ - lib/branston/test/functional/users_controller_test.rb
349
+ - lib/branston/test/performance/browsing_test.rb
350
+ - lib/branston/test/test_helper.rb
351
+ - lib/branston/test/unit/client_test.rb
352
+ - lib/branston/test/unit/helpers/iterations_helper_test.rb
353
+ - lib/branston/test/unit/helpers/outcomes_helper_test.rb
354
+ - lib/branston/test/unit/helpers/preconditions_helper_test.rb
355
+ - lib/branston/test/unit/helpers/releases_helper_test.rb
356
+ - lib/branston/test/unit/helpers/stories_helper_test.rb
357
+ - lib/branston/test/unit/helpers/user_roles_helper_test.rb
358
+ - lib/branston/test/unit/iteration_test.rb
359
+ - lib/branston/test/unit/outcome_test.rb
360
+ - lib/branston/test/unit/participation_test.rb
361
+ - lib/branston/test/unit/precondition_test.rb
362
+ - lib/branston/test/unit/release_test.rb
363
+ - lib/branston/test/unit/scenario_test.rb
364
+ - lib/branston/test/unit/story_generator_test.rb
365
+ - lib/branston/test/unit/story_test.rb
366
+ - lib/branston/test/unit/user_role_test.rb
367
+ - lib/branston/test/unit/user_test.rb
368
+ - lib/branston/test/xml/example.xml
369
+ - lib/branston/test/xml/no_scenarios.xml
370
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/History.txt
371
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/MIT-LICENSE
372
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/Manifest.txt
373
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/Rakefile
374
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/Readme.txt
375
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/init.rb
376
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/functional/cds_test.html
377
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/prototype.js
378
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/test.css
379
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/unit/cds_helper_methods.html
380
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/unittest.js
381
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select.rb
382
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select/calendar_date_select.rb
383
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select/form_helpers.rb
384
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select/includes_helper.rb
385
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/blank_iframe.html
386
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/images/calendar_date_select/calendar.gif
387
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/calendar_date_select.js
388
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_american.js
389
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_db.js
390
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_euro_24hr.js
391
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js
392
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_finnish.js
393
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_hyphen_ampm.js
394
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_iso_date.js
395
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_italian.js
396
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/de.js
397
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/fi.js
398
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/fr.js
399
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/pl.js
400
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/pt.js
401
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/ru.js
402
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/blue.css
403
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/default.css
404
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/plain.css
405
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/red.css
406
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/silver.css
407
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/spec/calendar_date_select/calendar_date_select_spec.rb
408
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/spec/calendar_date_select/form_helpers_spec.rb
409
+ - lib/branston/vendor/plugins/calendar_date_select-1.15/spec/spec_helper.rb
410
+ - lib/branston/vendor/plugins/in_place_editing/README
411
+ - lib/branston/vendor/plugins/in_place_editing/Rakefile
412
+ - lib/branston/vendor/plugins/in_place_editing/init.rb
413
+ - lib/branston/vendor/plugins/in_place_editing/lib/in_place_editing.rb
414
+ - lib/branston/vendor/plugins/in_place_editing/lib/in_place_macros_helper.rb
415
+ - lib/branston/vendor/plugins/in_place_editing/test/in_place_editing_test.rb
416
+ - lib/branston/vendor/plugins/in_place_editing/test/test_helper.rb
417
+ - lib/branston/vendor/plugins/restful_authentication/CHANGELOG
418
+ - lib/branston/vendor/plugins/restful_authentication/LICENSE
419
+ - lib/branston/vendor/plugins/restful_authentication/README.textile
420
+ - lib/branston/vendor/plugins/restful_authentication/Rakefile
421
+ - lib/branston/vendor/plugins/restful_authentication/TODO
422
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/USAGE
423
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/authenticated_generator.rb
424
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/lib/insert_routes.rb
425
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/_model_partial.html.erb
426
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/activation.erb
427
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/authenticated_system.rb
428
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/authenticated_test_helper.rb
429
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/controller.rb
430
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/accounts.feature
431
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/sessions.feature
432
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_env.rb
433
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_navigation_steps.rb
434
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_resource_steps.rb
435
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_response_steps.rb
436
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/rest_auth_features_helper.rb
437
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/user_steps.rb
438
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/helper.rb
439
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/login.html.erb
440
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/mailer.rb
441
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/migration.rb
442
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model.rb
443
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model_controller.rb
444
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model_helper.rb
445
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model_helper_spec.rb
446
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/observer.rb
447
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/signup.html.erb
448
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/signup_notification.erb
449
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/site_keys.rb
450
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/access_control_spec.rb
451
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/authenticated_system_spec.rb
452
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/sessions_controller_spec.rb
453
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/users_controller_spec.rb
454
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/fixtures/users.yml
455
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/helpers/users_helper_spec.rb
456
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/models/user_spec.rb
457
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/functional_test.rb
458
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/mailer_test.rb
459
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/model_functional_test.rb
460
+ - lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/unit_test.rb
461
+ - lib/branston/vendor/plugins/restful_authentication/init.rb
462
+ - lib/branston/vendor/plugins/restful_authentication/lib/authentication.rb
463
+ - lib/branston/vendor/plugins/restful_authentication/lib/authentication/by_cookie_token.rb
464
+ - lib/branston/vendor/plugins/restful_authentication/lib/authentication/by_password.rb
465
+ - lib/branston/vendor/plugins/restful_authentication/lib/authorization.rb
466
+ - lib/branston/vendor/plugins/restful_authentication/lib/authorization/aasm_roles.rb
467
+ - lib/branston/vendor/plugins/restful_authentication/lib/authorization/stateful_roles.rb
468
+ - lib/branston/vendor/plugins/restful_authentication/lib/trustification.rb
469
+ - lib/branston/vendor/plugins/restful_authentication/lib/trustification/email_validation.rb
470
+ - lib/branston/vendor/plugins/restful_authentication/notes/AccessControl.txt
471
+ - lib/branston/vendor/plugins/restful_authentication/notes/Authentication.txt
472
+ - lib/branston/vendor/plugins/restful_authentication/notes/Authorization.txt
473
+ - lib/branston/vendor/plugins/restful_authentication/notes/RailsPlugins.txt
474
+ - lib/branston/vendor/plugins/restful_authentication/notes/SecurityFramework.graffle
475
+ - lib/branston/vendor/plugins/restful_authentication/notes/SecurityFramework.png
476
+ - lib/branston/vendor/plugins/restful_authentication/notes/SecurityPatterns.txt
477
+ - lib/branston/vendor/plugins/restful_authentication/notes/Tradeoffs.txt
478
+ - lib/branston/vendor/plugins/restful_authentication/notes/Trustification.txt
479
+ - lib/branston/vendor/plugins/restful_authentication/rails/init.rb
480
+ - lib/branston/vendor/plugins/restful_authentication/restful-authentication.gemspec
481
+ - lib/branston/vendor/plugins/restful_authentication/tasks/auth.rake
482
+ - LICENSE
483
+ - README.rdoc
484
+ has_rdoc: true
485
+ homepage: http://github.com/futurechimp/branston
486
+ licenses: []
487
+
488
+ post_install_message:
489
+ rdoc_options:
490
+ - --charset=UTF-8
491
+ require_paths:
492
+ - lib
493
+ required_ruby_version: !ruby/object:Gem::Requirement
494
+ requirements:
495
+ - - ">="
496
+ - !ruby/object:Gem::Version
497
+ version: "0"
498
+ version:
499
+ required_rubygems_version: !ruby/object:Gem::Requirement
500
+ requirements:
501
+ - - ">="
502
+ - !ruby/object:Gem::Version
503
+ version: "0"
504
+ version:
505
+ requirements: []
506
+
507
+ rubyforge_project:
508
+ rubygems_version: 1.3.5
509
+ signing_key:
510
+ specification_version: 3
511
+ summary: An experiment in turning user stories into cucumber files
512
+ test_files: []
513
+