zena 0.15.2 → 0.16.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 (284) hide show
  1. data/.gitignore +20 -0
  2. data/CREDITS +27 -0
  3. data/Capfile +3 -0
  4. data/DEVELOPERS +46 -0
  5. data/History.txt +15 -0
  6. data/MIT-LICENSE +19 -0
  7. data/Rakefile +44 -0
  8. data/TODO +24 -0
  9. data/TODO_ZENA_1_0 +23 -0
  10. data/app/controllers/application_controller.rb +3 -0
  11. data/app/controllers/documents_controller.rb +22 -56
  12. data/app/controllers/nodes_controller.rb +42 -27
  13. data/app/controllers/pings_controller.rb +19 -0
  14. data/app/controllers/relations_controller.rb +5 -1
  15. data/app/controllers/sites_controller.rb +1 -46
  16. data/app/controllers/user_sessions_controller.rb +47 -0
  17. data/app/controllers/users_controller.rb +1 -0
  18. data/app/controllers/versions_controller.rb +25 -7
  19. data/app/controllers/virtual_classes_controller.rb +1 -1
  20. data/app/helpers/application_helper.rb +1 -1
  21. data/app/models/comment.rb +2 -1
  22. data/app/models/contact_content.rb +2 -2
  23. data/app/models/data_entry.rb +5 -6
  24. data/app/models/document.rb +14 -10
  25. data/app/models/document_content.rb +4 -6
  26. data/app/models/iformat.rb +2 -2
  27. data/app/models/image_content.rb +6 -9
  28. data/app/models/node.rb +106 -164
  29. data/app/models/page.rb +0 -20
  30. data/app/models/site.rb +42 -12
  31. data/app/models/template.rb +3 -8
  32. data/app/models/template_content.rb +2 -0
  33. data/app/models/text_document.rb +13 -8
  34. data/app/models/user.rb +47 -100
  35. data/app/models/user_session.rb +4 -0
  36. data/app/models/version.rb +1 -1
  37. data/app/views/comments/create.rjs +3 -3
  38. data/app/views/comments/edit.rjs +1 -1
  39. data/app/views/comments/update.rjs +1 -1
  40. data/app/views/nodes/_import_results.rhtml +1 -1
  41. data/app/views/nodes/create.rjs +3 -3
  42. data/app/views/templates/document_create_tabs/_file.rhtml +1 -2
  43. data/app/views/templates/document_create_tabs/_import.rhtml +7 -2
  44. data/app/views/templates/edit_tabs/_document.rhtml +1 -3
  45. data/app/views/templates/edit_tabs/_image.rhtml +1 -3
  46. data/app/views/versions/_tr.rhtml +1 -1
  47. data/app/views/versions/edit.rhtml +2 -26
  48. data/bin/zena +6 -1
  49. data/bricks/delayed_job/README +18 -0
  50. data/bricks/delayed_job/migrate/20091104191643_create_delayed_jobs_table.rb +19 -0
  51. data/bricks/delayed_job/misc/init.rb +8 -0
  52. data/bricks/delayed_job/misc/tasks.rb +2 -0
  53. data/bricks/math/patch/application_helper.rb +1 -1
  54. data/bricks/sphinx/MIT-LICENSE +19 -0
  55. data/bricks/sphinx/README +19 -0
  56. data/bricks/sphinx/lib/use_sphinx.rb +78 -0
  57. data/bricks/sphinx/migrate/20091102171258_add_delta_for_sphinx.rb +9 -0
  58. data/bricks/sphinx/misc/deploy.rb +20 -0
  59. data/bricks/sphinx/misc/sphinx.yml +12 -0
  60. data/bricks/sphinx/misc/tasks.rb +21 -0
  61. data/bricks/sphinx/patch/node.rb +8 -0
  62. data/bricks/tags/lib/has_tags.rb +5 -3
  63. data/bricks/tags/test/zafu/tags.yml +13 -1
  64. data/config/bricks.yml +35 -0
  65. data/config/deploy.rb +8 -1
  66. data/config/environment.rb +1 -1
  67. data/config/environments/production.rb +1 -1
  68. data/config/gems.yml +28 -5
  69. data/config/sphinx.yml +12 -0
  70. data/db/init/base/skins/default/Node-+popupLayout.zafu +1 -16
  71. data/db/migrate/20091026161708_add_persistence_token.rb +13 -0
  72. data/db/migrate/20091101184952_add_session_table.rb +16 -0
  73. data/db/migrate/20091123175137_add_single_access_token.rb +9 -0
  74. data/db/migrate/20091124161608_rebuild_fullpath.rb +11 -0
  75. data/db/schema.rb +21 -8
  76. data/doc/README_FOR_APP +24 -0
  77. data/doc/fixtures.graffle +19568 -0
  78. data/doc/fixtures.pdf +0 -0
  79. data/doc/template/LICENSE +184 -0
  80. data/doc/template/README +37 -0
  81. data/doc/template/allison.css +283 -0
  82. data/doc/template/allison.js +307 -0
  83. data/doc/template/allison.rb +260 -0
  84. data/doc/template/cache/BODY +588 -0
  85. data/doc/template/cache/CLASS_INDEX +4 -0
  86. data/doc/template/cache/CLASS_PAGE +1 -0
  87. data/doc/template/cache/FILE_INDEX +4 -0
  88. data/doc/template/cache/FILE_PAGE +1 -0
  89. data/doc/template/cache/FONTS +1 -0
  90. data/doc/template/cache/FR_INDEX_BODY +1 -0
  91. data/doc/template/cache/IMGPATH +1 -0
  92. data/doc/template/cache/INDEX +1 -0
  93. data/doc/template/cache/JAVASCRIPT +307 -0
  94. data/doc/template/cache/METHOD_INDEX +4 -0
  95. data/doc/template/cache/METHOD_LIST +1 -0
  96. data/doc/template/cache/SRC_PAGE +1 -0
  97. data/doc/template/cache/STYLE +283 -0
  98. data/doc/template/cache/URL +1 -0
  99. data/doc/zafu_changes.yml +29 -0
  100. data/lib/base_additions.rb +1 -1
  101. data/lib/bricks.rb +9 -0
  102. data/lib/bricks/loader.rb +86 -0
  103. data/lib/bricks/requirements_validation.rb +71 -0
  104. data/lib/tasks/zena.rake +42 -4
  105. data/lib/zafu/action.rb +285 -0
  106. data/lib/zafu/ajax.rb +93 -0
  107. data/lib/zafu/attributes.rb +117 -0
  108. data/lib/zafu/calendar.rb +159 -0
  109. data/lib/zafu/context.rb +330 -0
  110. data/lib/zafu/core/html.rb +102 -0
  111. data/lib/zafu/core/move_to_parser.rb +167 -0
  112. data/lib/zafu/dates.rb +58 -0
  113. data/lib/zafu/display.rb +502 -0
  114. data/lib/zafu/eval.rb +66 -0
  115. data/lib/zafu/experimental.rb +66 -0
  116. data/lib/zafu/i18n.rb +64 -0
  117. data/lib/zafu/meta.rb +25 -0
  118. data/lib/zafu/refactor.rb +73 -0
  119. data/lib/zafu/support/context.rb +265 -0
  120. data/lib/zafu/support/dom.rb +145 -0
  121. data/lib/zafu/support/erb.rb +62 -0
  122. data/lib/zafu/support/flow.rb +401 -0
  123. data/lib/zafu/support/forms.rb +461 -0
  124. data/lib/zafu/support/links.rb +306 -0
  125. data/lib/zafu_parser.rb +26 -2
  126. data/lib/zena.rb +34 -15
  127. data/lib/zena/acts/multiversion.rb +2 -2
  128. data/lib/zena/acts/secure.rb +41 -30
  129. data/lib/zena/app.rb +7 -10
  130. data/lib/zena/controller/test_case.rb +12 -7
  131. data/lib/zena/crypto_provider/initial.rb +15 -0
  132. data/lib/zena/db.rb +6 -1
  133. data/lib/zena/deploy.rb +34 -6
  134. data/lib/zena/deploy/logrotate_app.rhtml +9 -0
  135. data/lib/zena/deploy/logrotate_host.rhtml +34 -0
  136. data/lib/zena/deploy/template.rb +1 -9
  137. data/lib/zena/foxy_parser.rb +1 -1
  138. data/lib/zena/info.rb +3 -1
  139. data/lib/zena/migrator.rb +1 -1
  140. data/lib/zena/parser.rb +12 -4
  141. data/lib/zena/parser/zazen_rules.rb +6 -6
  142. data/lib/zena/parser/zena_rules.rb +1 -7
  143. data/lib/zena/routes.rb +5 -5
  144. data/lib/zena/test_controller.rb +7 -2
  145. data/lib/zena/unit/test_case.rb +6 -8
  146. data/lib/zena/use/ajax.rb +10 -10
  147. data/lib/zena/use/authlogic.rb +93 -0
  148. data/lib/zena/use/dyn_attributes.rb +5 -0
  149. data/lib/zena/use/html_tags.rb +16 -34
  150. data/lib/zena/use/i18n.rb +4 -1
  151. data/lib/zena/use/node_query_finders.rb +8 -4
  152. data/lib/zena/use/refactor.rb +8 -20
  153. data/lib/zena/use/relations.rb +1 -0
  154. data/lib/zena/use/rendering.rb +4 -2
  155. data/lib/zena/use/search.rb +52 -0
  156. data/lib/zena/use/test_helper.rb +27 -28
  157. data/lib/zena/use/upload.rb +188 -0
  158. data/lib/zena/use/urls.rb +16 -14
  159. data/lib/zena/use/zafu.rb +16 -63
  160. data/lib/zena/use/zazen.rb +8 -8
  161. data/lib/zena/view/test_case.rb +8 -4
  162. data/locale/en/LC_MESSAGES/zena.mo +0 -0
  163. data/locale/en/zena.po +3 -3
  164. data/public/.htaccess +40 -0
  165. data/public/javascripts/upload-progress.js +17 -8
  166. data/public/javascripts/zena.js +8 -2
  167. data/public/stylesheets/popup.css +1 -0
  168. data/script/about +3 -0
  169. data/script/apache_logging +25 -0
  170. data/script/breakpointer +3 -0
  171. data/script/console +3 -0
  172. data/script/dbconsole +3 -0
  173. data/script/destroy +3 -0
  174. data/script/generate +3 -0
  175. data/script/performance/benchmarker +3 -0
  176. data/script/performance/profiler +3 -0
  177. data/script/plugin +3 -0
  178. data/script/process/inspector +3 -0
  179. data/script/process/reaper +3 -0
  180. data/script/process/spawner +3 -0
  181. data/script/runner +3 -0
  182. data/script/server +3 -0
  183. data/script/set_revision +29 -0
  184. data/spec/controllers/versions_controller_spec.rb +11 -0
  185. data/test/fixtures/files/Node-test.zafu +1 -1
  186. data/test/functional/nodes_controller_test.rb +25 -0
  187. data/test/functional/pings_controller_test.rb +8 -0
  188. data/test/functional/user_sessions_controller_test.rb +59 -0
  189. data/test/functional/users_controller_test.rb +81 -19
  190. data/test/helpers/node_query/filters.yml +5 -0
  191. data/test/helpers/node_query_test.rb +3 -3
  192. data/test/integration/multiple_hosts_test.rb +1 -1
  193. data/test/integration/navigation_test.rb +1 -1
  194. data/test/sites/complex/users.yml +1 -1
  195. data/test/sites/ocean/users.yml +3 -3
  196. data/test/sites/zena/users.yml +5 -4
  197. data/test/test_zena.rb +38 -38
  198. data/test/unit/cached_page_test.rb +2 -2
  199. data/test/unit/comment_test.rb +0 -1
  200. data/test/unit/document_test.rb +23 -11
  201. data/test/unit/helpers/ping_helper_test.rb +4 -0
  202. data/test/unit/multiversion_test.rb +24 -16
  203. data/test/unit/node_test.rb +32 -93
  204. data/test/unit/note_test.rb +9 -0
  205. data/test/unit/page_test.rb +2 -2
  206. data/test/unit/secure_test.rb +2 -12
  207. data/test/unit/site_test.rb +43 -24
  208. data/test/unit/template_test.rb +45 -3
  209. data/test/unit/text_document_test.rb +4 -3
  210. data/test/unit/user_test.rb +13 -33
  211. data/test/unit/zena/db_test.rb +8 -0
  212. data/test/unit/zena/parser/zazen.yml +4 -4
  213. data/test/unit/zena/use/dates_view_methods_test.rb +2 -1
  214. data/test/unit/zena/use/html_tags_test.rb +12 -4
  215. data/test/unit/zena/use/refactor_test.rb +4 -3
  216. data/test/unit/zena/use/rendering_test.rb +1 -0
  217. data/test/unit/zena/use/upload_test.rb +76 -0
  218. data/test/unit/zena/use/urls_test.rb +4 -0
  219. data/test/unit/zena/use/zafu_test.rb +8 -0
  220. data/test/unit/zena/workflow/status_version_test.rb +6 -0
  221. data/test/unit/zena/zena_tags/ajax.yml +4 -4
  222. data/test/unit/zena/zena_tags/basic.yml +21 -10
  223. data/test/unit/zena/zena_tags/relations.yml +0 -6
  224. data/test/unit/zena/zena_tags/rubyless.yml +35 -0
  225. data/test/unit/zena/zena_tags/zazen.yml +4 -4
  226. data/test/unit/zena/zena_tags_test.rb +36 -4
  227. data/vendor/TextMate/Zena.tmbundle/Commands/Run all yaml tests.tmCommand +1 -1
  228. data/vendor/TextMate/Zena.tmbundle/Commands/Run focused yaml test.tmCommand +2 -3
  229. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/catch_exception.rb +39 -0
  230. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/run_script.rb +102 -58
  231. data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/stdin_dialog.rb +14 -0
  232. data/vendor/TextMate/Zena.tmbundle/info.plist +2 -0
  233. data/zena.gemspec +2085 -0
  234. metadata +265 -90
  235. data/app/controllers/sessions_controller.rb +0 -41
  236. data/app/views/sites/zena_up.html.erb +0 -11
  237. data/config/database.yml +0 -40
  238. data/db/production.sqlite3 +0 -0
  239. data/lib/bricks/patcher.rb +0 -68
  240. data/lib/zena/parser/zena_tags.rb +0 -3562
  241. data/lib/zena/use/authentification.rb +0 -120
  242. data/public/images/ext/contact_pv.png +0 -0
  243. data/public/images/ext/other_pv.png +0 -0
  244. data/public/images/ext/page_pv.png +0 -0
  245. data/public/images/ext/page_tiny.png +0 -0
  246. data/public/images/ext/pdf_pv.png +0 -0
  247. data/public/images/ext/post_pv.png +0 -0
  248. data/public/images/ext/post_tiny.png +0 -0
  249. data/public/images/ext/project_pv.png +0 -0
  250. data/public/images/ext/project_tiny.png +0 -0
  251. data/public/images/ext/tag_pv.png +0 -0
  252. data/public/images/ext/zip_pv.png +0 -0
  253. data/tasks/ann.rake +0 -80
  254. data/tasks/bones.rake +0 -20
  255. data/tasks/gem.rake +0 -201
  256. data/tasks/git.rake +0 -40
  257. data/tasks/notes.rake +0 -27
  258. data/tasks/post_load.rake +0 -34
  259. data/tasks/rdoc.rake +0 -51
  260. data/tasks/rubyforge.rake +0 -55
  261. data/tasks/setup.rb +0 -292
  262. data/tasks/spec.rake +0 -54
  263. data/tasks/svn.rake +0 -47
  264. data/tasks/test.rake +0 -40
  265. data/tasks/zentest.rake +0 -36
  266. data/test/fixtures/comments.yml +0 -126
  267. data/test/fixtures/contact_contents.yml +0 -132
  268. data/test/fixtures/data_entries.yml +0 -65
  269. data/test/fixtures/discussions.yml +0 -48
  270. data/test/fixtures/document_contents.yml +0 -108
  271. data/test/fixtures/dyn_attributes.yml +0 -66
  272. data/test/fixtures/groups.yml +0 -86
  273. data/test/fixtures/groups_users.yml +0 -81
  274. data/test/fixtures/iformats.yml +0 -29
  275. data/test/fixtures/links.yml +0 -313
  276. data/test/fixtures/nodes.yml +0 -2592
  277. data/test/fixtures/relations.yml +0 -126
  278. data/test/fixtures/sites.yml +0 -58
  279. data/test/fixtures/template_contents.yml +0 -172
  280. data/test/fixtures/users.yml +0 -167
  281. data/test/fixtures/versions.yml +0 -1911
  282. data/test/fixtures/virtual_classes.yml +0 -87
  283. data/test/fixtures/zips.yml +0 -15
  284. data/test/functional/sessions_controller_test.rb +0 -73
@@ -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,29 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ root = File.join(File.dirname(__FILE__), '..')
4
+ svn_info = `svn info #{root.inspect} 2>&1 || svk info #{root.inspect} 2>&1`
5
+ if svn_info =~ %r{Repository Root: [^\n]*zenadmin.org.*Revision: (\d+)}m
6
+ rev = $1
7
+ else
8
+ svk_info = `svk info #{root.inspect} 2>&1`
9
+ if svk_info =~ %r{zenadmin.org/zena, Rev. (\d+)}
10
+ rev = $1
11
+ elsif svk_info =~ %r{(Merged|Copied) From: (.*?), Rev}
12
+ svk_info = `svk info /#{$2} 2>&1`
13
+ if svk_info =~ %r{zenadmin.org/zena(/trunk|), Rev. (\d+)}
14
+ rev = $2
15
+ else
16
+ puts "revision number could not be found using svn or svk"
17
+ end
18
+ end
19
+ end
20
+
21
+ if rev
22
+ version_file = File.read(File.join(root, 'config', 'version.rb'))
23
+ File.open(File.join(root, 'config', 'version.rb'), 'wb') do |f|
24
+ f.print version_file.sub(/(REV *)=.*$/, "\\1= #{rev}")
25
+ end
26
+ puts "revision number updated to #{rev}"
27
+ else
28
+ puts "could not find revision number through svn info"
29
+ end
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe VersionsController do
4
+
5
+ it { should route(:get, "/nodes/11/versions/0/edit", :controller => :versions, :action => :edit, :node_id => 11, :id => 0) }
6
+ it { should route(:get, "/nodes/11/versions/2/preview", :controller => :versions, :action => :preview, :node_id => 11, :id => 2) }
7
+
8
+ it "should publish the previous version" do
9
+ # TODO: login, etc
10
+ end
11
+ end
@@ -190,7 +190,7 @@ This filter updates the "distant filter block test"
190
190
  <ul do='tags in site'>
191
191
  <li style='border:1px solid #400; min_width:100px; min_height:100px;' do='each' do='drop' set='set_tag'>
192
192
  <b do='[v_title]'/>
193
- <ul do='tagged'><li do='each' do='unlink' do='img' mode='tiny'/></ul>
193
+ <ul do='context' select='tagged'><li do='each' do='unlink' do='img' mode='tiny'/></ul>
194
194
  </li>
195
195
  </ul>
196
196
 
@@ -171,6 +171,9 @@ END:VCALENDAR
171
171
 
172
172
  assert zafu = nodes['Node']
173
173
  assert_kind_of Template, zafu
174
+ assert_equal 'html', zafu.version.content.format
175
+ assert_equal 'Node', zafu.version.content.klass
176
+ assert_equal 'N', zafu.version.content.tkpath
174
177
  assert style = nodes['style']
175
178
  assert_kind_of TextDocument, style
176
179
  assert navBar = nodes['navBar']
@@ -313,6 +316,28 @@ END:VCALENDAR
313
316
  get 'show', 'prefix'=>'oo', 'path'=>["page#{nodes_zip(:projects)}_test.html"]
314
317
  assert_response :success
315
318
  end
319
+
320
+ def test_create_from_url
321
+ login(:tiger)
322
+ if Zena::Use::Upload.has_network?
323
+ preserving_files('test.host/data') do
324
+ assert_difference('Node.count', 1) do
325
+ post 'create', 'attachment_url' => 'http://zenadmin.org/fr/blog/image5.jpg', 'node' => {'parent_id' => nodes_zip(:zena)}
326
+ end
327
+ document = assigns(:node)
328
+ assert_equal 73633, document.version.content.size
329
+ assert_equal 298, document.version.content.width
330
+ assert_equal 243, document.version.content.height
331
+ end
332
+ end
333
+ end
334
+
335
+ def test_search
336
+ login(:anon)
337
+ get 'search', 'q' => 'bird'
338
+ assert nodes = assigns(:nodes)
339
+ assert_equal [nodes_id(:bird_jpg)], nodes.map {|r| r.id}
340
+ end
316
341
  end
317
342
 
318
343
  =begin
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class PingsControllerTest < ActionController::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,59 @@
1
+ require 'test_helper'
2
+
3
+ class UserSessionsControllerTest < Zena::Controller::TestCase
4
+
5
+ context "Controller actions" do
6
+
7
+ should "get login page" do
8
+ get :new
9
+ assert_not_nil assigns(:node)
10
+ end
11
+
12
+ should "create a session" do
13
+ post 'create', :login=>'ant', :password=>'ant'
14
+ assert assigns(:user_session).persisting?
15
+ assert_response 302
16
+ end
17
+
18
+ should "redirect to login page if login failed" do
19
+ post 'create', :login=>'ant', :password=>'boom'
20
+ assert !assigns(:user_session).persisting?
21
+ assert_redirected_to login_url
22
+ end
23
+
24
+ end
25
+
26
+ context "with login Test Case" do
27
+
28
+ setup do
29
+ login('su')
30
+ end
31
+
32
+ should "visitor be accessible" do
33
+ assert_equal 'su', visitor.login
34
+ end
35
+
36
+ should "site be accessible" do
37
+ assert_equal 'zena', $_test_site
38
+ end
39
+
40
+ should "check if visitor is admin" do
41
+ assert visitor.is_admin?
42
+ end
43
+
44
+ end
45
+
46
+ context 'a visitor on the wrong site' do
47
+ setup do
48
+ @request.host = 'ocean.host'
49
+ end
50
+
51
+ should 'not be allowed to login' do
52
+ post 'create', :login => 'ant', :password => 'ant'
53
+ assert !assigns(:user_session).persisting?
54
+ assert_redirected_to login_url
55
+ end
56
+ end
57
+
58
+ end
59
+
@@ -2,27 +2,89 @@ require 'test_helper'
2
2
 
3
3
  class UsersControllerTest < Zena::Controller::TestCase
4
4
 
5
- def test_update_preferences
6
- login(:lion)
7
- put 'update', 'id' => users_id(:lion), 'user'=>{'name'=>'Leo Verneyi', 'lang'=>'en', 'time_zone'=>'Africa/Algiers', 'first_name'=>'Panthera', 'login'=>'lion', 'email'=>'lion@zenadmin.info'}
8
- assert_response :success
9
- user = assigns['user']
10
- assert_equal 'Africa/Algiers', user[:time_zone]
5
+ context "on GET index" do
6
+ context " if visitor is admin" do
7
+ setup do
8
+ login(:su)
9
+ get :index
10
+ end
11
+
12
+ should_assign_to :users
13
+ should_render_with_layout :_main
14
+ should_respond_with :success
15
+ end
16
+
17
+ context " if visitor is not admin" do
18
+ setup do
19
+ login(:ant)
20
+ get :index
21
+ end
22
+
23
+ should_not_assign_to :users
24
+ should_render_without_layout
25
+ should_respond_with 404
26
+ end
27
+
28
+ context " if layout is invalid" do
29
+ setup do
30
+ login(:lion)
31
+ Version.connection.execute "UPDATE #{Version.table_name} SET text = 'empty' WHERE id = #{versions_id(:Node_admin_layout_zafu_en)}"
32
+ without_files('test.host/zafu') do
33
+ get 'index'
34
+ end
35
+ end
36
+
37
+ should_respond_with :success
38
+ should_render_with_layout :_main
39
+ end
40
+
11
41
  end
12
42
 
13
- def test_render_invalid_adminLayout
14
- login(:lion)
15
- Version.connection.execute "UPDATE #{Version.table_name} SET text = 'empty' WHERE id = #{versions_id(:Node_admin_layout_zafu_en)}"
16
- without_files('test.host/zafu') do
17
- get 'index'
18
- assert_response :success
19
- assert_no_match %r{empty}, @response.body
20
- # The assertion below passes alone but fails when we pass all tests.
21
- # Tracked the problem all the way to default rendering and all seems ok:
22
- # Maybe the problem is related to ruby not evaluating the erb. No idea.
23
- # We'll make it a pending for the safety of our minds.
24
- # assert_match %r{Using default '\+adminLayout' template}, @response.body
25
- print 'P'
43
+ context "on GET show" do
44
+ setup do
45
+ login(:su)
46
+ get(:show, {'id'=>visitor.id})
26
47
  end
48
+
49
+ should_respond_with :success
50
+ should_render_without_layout
27
51
  end
52
+
53
+ context 'on GET preferences' do
54
+ setup do
55
+ login(:su)
56
+ get(:preferences, {'id'=>visitor.id})
57
+ end
58
+
59
+ should_respond_with :success
60
+ should_render_with_layout :_main
61
+ end
62
+
63
+ context 'on GET swap_dev' do
64
+ setup do
65
+ login(:su)
66
+ get(:swap_dev, {'id'=> visitor.id})
67
+ end
68
+
69
+ should_set_session(:dev) {true}
70
+ should_redirect_to("the user profile") { user_url(visitor.id) }
71
+ end
72
+
73
+
74
+
75
+ context "on PUT" do
76
+ context "in order to update parameters" do
77
+ setup do
78
+ login(:lion)
79
+ put 'update', 'id' => users_id(:lion), 'user'=>{'name'=>'Leo Verneyi', 'lang'=>'en', 'time_zone'=>'Africa/Algiers', 'first_name'=>'Panthera', 'login'=>'lion', 'email'=>'lion@zenadmin.info'}
80
+ end
81
+ should_assign_to :user
82
+ should_respond_with :success
83
+ should "be able to set timezone" do
84
+ assert_equal 'Africa/Algiers', assigns(:user)[:time_zone]
85
+ end
86
+ end
87
+ end
88
+
89
+
28
90
  end
@@ -103,3 +103,8 @@ filter_through_links:
103
103
  src: "nodes where (set_tag_id eq 33 and hot_id eq 22) in site"
104
104
  sql: "/jnode\.zip = 33 AND jn1\.zip = 22/"
105
105
  res: "cleanWater"
106
+
107
+ filter_with_fullpath:
108
+ src: "nodes where fullpath like '[node:fullpath]/%' in site order by fullpath"
109
+ sql: "[\"SELECT nodes.* FROM nodes WHERE nodes.fullpath LIKE ? AND (#{@node.secure_scope('nodes')}) ORDER BY nodes.fullpath ASC\", @node.safe_read(\"fullpath\").to_s+ \"/%\"]"
110
+ res: 'crocodiles, lake, lakeAddress, opening, status, track, water'
@@ -57,7 +57,7 @@ class NodeQueryTest < Zena::Unit::TestCase
57
57
  node = secure!(Node) { Node.new }
58
58
  assert_equal nil, node.find(:all,'set_tags')
59
59
  node = secure!(Node) { Node.get_class('Tag').new_instance }
60
- assert_equal nil, node.find(:all,'tagged')
60
+ assert_equal nil, node.find(:all,'tagged', :skip_rubyless => true)
61
61
  end
62
62
 
63
63
  def test_do_find_in_new_node
@@ -85,7 +85,7 @@ class NodeQueryTest < Zena::Unit::TestCase
85
85
  def test_l_status
86
86
  login(:lion)
87
87
  node = secure!(Node) { nodes(:art) }
88
- tagged = node.find(:all, 'tagged')
88
+ tagged = node.find(:all, 'tagged', :skip_rubyless => true)
89
89
  # cleanWater, opening
90
90
  assert_equal [10, 5], tagged.map{|t| t.l_status}
91
91
  end
@@ -101,7 +101,7 @@ class NodeQueryTest < Zena::Unit::TestCase
101
101
  def test_l_comment_empty
102
102
  login(:lion)
103
103
  node = secure!(Node) { nodes(:art) }
104
- tagged = node.find(:all, 'tagged')
104
+ tagged = node.find(:all, 'tagged', :skip_rubyless => true)
105
105
  # cleanWater, opening
106
106
  assert_equal [nil, "cold"], tagged.map{|t| t.l_comment}
107
107
  end
@@ -39,7 +39,7 @@ class MultipleHostsTest < ActionController::IntegrationTest
39
39
  node = nodes(:zena_status)
40
40
  assert_equal 1, CachedPage.count(:conditions => "path like '%page#{status_zip}%'")
41
41
  assert_not_equal 0, Zena::Db.fetch_row("SELECT COUNT(*) as count_all FROM cached_pages_nodes WHERE node_id = #{node[:id]}").to_i
42
- node.visitor = Thread.current.visitor
42
+ node.visitor = Thread.current[:visitor]
43
43
  node.sweep_cache
44
44
  assert_equal 0, CachedPage.count(:conditions => "path like '%page#{status_zip}%'")
45
45
  assert_equal 0, Zena::Db.fetch_row("SELECT COUNT(*) as count_all FROM cached_pages_nodes WHERE node_id = #{node[:id]}").to_i
@@ -1,7 +1,7 @@
1
1
  require "#{File.dirname(__FILE__)}/../test_helper"
2
2
 
3
3
  class NavigationTest < ActionController::IntegrationTest
4
- include Zena::Test::Base
4
+ #include Zena::Test::Base
5
5
 
6
6
  def test_authorize
7
7
  get 'http://test.host/'
@@ -13,7 +13,7 @@ complex_anon:
13
13
  complex_admin:
14
14
  login: admin
15
15
  first_name: admin
16
- password: <%= User.hash_password('admin') %>
16
+ crypted_password: <%= Zena::CryptoProvider::Initial.encrypt('admin') %>
17
17
  status: admin
18
18
  contact: admin
19
19
 
@@ -13,14 +13,14 @@ ocean_su:
13
13
  first_name: Hyper
14
14
  name: Super
15
15
  login: ocean_su
16
- password: <%= User.hash_password('ocean_su') %>
16
+ crypted_password: <%= Zena::CryptoProvider::Initial.encrypt('ocean_su') %>
17
17
  status: su
18
18
 
19
19
  whale:
20
20
  first_name: Miss
21
21
  name: Whale
22
22
  login: whale
23
- password: <%= User.hash_password('whale') %>
23
+ crypted_password: <%= Zena::CryptoProvider::Initial.encrypt('whale') %>
24
24
  groups: public, aqua, masters
25
25
  status: admin
26
26
 
@@ -28,6 +28,6 @@ messy:
28
28
  first_name: Very
29
29
  name: Messy
30
30
  login: messy
31
- password: <%= User.hash_password('messy') %>
31
+ crypted_password: <%= Zena::CryptoProvider::Initial.encrypt('messy') %>
32
32
  groups: aqua, masters
33
33
  status: reader
@@ -12,18 +12,19 @@ anon:
12
12
 
13
13
  su:
14
14
  login: su
15
- password: <%= User.hash_password('su') %>
15
+ crypted_password: <%= Zena::CryptoProvider::Initial.encrypt('su') %>
16
16
  first_name: Super
17
17
  name: User
18
18
  status: su
19
19
  contact: anonymous
20
+ single_access_token: HORIZONS
20
21
 
21
22
  ant:
22
23
  first_name: Solenopsis
23
24
  name: Invicta
24
25
  email: ant@zenadmin.info
25
26
  login: ant
26
- password: <%= User.hash_password('ant') %>
27
+ crypted_password: <%= Zena::CryptoProvider::Initial.encrypt('ant') %>
27
28
  time_zone: Europe/Zurich
28
29
  groups: public, workers
29
30
  status: user
@@ -34,7 +35,7 @@ tiger:
34
35
  name: Tigris Sumatran
35
36
  email: tiger@zenadmin.info
36
37
  login: tiger
37
- password: <%= User.hash_password('tiger') %>
38
+ crypted_password: <%= Zena::CryptoProvider::Initial.encrypt('tiger') %>
38
39
  groups: public, workers, managers
39
40
  status: user
40
41
 
@@ -43,6 +44,6 @@ lion:
43
44
  name: Leo Verneyi
44
45
  email: lion@zenadmin.info
45
46
  login: lion
46
- password: <%= User.hash_password('lion') %>
47
+ crypted_password: <%= Zena::CryptoProvider::Initial.encrypt('lion') %>
47
48
  groups: public, workers, admin
48
49
  status: admin
@@ -7,43 +7,43 @@ module Zena
7
7
  module Test
8
8
 
9
9
  # functional tests
10
- module TestController
11
- include Zena::Use::Fixtures
12
- include Zena::Use::TestHelper
13
-
14
- def init_controller
15
- $_test_site ||= 'zena'
16
- @request ||= ActionController::TestRequest.new
17
- @response ||= ActionController::TestResponse.new
18
- @request.host = sites_host($_test_site)
19
- @controller.instance_eval { @params = {}; @url = ActionController::UrlRewriter.new( @request, {} )}
20
- @controller.instance_variable_set(:@response, @response)
21
- @controller.send(:request=, @request)
22
- @controller.instance_variable_set(:@session, @request.session)
23
- end
24
-
25
- def logout
26
- reset_session
27
- end
28
-
29
- def session
30
- @controller.send(:session)
31
- end
32
-
33
- def flash
34
- session['flash']
35
- end
36
-
37
- def err(obj)
38
- obj.errors.each_error do |er,msg|
39
- puts "[#{er}] #{msg}"
40
- end
41
- end
42
-
43
- def method_missing(meth,*args, &block)
44
- @controller.send(meth, *args, &block)
45
- end
46
- end
10
+ # module TestController
11
+ # include Zena::Use::Fixtures
12
+ # include Zena::Use::TestHelper
13
+ #
14
+ # def init_controller
15
+ # $_test_site ||= 'zena'
16
+ # @request ||= ActionController::TestRequest.new
17
+ # @response ||= ActionController::TestResponse.new
18
+ # @request.host = sites_host($_test_site)
19
+ # @controller.instance_eval { @params = {}; @url = ActionController::UrlRewriter.new( @request, {} )}
20
+ # @controller.instance_variable_set(:@response, @response)
21
+ # @controller.send(:request=, @request)
22
+ # @controller.instance_variable_set(:@session, @request.session)
23
+ # end
24
+ #
25
+ # def logout
26
+ # reset_session
27
+ # end
28
+ #
29
+ # def session
30
+ # @controller.send(:session)
31
+ # end
32
+ #
33
+ # def flash
34
+ # session['flash']
35
+ # end
36
+ #
37
+ # def err(obj)
38
+ # obj.errors.each_error do |er,msg|
39
+ # puts "[#{er}] #{msg}"
40
+ # end
41
+ # end
42
+ #
43
+ # def method_missing(meth,*args, &block)
44
+ # @controller.send(meth, *args, &block)
45
+ # end
46
+ # end
47
47
 
48
48
  module Integration
49
49
  include Zena::Acts::Secure
@@ -132,7 +132,7 @@ class ZenaTestHelper < ActionView::TestCase
132
132
  end
133
133
 
134
134
  class ZenaTestController < ActionController::TestCase
135
- include Zena::Test::TestController
135
+ #include Zena::Test::TestController
136
136
  end
137
137
 
138
138
  NodeQuery.insert_zero_link(Link)