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.
- data/.gitignore +20 -0
- data/CREDITS +27 -0
- data/Capfile +3 -0
- data/DEVELOPERS +46 -0
- data/History.txt +15 -0
- data/MIT-LICENSE +19 -0
- data/Rakefile +44 -0
- data/TODO +24 -0
- data/TODO_ZENA_1_0 +23 -0
- data/app/controllers/application_controller.rb +3 -0
- data/app/controllers/documents_controller.rb +22 -56
- data/app/controllers/nodes_controller.rb +42 -27
- data/app/controllers/pings_controller.rb +19 -0
- data/app/controllers/relations_controller.rb +5 -1
- data/app/controllers/sites_controller.rb +1 -46
- data/app/controllers/user_sessions_controller.rb +47 -0
- data/app/controllers/users_controller.rb +1 -0
- data/app/controllers/versions_controller.rb +25 -7
- data/app/controllers/virtual_classes_controller.rb +1 -1
- data/app/helpers/application_helper.rb +1 -1
- data/app/models/comment.rb +2 -1
- data/app/models/contact_content.rb +2 -2
- data/app/models/data_entry.rb +5 -6
- data/app/models/document.rb +14 -10
- data/app/models/document_content.rb +4 -6
- data/app/models/iformat.rb +2 -2
- data/app/models/image_content.rb +6 -9
- data/app/models/node.rb +106 -164
- data/app/models/page.rb +0 -20
- data/app/models/site.rb +42 -12
- data/app/models/template.rb +3 -8
- data/app/models/template_content.rb +2 -0
- data/app/models/text_document.rb +13 -8
- data/app/models/user.rb +47 -100
- data/app/models/user_session.rb +4 -0
- data/app/models/version.rb +1 -1
- data/app/views/comments/create.rjs +3 -3
- data/app/views/comments/edit.rjs +1 -1
- data/app/views/comments/update.rjs +1 -1
- data/app/views/nodes/_import_results.rhtml +1 -1
- data/app/views/nodes/create.rjs +3 -3
- data/app/views/templates/document_create_tabs/_file.rhtml +1 -2
- data/app/views/templates/document_create_tabs/_import.rhtml +7 -2
- data/app/views/templates/edit_tabs/_document.rhtml +1 -3
- data/app/views/templates/edit_tabs/_image.rhtml +1 -3
- data/app/views/versions/_tr.rhtml +1 -1
- data/app/views/versions/edit.rhtml +2 -26
- data/bin/zena +6 -1
- data/bricks/delayed_job/README +18 -0
- data/bricks/delayed_job/migrate/20091104191643_create_delayed_jobs_table.rb +19 -0
- data/bricks/delayed_job/misc/init.rb +8 -0
- data/bricks/delayed_job/misc/tasks.rb +2 -0
- data/bricks/math/patch/application_helper.rb +1 -1
- data/bricks/sphinx/MIT-LICENSE +19 -0
- data/bricks/sphinx/README +19 -0
- data/bricks/sphinx/lib/use_sphinx.rb +78 -0
- data/bricks/sphinx/migrate/20091102171258_add_delta_for_sphinx.rb +9 -0
- data/bricks/sphinx/misc/deploy.rb +20 -0
- data/bricks/sphinx/misc/sphinx.yml +12 -0
- data/bricks/sphinx/misc/tasks.rb +21 -0
- data/bricks/sphinx/patch/node.rb +8 -0
- data/bricks/tags/lib/has_tags.rb +5 -3
- data/bricks/tags/test/zafu/tags.yml +13 -1
- data/config/bricks.yml +35 -0
- data/config/deploy.rb +8 -1
- data/config/environment.rb +1 -1
- data/config/environments/production.rb +1 -1
- data/config/gems.yml +28 -5
- data/config/sphinx.yml +12 -0
- data/db/init/base/skins/default/Node-+popupLayout.zafu +1 -16
- data/db/migrate/20091026161708_add_persistence_token.rb +13 -0
- data/db/migrate/20091101184952_add_session_table.rb +16 -0
- data/db/migrate/20091123175137_add_single_access_token.rb +9 -0
- data/db/migrate/20091124161608_rebuild_fullpath.rb +11 -0
- data/db/schema.rb +21 -8
- data/doc/README_FOR_APP +24 -0
- data/doc/fixtures.graffle +19568 -0
- data/doc/fixtures.pdf +0 -0
- data/doc/template/LICENSE +184 -0
- data/doc/template/README +37 -0
- data/doc/template/allison.css +283 -0
- data/doc/template/allison.js +307 -0
- data/doc/template/allison.rb +260 -0
- data/doc/template/cache/BODY +588 -0
- data/doc/template/cache/CLASS_INDEX +4 -0
- data/doc/template/cache/CLASS_PAGE +1 -0
- data/doc/template/cache/FILE_INDEX +4 -0
- data/doc/template/cache/FILE_PAGE +1 -0
- data/doc/template/cache/FONTS +1 -0
- data/doc/template/cache/FR_INDEX_BODY +1 -0
- data/doc/template/cache/IMGPATH +1 -0
- data/doc/template/cache/INDEX +1 -0
- data/doc/template/cache/JAVASCRIPT +307 -0
- data/doc/template/cache/METHOD_INDEX +4 -0
- data/doc/template/cache/METHOD_LIST +1 -0
- data/doc/template/cache/SRC_PAGE +1 -0
- data/doc/template/cache/STYLE +283 -0
- data/doc/template/cache/URL +1 -0
- data/doc/zafu_changes.yml +29 -0
- data/lib/base_additions.rb +1 -1
- data/lib/bricks.rb +9 -0
- data/lib/bricks/loader.rb +86 -0
- data/lib/bricks/requirements_validation.rb +71 -0
- data/lib/tasks/zena.rake +42 -4
- data/lib/zafu/action.rb +285 -0
- data/lib/zafu/ajax.rb +93 -0
- data/lib/zafu/attributes.rb +117 -0
- data/lib/zafu/calendar.rb +159 -0
- data/lib/zafu/context.rb +330 -0
- data/lib/zafu/core/html.rb +102 -0
- data/lib/zafu/core/move_to_parser.rb +167 -0
- data/lib/zafu/dates.rb +58 -0
- data/lib/zafu/display.rb +502 -0
- data/lib/zafu/eval.rb +66 -0
- data/lib/zafu/experimental.rb +66 -0
- data/lib/zafu/i18n.rb +64 -0
- data/lib/zafu/meta.rb +25 -0
- data/lib/zafu/refactor.rb +73 -0
- data/lib/zafu/support/context.rb +265 -0
- data/lib/zafu/support/dom.rb +145 -0
- data/lib/zafu/support/erb.rb +62 -0
- data/lib/zafu/support/flow.rb +401 -0
- data/lib/zafu/support/forms.rb +461 -0
- data/lib/zafu/support/links.rb +306 -0
- data/lib/zafu_parser.rb +26 -2
- data/lib/zena.rb +34 -15
- data/lib/zena/acts/multiversion.rb +2 -2
- data/lib/zena/acts/secure.rb +41 -30
- data/lib/zena/app.rb +7 -10
- data/lib/zena/controller/test_case.rb +12 -7
- data/lib/zena/crypto_provider/initial.rb +15 -0
- data/lib/zena/db.rb +6 -1
- data/lib/zena/deploy.rb +34 -6
- data/lib/zena/deploy/logrotate_app.rhtml +9 -0
- data/lib/zena/deploy/logrotate_host.rhtml +34 -0
- data/lib/zena/deploy/template.rb +1 -9
- data/lib/zena/foxy_parser.rb +1 -1
- data/lib/zena/info.rb +3 -1
- data/lib/zena/migrator.rb +1 -1
- data/lib/zena/parser.rb +12 -4
- data/lib/zena/parser/zazen_rules.rb +6 -6
- data/lib/zena/parser/zena_rules.rb +1 -7
- data/lib/zena/routes.rb +5 -5
- data/lib/zena/test_controller.rb +7 -2
- data/lib/zena/unit/test_case.rb +6 -8
- data/lib/zena/use/ajax.rb +10 -10
- data/lib/zena/use/authlogic.rb +93 -0
- data/lib/zena/use/dyn_attributes.rb +5 -0
- data/lib/zena/use/html_tags.rb +16 -34
- data/lib/zena/use/i18n.rb +4 -1
- data/lib/zena/use/node_query_finders.rb +8 -4
- data/lib/zena/use/refactor.rb +8 -20
- data/lib/zena/use/relations.rb +1 -0
- data/lib/zena/use/rendering.rb +4 -2
- data/lib/zena/use/search.rb +52 -0
- data/lib/zena/use/test_helper.rb +27 -28
- data/lib/zena/use/upload.rb +188 -0
- data/lib/zena/use/urls.rb +16 -14
- data/lib/zena/use/zafu.rb +16 -63
- data/lib/zena/use/zazen.rb +8 -8
- data/lib/zena/view/test_case.rb +8 -4
- data/locale/en/LC_MESSAGES/zena.mo +0 -0
- data/locale/en/zena.po +3 -3
- data/public/.htaccess +40 -0
- data/public/javascripts/upload-progress.js +17 -8
- data/public/javascripts/zena.js +8 -2
- data/public/stylesheets/popup.css +1 -0
- data/script/about +3 -0
- data/script/apache_logging +25 -0
- data/script/breakpointer +3 -0
- data/script/console +3 -0
- data/script/dbconsole +3 -0
- data/script/destroy +3 -0
- data/script/generate +3 -0
- data/script/performance/benchmarker +3 -0
- data/script/performance/profiler +3 -0
- data/script/plugin +3 -0
- data/script/process/inspector +3 -0
- data/script/process/reaper +3 -0
- data/script/process/spawner +3 -0
- data/script/runner +3 -0
- data/script/server +3 -0
- data/script/set_revision +29 -0
- data/spec/controllers/versions_controller_spec.rb +11 -0
- data/test/fixtures/files/Node-test.zafu +1 -1
- data/test/functional/nodes_controller_test.rb +25 -0
- data/test/functional/pings_controller_test.rb +8 -0
- data/test/functional/user_sessions_controller_test.rb +59 -0
- data/test/functional/users_controller_test.rb +81 -19
- data/test/helpers/node_query/filters.yml +5 -0
- data/test/helpers/node_query_test.rb +3 -3
- data/test/integration/multiple_hosts_test.rb +1 -1
- data/test/integration/navigation_test.rb +1 -1
- data/test/sites/complex/users.yml +1 -1
- data/test/sites/ocean/users.yml +3 -3
- data/test/sites/zena/users.yml +5 -4
- data/test/test_zena.rb +38 -38
- data/test/unit/cached_page_test.rb +2 -2
- data/test/unit/comment_test.rb +0 -1
- data/test/unit/document_test.rb +23 -11
- data/test/unit/helpers/ping_helper_test.rb +4 -0
- data/test/unit/multiversion_test.rb +24 -16
- data/test/unit/node_test.rb +32 -93
- data/test/unit/note_test.rb +9 -0
- data/test/unit/page_test.rb +2 -2
- data/test/unit/secure_test.rb +2 -12
- data/test/unit/site_test.rb +43 -24
- data/test/unit/template_test.rb +45 -3
- data/test/unit/text_document_test.rb +4 -3
- data/test/unit/user_test.rb +13 -33
- data/test/unit/zena/db_test.rb +8 -0
- data/test/unit/zena/parser/zazen.yml +4 -4
- data/test/unit/zena/use/dates_view_methods_test.rb +2 -1
- data/test/unit/zena/use/html_tags_test.rb +12 -4
- data/test/unit/zena/use/refactor_test.rb +4 -3
- data/test/unit/zena/use/rendering_test.rb +1 -0
- data/test/unit/zena/use/upload_test.rb +76 -0
- data/test/unit/zena/use/urls_test.rb +4 -0
- data/test/unit/zena/use/zafu_test.rb +8 -0
- data/test/unit/zena/workflow/status_version_test.rb +6 -0
- data/test/unit/zena/zena_tags/ajax.yml +4 -4
- data/test/unit/zena/zena_tags/basic.yml +21 -10
- data/test/unit/zena/zena_tags/relations.yml +0 -6
- data/test/unit/zena/zena_tags/rubyless.yml +35 -0
- data/test/unit/zena/zena_tags/zazen.yml +4 -4
- data/test/unit/zena/zena_tags_test.rb +36 -4
- data/vendor/TextMate/Zena.tmbundle/Commands/Run all yaml tests.tmCommand +1 -1
- data/vendor/TextMate/Zena.tmbundle/Commands/Run focused yaml test.tmCommand +2 -3
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/catch_exception.rb +39 -0
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/run_script.rb +102 -58
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/stdin_dialog.rb +14 -0
- data/vendor/TextMate/Zena.tmbundle/info.plist +2 -0
- data/zena.gemspec +2085 -0
- metadata +265 -90
- data/app/controllers/sessions_controller.rb +0 -41
- data/app/views/sites/zena_up.html.erb +0 -11
- data/config/database.yml +0 -40
- data/db/production.sqlite3 +0 -0
- data/lib/bricks/patcher.rb +0 -68
- data/lib/zena/parser/zena_tags.rb +0 -3562
- data/lib/zena/use/authentification.rb +0 -120
- data/public/images/ext/contact_pv.png +0 -0
- data/public/images/ext/other_pv.png +0 -0
- data/public/images/ext/page_pv.png +0 -0
- data/public/images/ext/page_tiny.png +0 -0
- data/public/images/ext/pdf_pv.png +0 -0
- data/public/images/ext/post_pv.png +0 -0
- data/public/images/ext/post_tiny.png +0 -0
- data/public/images/ext/project_pv.png +0 -0
- data/public/images/ext/project_tiny.png +0 -0
- data/public/images/ext/tag_pv.png +0 -0
- data/public/images/ext/zip_pv.png +0 -0
- data/tasks/ann.rake +0 -80
- data/tasks/bones.rake +0 -20
- data/tasks/gem.rake +0 -201
- data/tasks/git.rake +0 -40
- data/tasks/notes.rake +0 -27
- data/tasks/post_load.rake +0 -34
- data/tasks/rdoc.rake +0 -51
- data/tasks/rubyforge.rake +0 -55
- data/tasks/setup.rb +0 -292
- data/tasks/spec.rake +0 -54
- data/tasks/svn.rake +0 -47
- data/tasks/test.rake +0 -40
- data/tasks/zentest.rake +0 -36
- data/test/fixtures/comments.yml +0 -126
- data/test/fixtures/contact_contents.yml +0 -132
- data/test/fixtures/data_entries.yml +0 -65
- data/test/fixtures/discussions.yml +0 -48
- data/test/fixtures/document_contents.yml +0 -108
- data/test/fixtures/dyn_attributes.yml +0 -66
- data/test/fixtures/groups.yml +0 -86
- data/test/fixtures/groups_users.yml +0 -81
- data/test/fixtures/iformats.yml +0 -29
- data/test/fixtures/links.yml +0 -313
- data/test/fixtures/nodes.yml +0 -2592
- data/test/fixtures/relations.yml +0 -126
- data/test/fixtures/sites.yml +0 -58
- data/test/fixtures/template_contents.yml +0 -172
- data/test/fixtures/users.yml +0 -167
- data/test/fixtures/versions.yml +0 -1911
- data/test/fixtures/virtual_classes.yml +0 -87
- data/test/fixtures/zips.yml +0 -15
- data/test/functional/sessions_controller_test.rb +0 -73
data/test/unit/template_test.rb
CHANGED
|
@@ -52,7 +52,7 @@ class TemplateTest < Zena::Unit::TestCase
|
|
|
52
52
|
def test_create_with_file
|
|
53
53
|
login(:tiger)
|
|
54
54
|
doc = secure!(Document) { Document.create(:parent_id=>nodes_id(:default), :name=>'skiny',
|
|
55
|
-
:c_file=>
|
|
55
|
+
:c_file=>uploaded_fixture('some.txt', content_type="text/zafu", 'smoke'))}
|
|
56
56
|
assert_kind_of Template, doc
|
|
57
57
|
assert !doc.new_record?, "Not a new record"
|
|
58
58
|
assert_equal 'skiny.zafu', doc.version.content.filename
|
|
@@ -299,7 +299,7 @@ class TemplateTest < Zena::Unit::TestCase
|
|
|
299
299
|
def test_update_same_text
|
|
300
300
|
login(:tiger)
|
|
301
301
|
tmpt = secure(Template) { Template.create(:parent_id=>nodes_id(:default), 'c_format' => 'vcard', 'c_klass' => 'Node', 'name' => '', 'v_status' => Zena::Status[:pub], 'c_file' =>
|
|
302
|
-
|
|
302
|
+
uploaded_fixture('some.txt', 'text/zafu')) }
|
|
303
303
|
assert_kind_of Template, tmpt
|
|
304
304
|
Zena::Db.set_attribute(tmpt, :updated_at, Time.gm(2006,04,11))
|
|
305
305
|
assert_equal Zena::Status[:pub], tmpt.version.status
|
|
@@ -335,7 +335,24 @@ class TemplateTest < Zena::Unit::TestCase
|
|
|
335
335
|
|
|
336
336
|
should 'be able to destroy version' do
|
|
337
337
|
assert_difference('Version.count', -1) do
|
|
338
|
-
|
|
338
|
+
assert_difference('Node.count', 0) do
|
|
339
|
+
assert @node.destroy_version
|
|
340
|
+
end
|
|
341
|
+
end
|
|
342
|
+
end
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
context 'on a template with just one removed version' do
|
|
346
|
+
setup do
|
|
347
|
+
@node = secure(Node) { nodes(:Project_zafu) }
|
|
348
|
+
@node.remove
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
should 'be able to destroy template' do
|
|
352
|
+
assert_difference('Version.count', -1) do
|
|
353
|
+
assert_difference('Node.count', -1) do
|
|
354
|
+
assert @node.destroy_version
|
|
355
|
+
end
|
|
339
356
|
end
|
|
340
357
|
end
|
|
341
358
|
end
|
|
@@ -352,6 +369,31 @@ class TemplateTest < Zena::Unit::TestCase
|
|
|
352
369
|
end
|
|
353
370
|
end
|
|
354
371
|
|
|
372
|
+
should 'be able to create a template with no format, mode or klass' do
|
|
373
|
+
assert_difference('Node.count', 1) do
|
|
374
|
+
@node = secure(Document) { Document.create(:parent_id => nodes_id(:default), :name=>'foo.zafu') }
|
|
375
|
+
end
|
|
376
|
+
content = @node.version.content
|
|
377
|
+
assert_nil content.format
|
|
378
|
+
assert_nil content.mode
|
|
379
|
+
assert_nil content.klass
|
|
380
|
+
assert_equal 'foo', @node.name
|
|
381
|
+
assert_equal 'foo', @node.version.title
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
should 'be able to update a template with blank format, mode or klass' do
|
|
385
|
+
@node = secure(Node) { nodes(:notes_zafu) }
|
|
386
|
+
assert @node.update_attributes('v_text' => 'hello', 'c_klass' => '', 'c_format' => '', 'c_mode' => '')
|
|
387
|
+
@node = secure(Node) { nodes(:notes_zafu) } # reload
|
|
388
|
+
content = @node.version.content
|
|
389
|
+
|
|
390
|
+
assert_nil content.format
|
|
391
|
+
assert_nil content.mode
|
|
392
|
+
assert_nil content.klass
|
|
393
|
+
|
|
394
|
+
assert_equal 'hello', @node.version.text
|
|
395
|
+
end
|
|
396
|
+
|
|
355
397
|
end
|
|
356
398
|
|
|
357
399
|
end
|
|
@@ -54,7 +54,7 @@ class TextDocumentTest < Zena::Unit::TestCase
|
|
|
54
54
|
assert bird.update_attributes(:parent_id => node[:parent_id])
|
|
55
55
|
Zena::Db.set_attribute(bird, :updated_at, b_at)
|
|
56
56
|
start =<<-END_CSS
|
|
57
|
-
body { font-size:10px; }
|
|
57
|
+
body { font-size:10px; behavior:url("/stylesheets/csshover2.htc"); }
|
|
58
58
|
#header { background:url('bird.jpg') }
|
|
59
59
|
#pv { background:url('bird_pv.jpg') }
|
|
60
60
|
#footer { background:url('/projects/wiki/flower.jpg') }
|
|
@@ -66,9 +66,10 @@ class TextDocumentTest < Zena::Unit::TestCase
|
|
|
66
66
|
helper = ApplicationController.new
|
|
67
67
|
helper.instance_variable_set(:@visitor, visitor)
|
|
68
68
|
text = node.parse_assets(start, helper, 'v_text')
|
|
69
|
+
err node
|
|
69
70
|
assert node.errors.empty?
|
|
70
71
|
res =<<-END_CSS
|
|
71
|
-
body { font-size:10px; }
|
|
72
|
+
body { font-size:10px; behavior:url("/stylesheets/csshover2.htc?#{File.mtime(File.join(RAILS_ROOT, 'public/stylesheets/csshover2.htc')).to_i}"); }
|
|
72
73
|
#header { background:url('/en/image30.jpg?1144713600') }
|
|
73
74
|
#pv { background:url('/en/image30_pv.jpg?967816914293') }
|
|
74
75
|
#footer { background:url('/en/image31.jpg?1144713600') }
|
|
@@ -80,7 +81,7 @@ class TextDocumentTest < Zena::Unit::TestCase
|
|
|
80
81
|
assert_equal res, text
|
|
81
82
|
text = node.unparse_assets(text, helper, 'v_text')
|
|
82
83
|
unparsed =<<-END_CSS
|
|
83
|
-
body { font-size:10px; }
|
|
84
|
+
body { font-size:10px; behavior:url("/stylesheets/csshover2.htc"); }
|
|
84
85
|
#header { background:url('bird.jpg') }
|
|
85
86
|
#pv { background:url('bird_pv.jpg') }
|
|
86
87
|
#footer { background:url('/projects/wiki/flower.jpg') }
|
data/test/unit/user_test.rb
CHANGED
|
@@ -2,6 +2,15 @@ require 'test_helper'
|
|
|
2
2
|
|
|
3
3
|
class UserTest < Zena::Unit::TestCase
|
|
4
4
|
|
|
5
|
+
def test_find_allowed_user_by_login
|
|
6
|
+
assert_equal users_id(:su), User.find_allowed_user_by_login('su').id
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_deleted_user_should_not_be_allowed
|
|
10
|
+
User.connection.execute "UPDATE users SET status = #{User::Status[:deleted]} WHERE id = #{users_id(:tiger)} AND site_id = #{sites_id(:zena)}"
|
|
11
|
+
assert_nil User.find_allowed_user_by_login('tiger')
|
|
12
|
+
end
|
|
13
|
+
|
|
5
14
|
def test_visited_node_ids
|
|
6
15
|
login(:tiger)
|
|
7
16
|
secure!(Node) { nodes(:status) }
|
|
@@ -55,8 +64,8 @@ class UserTest < Zena::Unit::TestCase
|
|
|
55
64
|
user = secure!(User) { User.find(user[:id]) } # reload
|
|
56
65
|
assert_equal sites_id(:ocean), user.site_id
|
|
57
66
|
assert_equal 2, user.groups.size
|
|
58
|
-
assert user.groups.include?(
|
|
59
|
-
assert user.groups.include?(
|
|
67
|
+
assert user.groups.map{|g| g.name}.include?('public'), "Is in the public group"
|
|
68
|
+
assert user.groups.map{|g| g.name}.include?('aqua'), "Is in the 'site' group"
|
|
60
69
|
assert_equal User::Status[:moderated], user.status
|
|
61
70
|
assert_equal 'ru', user.lang
|
|
62
71
|
assert_equal 'US/Hawaii', user[:time_zone]
|
|
@@ -91,7 +100,7 @@ class UserTest < Zena::Unit::TestCase
|
|
|
91
100
|
|
|
92
101
|
def test_create_admin_with_groups
|
|
93
102
|
login(:lion)
|
|
94
|
-
user = secure!(User) { User.new("login"=>"john", "password"=>"isjjna78a9h", "group_ids"=>[
|
|
103
|
+
user = secure!(User) { User.new("login"=>"john", "password"=>"isjjna78a9h", "group_ids"=>[1329663069]) }
|
|
95
104
|
assert user.save
|
|
96
105
|
user = secure!(User) { User.find(user[:id])}
|
|
97
106
|
assert_equal 3, user.groups.size
|
|
@@ -154,35 +163,6 @@ class UserTest < Zena::Unit::TestCase
|
|
|
154
163
|
assert !user.is_admin?
|
|
155
164
|
end
|
|
156
165
|
|
|
157
|
-
def test_login
|
|
158
|
-
assert user = User.login('ant', 'ant', 'test.host'), "Login ok."
|
|
159
|
-
assert_equal user[:id], users_id(:ant)
|
|
160
|
-
assert_nil User.login('ant', 'bad', 'test.host')
|
|
161
|
-
assert_nil User.login('ant', 'ant', 'ocean.host')
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
def test_cannot_login_if_deleted
|
|
165
|
-
assert User.login('ant', 'ant', 'test.host')
|
|
166
|
-
User.connection.execute("UPDATE users SET status=#{User::Status[:deleted]} WHERE id=#{users_id(:ant)}")
|
|
167
|
-
assert !User.login('ant', 'ant', 'test.host')
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
def test_anon_cannot_login
|
|
171
|
-
assert_nil User.login('anon', '', 'test.host')
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
def test_unique_login
|
|
175
|
-
login(:lion)
|
|
176
|
-
bob = secure!(User) { User.create(:login=>'tiger', :password=>'anypassword') }
|
|
177
|
-
assert bob.new_record?
|
|
178
|
-
assert bob.errors[:login] #.any?
|
|
179
|
-
|
|
180
|
-
login(:whale)
|
|
181
|
-
bob = secure!(User) { User.create(:login=>'tiger', :password=>'anypassword') }
|
|
182
|
-
assert !bob.new_record?
|
|
183
|
-
assert_nil bob.errors[:login] #.empty?
|
|
184
|
-
end
|
|
185
|
-
|
|
186
166
|
def test_empty_password
|
|
187
167
|
login(:lion)
|
|
188
168
|
bob = secure!(User) { User.new }
|
|
@@ -252,7 +232,7 @@ class UserTest < Zena::Unit::TestCase
|
|
|
252
232
|
login(:lion)
|
|
253
233
|
user = secure!(User) { User.create("login"=>"john", "password"=>"isjjna78a9h", 'time_zone' => 'Zurich') }
|
|
254
234
|
assert user.new_record?
|
|
255
|
-
|
|
235
|
+
assert_not_nil user.errors['time_zone']
|
|
256
236
|
|
|
257
237
|
user = secure!(User) { User.create("login"=>"john", "password"=>"isjjna78a9h", 'time_zone' => 'Mexico/General') }
|
|
258
238
|
assert !user.new_record?
|
data/test/unit/zena/db_test.rb
CHANGED
|
@@ -36,6 +36,14 @@ class DbTest < Zena::Unit::TestCase
|
|
|
36
36
|
assert_nil Zena::Db.fetch_row("SELECT name FROM nodes WHERE 0")
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
+
def test_fetch_attributes
|
|
40
|
+
assert_equal [{"name"=>"secret", "zip"=>"19"},
|
|
41
|
+
{"name"=>"status", "zip"=>"22"},
|
|
42
|
+
{"name"=>"strange", "zip"=>"36"},
|
|
43
|
+
{"name"=>"skins", "zip"=>"51"},
|
|
44
|
+
{"name"=>"style", "zip"=>"53"}], Zena::Db.fetch_attributes(['zip','name'], 'nodes', "name like 's%' and site_id = #{sites_id(:zena)} ORDER BY zip")
|
|
45
|
+
end
|
|
46
|
+
|
|
39
47
|
context 'A node that needs attribute changes without validations or side effects' do
|
|
40
48
|
setup do
|
|
41
49
|
login(:anon)
|
|
@@ -157,13 +157,13 @@ link_no_title:
|
|
|
157
157
|
src: '"":23'
|
|
158
158
|
res: '<p>[make_link id:|23| title:||]</p>'
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
link_anchor:
|
|
161
161
|
src: '"hello":23#world of fame'
|
|
162
|
-
res: "<p>[make_link
|
|
162
|
+
res: "<p>[make_link anchor:|world| id:|23| title:|hello|] of fame</p>"
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
link_anchor_same_as_title:
|
|
165
165
|
src: '"hello":23# I love you'
|
|
166
|
-
res: "<p>[make_link
|
|
166
|
+
res: "<p>[make_link anchor:|true| id:|23| title:|hello|] I love you</p>"
|
|
167
167
|
|
|
168
168
|
link_with_ending_punct:
|
|
169
169
|
src: "I love \"\":20."
|
|
@@ -41,9 +41,10 @@ class DatesViewMethodsTest < Zena::View::TestCase
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def test_full_date
|
|
44
|
+
I18n.locale = 'en'
|
|
44
45
|
atime = visitor.tz.utc_to_local(Time.gm(2006,11,10))
|
|
45
46
|
assert_equal "Friday, November 10 2006", full_date(atime)
|
|
46
|
-
I18n.locale = 'fr'
|
|
47
|
+
::I18n.locale = 'fr'
|
|
47
48
|
assert_equal "vendredi, 10 novembre 2006", full_date(atime)
|
|
48
49
|
end
|
|
49
50
|
|
|
@@ -106,6 +106,14 @@ class HtmlTagsTest < Zena::View::TestCase
|
|
|
106
106
|
assert_match %r{input type='text'.*name.*node\[icon_id\]}m, select_id('node', :icon_id)
|
|
107
107
|
end
|
|
108
108
|
|
|
109
|
+
def test_select_id_with_empty_value
|
|
110
|
+
login(:lion)
|
|
111
|
+
vclass = VirtualClass.create(:superclass => 'Post', :name => 'Foo', :create_group_id => groups_id(:public))
|
|
112
|
+
@node = secure!(Node) { nodes(:status) }
|
|
113
|
+
select = select_id('node', :parent_id, :class=>'Foo')
|
|
114
|
+
assert_match %r{<select[^>]*></select>}, select
|
|
115
|
+
end
|
|
116
|
+
|
|
109
117
|
def test_uses_datebox_with_lang
|
|
110
118
|
res = uses_datebox
|
|
111
119
|
assert_match %r{/calendar/lang/calendar-en-utf8.js}, res
|
|
@@ -191,16 +199,16 @@ class HtmlTagsTest < Zena::View::TestCase
|
|
|
191
199
|
end
|
|
192
200
|
|
|
193
201
|
def test_login_link
|
|
194
|
-
assert_equal "<a href=\"http://test.host/
|
|
202
|
+
assert_equal "<a href=\"http://test.host/login\">login</a>", login_link
|
|
195
203
|
login(:ant)
|
|
196
|
-
assert_equal "<a href
|
|
204
|
+
assert_equal "<a href=\"http://test.host/logout\">logout</a>", login_link
|
|
197
205
|
end
|
|
198
206
|
|
|
199
207
|
def test_login_link_without_prefix
|
|
200
208
|
overwrite_params(:prefix => nil, :controller => 'comments', :action => 'index')
|
|
201
|
-
assert_equal "<a href
|
|
209
|
+
assert_equal "<a href=\"http://test.host/login\">login</a>", login_link
|
|
202
210
|
login(:ant)
|
|
203
|
-
assert_equal "<a href
|
|
211
|
+
assert_equal "<a href=\"http://test.host/logout\">logout</a>", login_link
|
|
204
212
|
end
|
|
205
213
|
|
|
206
214
|
def test_show_path_root
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class RefactorTest < Zena::View::TestCase
|
|
4
|
-
|
|
4
|
+
tests Zena::Use::Refactor::ViewMethods # fquote
|
|
5
|
+
|
|
5
6
|
def _(k)
|
|
6
7
|
k
|
|
7
8
|
end
|
|
@@ -11,7 +12,7 @@ class RefactorTest < Zena::View::TestCase
|
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
def test_render_to_string
|
|
14
|
-
assert_match 'stupid test 25',
|
|
15
|
+
assert_match 'stupid test 25', render_to_string(:inline=>'stupid <%= "test" %> <%= 5*5 %>')
|
|
15
16
|
end
|
|
16
17
|
|
|
17
18
|
def test_fsize
|
|
@@ -33,7 +34,7 @@ class RefactorTest < Zena::View::TestCase
|
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
def test_traductions
|
|
36
|
-
|
|
37
|
+
visitor.lang = 'en'
|
|
37
38
|
# we must initialize an url for url_rewriting in 'traductions'
|
|
38
39
|
@controller.instance_eval { @url = ActionController::UrlRewriter.new( @request, {:controller=>'nodes', :action=>'index'} ) }
|
|
39
40
|
@node = secure!(Node) { Node.find(nodes_id(:status)) } # en,fr
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
|
|
3
3
|
class RenderingTest < Zena::View::TestCase
|
|
4
|
+
def self.layout(*args); ''; end # Called by Rendering::ControllerMethods
|
|
4
5
|
include Zena::Use::Rendering::ControllerMethods
|
|
5
6
|
include Zena::Use::Zafu::ControllerMethods # template_url
|
|
6
7
|
include Zena::Acts::Secure # secure
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class UploadTest < Zena::View::TestCase
|
|
4
|
+
include Zena::Use::Upload::ControllerMethods
|
|
5
|
+
attr_reader :params
|
|
6
|
+
|
|
7
|
+
# only run these tests if network is available
|
|
8
|
+
if Zena::Use::Upload.has_network?
|
|
9
|
+
context 'Uploading with an attachment url' do
|
|
10
|
+
setup do
|
|
11
|
+
@params = {'attachment_url' => 'http://zenadmin.org/fr/blog/image5.jpg'}
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
should 'provide a file with the downloaded content' do
|
|
15
|
+
file, error = get_attachment
|
|
16
|
+
assert file, "error: #{error}"
|
|
17
|
+
content = file.read
|
|
18
|
+
assert_equal 73633, content.size
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
context 'to a file too large' do
|
|
22
|
+
setup do
|
|
23
|
+
@params = {'attachment_url' => "http://cdimage.debian.org/debian-cd/5.0.3/i386/iso-cd/debian-503-i386-CD-1.iso"}
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
should 'return an error about file being too big, without a download' do
|
|
27
|
+
file, error = get_attachment
|
|
28
|
+
assert_nil file
|
|
29
|
+
assert_equal 'size (645.5 MB) too big to fetch url', error
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context 'to a file without size' do
|
|
34
|
+
setup do
|
|
35
|
+
@params = {'attachment_url' => "http://download.berlios.de/zena/zena_playground.zip"}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
should 'return an error about missing content length' do
|
|
39
|
+
file, error = get_attachment
|
|
40
|
+
assert_nil file
|
|
41
|
+
assert_equal 'unknown size: cannot fetch url', error
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
context 'that is not valid' do
|
|
47
|
+
setup do
|
|
48
|
+
@invalid_urls = ['lkja a93z/3', 'bad .uri', '.']
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
should 'return an error' do
|
|
52
|
+
@invalid_urls.each do |url|
|
|
53
|
+
@params = {'attachment_url' => url}
|
|
54
|
+
file, error = get_attachment
|
|
55
|
+
assert_nil file
|
|
56
|
+
assert_equal 'invalid url', error
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
context 'that does not exist' do
|
|
62
|
+
setup do
|
|
63
|
+
@params = {'attachment_url' => "http://example.org/xyz.zip"}
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
should 'return an error about missing content length' do
|
|
67
|
+
file, error = get_attachment
|
|
68
|
+
assert_nil file
|
|
69
|
+
assert_equal 'not found', error
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
else
|
|
74
|
+
puts "upload by url disabled (no network)"
|
|
75
|
+
end # if has_network?
|
|
76
|
+
end
|
|
@@ -65,6 +65,10 @@ class UrlsTest < Zena::View::TestCase
|
|
|
65
65
|
assert_equal "/en/image30_pv.jpg?#{node.updated_at.to_i + Iformat['pv'][:hash_id]}", zen_path(node, :format => 'jpg', :mode => 'pv')
|
|
66
66
|
end
|
|
67
67
|
|
|
68
|
+
def test_zen_path_with_anchor
|
|
69
|
+
assert_equal '/en/section12.html#comments', zen_path(nodes(:people), :anchor => 'comments')
|
|
70
|
+
end
|
|
71
|
+
|
|
68
72
|
def test_zen_path_asset
|
|
69
73
|
login(:ant)
|
|
70
74
|
node = secure!(Node) { nodes(:zena) }
|
|
@@ -30,4 +30,12 @@ class ZafuTest < Zena::View::TestCase
|
|
|
30
30
|
compiled_template = template_url
|
|
31
31
|
assert_match %r{<%= render_js %></body>}, File.read(File.join(SITES_ROOT, compiled_template))
|
|
32
32
|
end
|
|
33
|
+
|
|
34
|
+
def test_template_path_from_template_url
|
|
35
|
+
assert_equal "/test.host/zafu/default/Node-test/en/pagir", template_path_from_template_url('/default/Node-test/pagir')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_fullpath_from_template_url
|
|
39
|
+
assert_equal "#{SITES_ROOT}/test.host/zafu/default/Node-test/en/pagir", fullpath_from_template_url('/default/Node-test/pagir')
|
|
40
|
+
end
|
|
33
41
|
end
|
|
@@ -156,20 +156,20 @@ draggable_do_syntax:
|
|
|
156
156
|
unlink:
|
|
157
157
|
context:
|
|
158
158
|
node: 'art'
|
|
159
|
-
src: "<r:tagged do='each' do='unlink'/>"
|
|
159
|
+
src: "<r:context select='tagged' do='each' do='unlink'/>"
|
|
160
160
|
res: "/<div id='list1_21'><a .*onclick=.*Ajax.Request.*_ID(cleanWater_in_art)\?dom_id=list1_21.*class=.unlink.*bullet_delete.png.*<\/div><div id='list1_27'/"
|
|
161
161
|
|
|
162
162
|
unlink_ignored_in_form:
|
|
163
163
|
context:
|
|
164
164
|
node: 'art'
|
|
165
|
-
src: "<r:tagged><r:each do='unlink'/><r:add/></r:
|
|
165
|
+
src: "<r:context select='tagged'><r:each do='unlink'/><r:add/></r:context>"
|
|
166
166
|
res: "!/<form.*bullet_delete.png/"
|
|
167
167
|
|
|
168
168
|
edit_link:
|
|
169
169
|
context:
|
|
170
170
|
node: 'art'
|
|
171
171
|
lang: 'fr'
|
|
172
|
-
src: "<r:tagged><r:each><r:show attr='name'/>: <r:show attr='l_status'/> <r:edit/></r:each></r:
|
|
172
|
+
src: "<r:context select='tagged'><r:each><r:show attr='name'/>: <r:show attr='l_status'/> <r:edit/></r:each></r:context>"
|
|
173
173
|
res: "/link_id.*éditer/"
|
|
174
174
|
'edit/link/fr/list1_form.erb': "/<input type='hidden' name='link_id' value=.<%= @node.link_id %>./>/"
|
|
175
175
|
'edit/link/fr/list1.erb': "/\#\{@node.link_id\}/"
|
|
@@ -183,7 +183,7 @@ each_in_each_dom_id:
|
|
|
183
183
|
<ul class='tags' do='tags in site'>
|
|
184
184
|
<li do='each'><b do='link'/>
|
|
185
185
|
<div do='drop' set='set_tag'>
|
|
186
|
-
<ul class='tagged' do='tagged'>
|
|
186
|
+
<ul class='tagged' do='context' select='tagged'>
|
|
187
187
|
<li do='each' draggable='true' do='link'/>
|
|
188
188
|
</ul>
|
|
189
189
|
</div>
|
|
@@ -260,20 +260,20 @@ link_root:
|
|
|
260
260
|
tem: "<a href='<%= zen_path((secure(Node) { Node.find(_ID(zena))})) %>'><%= @node.version.title %></a>"
|
|
261
261
|
res: "<a href='/oo'>status title</a>"
|
|
262
262
|
|
|
263
|
-
|
|
264
|
-
src: "<r:link
|
|
263
|
+
link_anchor:
|
|
264
|
+
src: "<r:link anchor='true'/>"
|
|
265
265
|
res: "<a href='#node22'>status title</a>"
|
|
266
266
|
|
|
267
|
-
|
|
268
|
-
src: "<r:link
|
|
267
|
+
link_anchor_name:
|
|
268
|
+
src: "<r:link anchor='[name]'/>"
|
|
269
269
|
res: "<a href='#status'>status title</a>"
|
|
270
270
|
|
|
271
|
-
|
|
272
|
-
src: "<r:link
|
|
271
|
+
link_anchor_in:
|
|
272
|
+
src: "<r:link anchor='true' in='project' mode='tree'/>"
|
|
273
273
|
res: "<a href='/oo/projects/cleanWater_tree#node22'>status title</a>"
|
|
274
274
|
|
|
275
|
-
|
|
276
|
-
src: "<r:link
|
|
275
|
+
link_anchor_name_in:
|
|
276
|
+
src: "<r:link anchor='[name]' in='parent'/>"
|
|
277
277
|
res: "<a href='/oo/projects/cleanWater#status'>status title</a>"
|
|
278
278
|
|
|
279
279
|
link_stored:
|
|
@@ -300,7 +300,7 @@ anchor:
|
|
|
300
300
|
res: "<a name='node22'></a><a name='status'></a> <p>22</p>"
|
|
301
301
|
|
|
302
302
|
anchor_in_link:
|
|
303
|
-
src: "<r:
|
|
303
|
+
src: "<r:anchor do='link'/>"
|
|
304
304
|
res: "<a name='node22' href='/oo/projects/cleanWater/page22.html'>status title</a>"
|
|
305
305
|
|
|
306
306
|
show_title_anchor:
|
|
@@ -320,7 +320,7 @@ link_version:
|
|
|
320
320
|
version_anchor:
|
|
321
321
|
context:
|
|
322
322
|
node: 'opening'
|
|
323
|
-
src: "<r:traductions><r:each join=', '><r:
|
|
323
|
+
src: "<r:traductions><r:each join=', '><r:anchor do='link' tattr='lang'/></r:each></r:traductions>"
|
|
324
324
|
res: "<a name='version27.2' href='/oo/projects/cleanWater/post27.html?lang=en'>english</a>, <a name='version27.1' href='/oo/projects/cleanWater/post27.html?lang=fr'>french</a>"
|
|
325
325
|
|
|
326
326
|
title:
|
|
@@ -642,6 +642,10 @@ if_in_tag:
|
|
|
642
642
|
src: "<r:form><p do='if' in='form' do='[name]'/></r:form><i do='if' in='form' do='[name]'/>done."
|
|
643
643
|
res: "/<p>status</p></form></div>done./"
|
|
644
644
|
|
|
645
|
+
if_in_tag_else:
|
|
646
|
+
src: "<r:if in='form'>in form<r:else>not in form</r:else></r:if>"
|
|
647
|
+
res: "not in form"
|
|
648
|
+
|
|
645
649
|
if_or:
|
|
646
650
|
src: "<r:if can='write' or_test='d_foo'>hello</r:if>"
|
|
647
651
|
tem: "/<% if @node.can_write? || !@node.version.dyn[\"foo\"].blank? -%>hello<% end -%>|<% if !@node.version.dyn[\"foo\"].blank? || @node.can_write? -%>hello<% end -%>/"
|
|
@@ -1085,6 +1089,7 @@ translate_id_to_zip:
|
|
|
1085
1089
|
|
|
1086
1090
|
date:
|
|
1087
1091
|
context:
|
|
1092
|
+
visitor: ant
|
|
1088
1093
|
node: 'letter'
|
|
1089
1094
|
lang: 'fr'
|
|
1090
1095
|
src: "<r:date select='[log_at]'>nouvelles de <r:trans do='[current_date]' format='%B'/> <r:show date='current_date' format='%Y'/>: <r:notes in='site' log='month' do='each' join=', ' do='[name]'/></r:date>"
|
|
@@ -1169,6 +1174,7 @@ captcha:
|
|
|
1169
1174
|
|
|
1170
1175
|
date_fr:
|
|
1171
1176
|
context:
|
|
1177
|
+
visitor: ant
|
|
1172
1178
|
lang: 'fr'
|
|
1173
1179
|
src: "<r:show date='created_at' format='%a'/>"
|
|
1174
1180
|
res: "ven"
|
|
@@ -1225,6 +1231,11 @@ link_page_list:
|
|
|
1225
1231
|
tem: "/set_pak_page != set_pak.*zen_path\(@node,:pak.*elsif true.*set_pak_page/"
|
|
1226
1232
|
res: "/<a href='.*page22.html\?pak=1'>1</a>, 2, .*pak=3'>3</a>.*pak=4'>4</a>.*pak=5'>5</a>/"
|
|
1227
1233
|
|
|
1234
|
+
# TODO:
|
|
1235
|
+
#link_page_list_single_page:
|
|
1236
|
+
# src: "<r:images in='site' limit='10' order='zip' paginate='p' do='link' page='list' join=', '/>"
|
|
1237
|
+
# res: "" # should not show single page
|
|
1238
|
+
|
|
1228
1239
|
link_page_list_page_count:
|
|
1229
1240
|
context:
|
|
1230
1241
|
pak: 3
|