@@ -71,7 +71,6 end | |||||
71 |
|
71 | |||
72 | group :test do |
|
72 | group :test do | |
73 | gem "shoulda", "~> 2.10.3" |
|
73 | gem "shoulda", "~> 2.10.3" | |
74 | gem "edavis10-object_daddy", :require => "object_daddy" |
|
|||
75 | gem "mocha" |
|
74 | gem "mocha" | |
76 | end |
|
75 | end | |
77 |
|
76 |
@@ -15,26 +15,110 module ObjectDaddyHelpers | |||||
15 |
|
15 | |||
16 | def User.add_to_project(user, project, roles) |
|
16 | def User.add_to_project(user, project, roles) | |
17 | roles = [roles] unless roles.is_a?(Array) |
|
17 | roles = [roles] unless roles.is_a?(Array) | |
18 |
Member. |
|
18 | Member.create!(:principal => user, :project => project, :roles => roles) | |
|
19 | end | |||
|
20 | ||||
|
21 | def User.generate!(attributes={}) | |||
|
22 | @generated_user_login ||= 'user0' | |||
|
23 | @generated_user_login.succ! | |||
|
24 | user = User.new(attributes) | |||
|
25 | user.login = @generated_user_login if user.login.blank? | |||
|
26 | user.mail = "#{@generated_user_login}@example.com" if user.mail.blank? | |||
|
27 | user.firstname = "Bob" if user.firstname.blank? | |||
|
28 | user.lastname = "Doe" if user.lastname.blank? | |||
|
29 | yield user if block_given? | |||
|
30 | user.save! | |||
|
31 | user | |||
|
32 | end | |||
|
33 | ||||
|
34 | def Group.generate!(attributes={}) | |||
|
35 | @generated_group_name ||= 'Group 0' | |||
|
36 | @generated_group_name.succ! | |||
|
37 | group = Group.new(attributes) | |||
|
38 | group.lastname = @generated_group_name if group.lastname.blank? | |||
|
39 | yield group if block_given? | |||
|
40 | group.save! | |||
|
41 | group | |||
|
42 | end | |||
|
43 | ||||
|
44 | def Project.generate!(attributes={}) | |||
|
45 | @generated_project_identifier ||= 'project-0000' | |||
|
46 | @generated_project_identifier.succ! | |||
|
47 | project = Project.new(attributes) | |||
|
48 | project.name = @generated_project_identifier if project.name.blank? | |||
|
49 | project.identifier = @generated_project_identifier if project.identifier.blank? | |||
|
50 | yield project if block_given? | |||
|
51 | project.save! | |||
|
52 | project | |||
|
53 | end | |||
|
54 | ||||
|
55 | def Tracker.generate!(attributes={}) | |||
|
56 | @generated_tracker_name ||= 'Tracker 0' | |||
|
57 | @generated_tracker_name.succ! | |||
|
58 | tracker = Tracker.new(attributes) | |||
|
59 | tracker.name = @generated_tracker_name if tracker.name.blank? | |||
|
60 | yield tracker if block_given? | |||
|
61 | tracker.save! | |||
|
62 | tracker | |||
|
63 | end | |||
|
64 | ||||
|
65 | def Role.generate!(attributes={}) | |||
|
66 | @generated_role_name ||= 'Role 0' | |||
|
67 | @generated_role_name.succ! | |||
|
68 | role = Role.new(attributes) | |||
|
69 | role.name = @generated_role_name if role.name.blank? | |||
|
70 | yield role if block_given? | |||
|
71 | role.save! | |||
|
72 | role | |||
|
73 | end | |||
|
74 | ||||
|
75 | def Issue.generate!(attributes={}) | |||
|
76 | issue = Issue.new(attributes) | |||
|
77 | issue.subject = 'Generated' if issue.subject.blank? | |||
|
78 | issue.author ||= User.find(2) | |||
|
79 | yield issue if block_given? | |||
|
80 | issue.save! | |||
|
81 | issue | |||
|
82 | end | |||
|
83 | ||||
|
84 | def Version.generate!(attributes={}) | |||
|
85 | @generated_version_name ||= 'Version 0' | |||
|
86 | @generated_version_name.succ! | |||
|
87 | version = Version.new(attributes) | |||
|
88 | version.name = @generated_version_name if version.name.blank? | |||
|
89 | yield version if block_given? | |||
|
90 | version.save! | |||
|
91 | version | |||
|
92 | end | |||
|
93 | ||||
|
94 | def AuthSource.generate!(attributes={}) | |||
|
95 | @generated_auth_source_name ||= 'Auth 0' | |||
|
96 | @generated_auth_source_name.succ! | |||
|
97 | source = AuthSource.new(attributes) | |||
|
98 | source.name = @generated_auth_source_name if source.name.blank? | |||
|
99 | yield source if block_given? | |||
|
100 | source.save! | |||
|
101 | source | |||
19 | end |
|
102 | end | |
20 |
|
103 | |||
21 | # Generate the default Query |
|
104 | # Generate the default Query | |
22 | def Query.generate_default!(attributes={}) |
|
105 | def Query.generate_default!(attributes={}) | |
23 |
query = Query. |
|
106 | query = Query.new(attributes) | |
24 |
query.name |
|
107 | query.name = '_' if query.name.blank? | |
25 | query.save! |
|
108 | query.save! | |
26 | query |
|
109 | query | |
27 | end |
|
110 | end | |
28 |
|
111 | |||
29 | # Generate an issue for a project, using it's trackers |
|
112 | # Generate an issue for a project, using it's trackers | |
30 | def Issue.generate_for_project!(project, attributes={}) |
|
113 | def Issue.generate_for_project!(project, attributes={}) | |
31 |
issue = Issue. |
|
114 | issue = Issue.new(attributes) do |issue| | |
32 | issue.project = project |
|
115 | issue.project = project | |
33 | issue.tracker = project.trackers.first unless project.trackers.empty? |
|
116 | issue.tracker = project.trackers.first unless project.trackers.empty? | |
|
117 | issue.subject = 'Generated' if issue.subject.blank? | |||
|
118 | issue.author ||= User.find(2) | |||
34 | yield issue if block_given? |
|
119 | yield issue if block_given? | |
35 | end |
|
120 | end | |
36 | issue.save! |
|
121 | issue.save! | |
37 | issue |
|
122 | issue | |
38 | end |
|
123 | end | |
39 |
|
||||
40 | end |
|
124 | end |
@@ -243,7 +243,10 class ActiveSupport::TestCase | |||||
243 | context "should allow http basic auth using a username and password for #{http_method} #{url}" do |
|
243 | context "should allow http basic auth using a username and password for #{http_method} #{url}" do | |
244 | context "with a valid HTTP authentication" do |
|
244 | context "with a valid HTTP authentication" do | |
245 | setup do |
|
245 | setup do | |
246 | @user = User.generate_with_protected!(:password => 'my_password', :password_confirmation => 'my_password', :admin => true) # Admin so they can access the project |
|
246 | @user = User.generate! do |user| | |
|
247 | user.admin = true | |||
|
248 | user.password = 'my_password' | |||
|
249 | end | |||
247 | send(http_method, url, parameters, credentials(@user.login, 'my_password')) |
|
250 | send(http_method, url, parameters, credentials(@user.login, 'my_password')) | |
248 | end |
|
251 | end | |
249 |
|
252 | |||
@@ -256,7 +259,7 class ActiveSupport::TestCase | |||||
256 |
|
259 | |||
257 | context "with an invalid HTTP authentication" do |
|
260 | context "with an invalid HTTP authentication" do | |
258 | setup do |
|
261 | setup do | |
259 |
@user = User.generate |
|
262 | @user = User.generate! | |
260 | send(http_method, url, parameters, credentials(@user.login, 'wrong_password')) |
|
263 | send(http_method, url, parameters, credentials(@user.login, 'wrong_password')) | |
261 | end |
|
264 | end | |
262 |
|
265 | |||
@@ -297,8 +300,10 class ActiveSupport::TestCase | |||||
297 | context "should allow http basic auth with a key for #{http_method} #{url}" do |
|
300 | context "should allow http basic auth with a key for #{http_method} #{url}" do | |
298 | context "with a valid HTTP authentication using the API token" do |
|
301 | context "with a valid HTTP authentication using the API token" do | |
299 | setup do |
|
302 | setup do | |
300 |
@user = User.generate |
|
303 | @user = User.generate! do |user| | |
301 | @token = Token.generate!(:user => @user, :action => 'api') |
|
304 | user.admin = true | |
|
305 | end | |||
|
306 | @token = Token.create!(:user => @user, :action => 'api') | |||
302 | send(http_method, url, parameters, credentials(@token.value, 'X')) |
|
307 | send(http_method, url, parameters, credentials(@token.value, 'X')) | |
303 | end |
|
308 | end | |
304 |
|
309 | |||
@@ -312,8 +317,8 class ActiveSupport::TestCase | |||||
312 |
|
317 | |||
313 | context "with an invalid HTTP authentication" do |
|
318 | context "with an invalid HTTP authentication" do | |
314 | setup do |
|
319 | setup do | |
315 |
@user = User.generate |
|
320 | @user = User.generate! | |
316 |
@token = Token. |
|
321 | @token = Token.create!(:user => @user, :action => 'feeds') | |
317 | send(http_method, url, parameters, credentials(@token.value, 'X')) |
|
322 | send(http_method, url, parameters, credentials(@token.value, 'X')) | |
318 | end |
|
323 | end | |
319 |
|
324 | |||
@@ -341,8 +346,10 class ActiveSupport::TestCase | |||||
341 | context "should allow key based auth using key=X for #{http_method} #{url}" do |
|
346 | context "should allow key based auth using key=X for #{http_method} #{url}" do | |
342 | context "with a valid api token" do |
|
347 | context "with a valid api token" do | |
343 | setup do |
|
348 | setup do | |
344 |
@user = User.generate |
|
349 | @user = User.generate! do |user| | |
345 | @token = Token.generate!(:user => @user, :action => 'api') |
|
350 | user.admin = true | |
|
351 | end | |||
|
352 | @token = Token.create!(:user => @user, :action => 'api') | |||
346 | # Simple url parse to add on ?key= or &key= |
|
353 | # Simple url parse to add on ?key= or &key= | |
347 | request_url = if url.match(/\?/) |
|
354 | request_url = if url.match(/\?/) | |
348 | url + "&key=#{@token.value}" |
|
355 | url + "&key=#{@token.value}" | |
@@ -362,8 +369,10 class ActiveSupport::TestCase | |||||
362 |
|
369 | |||
363 | context "with an invalid api token" do |
|
370 | context "with an invalid api token" do | |
364 | setup do |
|
371 | setup do | |
365 |
@user = User.generate |
|
372 | @user = User.generate! do |user| | |
366 | @token = Token.generate!(:user => @user, :action => 'feeds') |
|
373 | user.admin = true | |
|
374 | end | |||
|
375 | @token = Token.create!(:user => @user, :action => 'feeds') | |||
367 | # Simple url parse to add on ?key= or &key= |
|
376 | # Simple url parse to add on ?key= or &key= | |
368 | request_url = if url.match(/\?/) |
|
377 | request_url = if url.match(/\?/) | |
369 | url + "&key=#{@token.value}" |
|
378 | url + "&key=#{@token.value}" | |
@@ -383,8 +392,10 class ActiveSupport::TestCase | |||||
383 |
|
392 | |||
384 | context "should allow key based auth using X-Redmine-API-Key header for #{http_method} #{url}" do |
|
393 | context "should allow key based auth using X-Redmine-API-Key header for #{http_method} #{url}" do | |
385 | setup do |
|
394 | setup do | |
386 | @user = User.generate_with_protected!(:admin => true) |
|
395 | @user = User.generate! do |user| | |
387 | @token = Token.generate!(:user => @user, :action => 'api') |
|
396 | user.admin = true | |
|
397 | end | |||
|
398 | @token = Token.create!(:user => @user, :action => 'api') | |||
388 | send(http_method, url, parameters, {'X-Redmine-API-Key' => @token.value.to_s}) |
|
399 | send(http_method, url, parameters, {'X-Redmine-API-Key' => @token.value.to_s}) | |
389 | end |
|
400 | end | |
390 |
|
401 |
@@ -373,13 +373,13 class IssueTest < ActiveSupport::TestCase | |||||
373 | tracker = Tracker.find(1) |
|
373 | tracker = Tracker.find(1) | |
374 | user = User.find(2) |
|
374 | user = User.find(2) | |
375 |
|
375 | |||
376 | issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1) |
|
376 | issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author_id => 1) | |
377 | assert_equal [1, 2], issue.new_statuses_allowed_to(user).map(&:id) |
|
377 | assert_equal [1, 2], issue.new_statuses_allowed_to(user).map(&:id) | |
378 |
|
378 | |||
379 | issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user) |
|
379 | issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user) | |
380 | assert_equal [1, 2, 3, 5], issue.new_statuses_allowed_to(user).map(&:id) |
|
380 | assert_equal [1, 2, 3, 5], issue.new_statuses_allowed_to(user).map(&:id) | |
381 |
|
381 | |||
382 | issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :assigned_to => user) |
|
382 | issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author_id => 1, :assigned_to => user) | |
383 | assert_equal [1, 2, 4, 5], issue.new_statuses_allowed_to(user).map(&:id) |
|
383 | assert_equal [1, 2, 4, 5], issue.new_statuses_allowed_to(user).map(&:id) | |
384 |
|
384 | |||
385 | issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user, :assigned_to => user) |
|
385 | issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user, :assigned_to => user) |
@@ -21,7 +21,7 class Redmine::CipheringTest < ActiveSupport::TestCase | |||||
21 |
|
21 | |||
22 | def test_password_should_be_encrypted |
|
22 | def test_password_should_be_encrypted | |
23 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do |
|
23 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do | |
24 |
r = Repository::Subversion. |
|
24 | r = Repository::Subversion.create!(:password => 'foo', :url => 'file:///tmp', :identifier => 'svn') | |
25 | assert_equal 'foo', r.password |
|
25 | assert_equal 'foo', r.password | |
26 | assert r.read_attribute(:password).match(/\Aaes-256-cbc:.+\Z/) |
|
26 | assert r.read_attribute(:password).match(/\Aaes-256-cbc:.+\Z/) | |
27 | end |
|
27 | end | |
@@ -29,7 +29,7 class Redmine::CipheringTest < ActiveSupport::TestCase | |||||
29 |
|
29 | |||
30 | def test_password_should_be_clear_with_blank_key |
|
30 | def test_password_should_be_clear_with_blank_key | |
31 | Redmine::Configuration.with 'database_cipher_key' => '' do |
|
31 | Redmine::Configuration.with 'database_cipher_key' => '' do | |
32 |
r = Repository::Subversion. |
|
32 | r = Repository::Subversion.create!(:password => 'foo', :url => 'file:///tmp', :identifier => 'svn') | |
33 | assert_equal 'foo', r.password |
|
33 | assert_equal 'foo', r.password | |
34 | assert_equal 'foo', r.read_attribute(:password) |
|
34 | assert_equal 'foo', r.read_attribute(:password) | |
35 | end |
|
35 | end | |
@@ -37,7 +37,7 class Redmine::CipheringTest < ActiveSupport::TestCase | |||||
37 |
|
37 | |||
38 | def test_password_should_be_clear_with_nil_key |
|
38 | def test_password_should_be_clear_with_nil_key | |
39 | Redmine::Configuration.with 'database_cipher_key' => nil do |
|
39 | Redmine::Configuration.with 'database_cipher_key' => nil do | |
40 |
r = Repository::Subversion. |
|
40 | r = Repository::Subversion.create!(:password => 'foo', :url => 'file:///tmp', :identifier => 'svn') | |
41 | assert_equal 'foo', r.password |
|
41 | assert_equal 'foo', r.password | |
42 | assert_equal 'foo', r.read_attribute(:password) |
|
42 | assert_equal 'foo', r.read_attribute(:password) | |
43 | end |
|
43 | end | |
@@ -45,7 +45,7 class Redmine::CipheringTest < ActiveSupport::TestCase | |||||
45 |
|
45 | |||
46 | def test_blank_password_should_be_clear |
|
46 | def test_blank_password_should_be_clear | |
47 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do |
|
47 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do | |
48 |
r = Repository::Subversion. |
|
48 | r = Repository::Subversion.create!(:password => '', :url => 'file:///tmp', :identifier => 'svn') | |
49 | assert_equal '', r.password |
|
49 | assert_equal '', r.password | |
50 | assert_equal '', r.read_attribute(:password) |
|
50 | assert_equal '', r.read_attribute(:password) | |
51 | end |
|
51 | end | |
@@ -53,7 +53,7 class Redmine::CipheringTest < ActiveSupport::TestCase | |||||
53 |
|
53 | |||
54 | def test_unciphered_password_should_be_readable |
|
54 | def test_unciphered_password_should_be_readable | |
55 | Redmine::Configuration.with 'database_cipher_key' => nil do |
|
55 | Redmine::Configuration.with 'database_cipher_key' => nil do | |
56 |
r = Repository::Subversion. |
|
56 | r = Repository::Subversion.create!(:password => 'clear', :url => 'file:///tmp', :identifier => 'svn') | |
57 | end |
|
57 | end | |
58 |
|
58 | |||
59 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do |
|
59 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do | |
@@ -64,7 +64,7 class Redmine::CipheringTest < ActiveSupport::TestCase | |||||
64 |
|
64 | |||
65 | def test_ciphered_password_with_no_cipher_key_configured_should_be_returned_ciphered |
|
65 | def test_ciphered_password_with_no_cipher_key_configured_should_be_returned_ciphered | |
66 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do |
|
66 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do | |
67 |
r = Repository::Subversion. |
|
67 | r = Repository::Subversion.create!(:password => 'clear', :url => 'file:///tmp', :identifier => 'svn') | |
68 | end |
|
68 | end | |
69 |
|
69 | |||
70 | Redmine::Configuration.with 'database_cipher_key' => '' do |
|
70 | Redmine::Configuration.with 'database_cipher_key' => '' do | |
@@ -79,8 +79,8 class Redmine::CipheringTest < ActiveSupport::TestCase | |||||
79 | def test_encrypt_all |
|
79 | def test_encrypt_all | |
80 | Repository.delete_all |
|
80 | Repository.delete_all | |
81 | Redmine::Configuration.with 'database_cipher_key' => nil do |
|
81 | Redmine::Configuration.with 'database_cipher_key' => nil do | |
82 |
Repository::Subversion. |
|
82 | Repository::Subversion.create!(:password => 'foo', :url => 'file:///tmp', :identifier => 'foo') | |
83 |
Repository::Subversion. |
|
83 | Repository::Subversion.create!(:password => 'bar', :url => 'file:///tmp', :identifier => 'bar') | |
84 | end |
|
84 | end | |
85 |
|
85 | |||
86 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do |
|
86 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do | |
@@ -94,8 +94,8 class Redmine::CipheringTest < ActiveSupport::TestCase | |||||
94 | def test_decrypt_all |
|
94 | def test_decrypt_all | |
95 | Repository.delete_all |
|
95 | Repository.delete_all | |
96 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do |
|
96 | Redmine::Configuration.with 'database_cipher_key' => 'secret' do | |
97 |
Repository::Subversion. |
|
97 | Repository::Subversion.create!(:password => 'foo', :url => 'file:///tmp', :identifier => 'foo') | |
98 |
Repository::Subversion. |
|
98 | Repository::Subversion.create!(:password => 'bar', :url => 'file:///tmp', :identifier => 'bar') | |
99 |
|
99 | |||
100 | assert Repository.decrypt_all(:password) |
|
100 | assert Repository.decrypt_all(:password) | |
101 | r = Repository.first(:order => 'id DESC') |
|
101 | r = Repository.first(:order => 'id DESC') |
@@ -160,7 +160,6 class Redmine::Helpers::GanttHelperTest < ActionView::TestCase | |||||
160 | context "assigned to a shared version of another project" do |
|
160 | context "assigned to a shared version of another project" do | |
161 | setup do |
|
161 | setup do | |
162 | p = Project.generate! |
|
162 | p = Project.generate! | |
163 | p.trackers << @tracker |
|
|||
164 | p.enabled_module_names = [:issue_tracking] |
|
163 | p.enabled_module_names = [:issue_tracking] | |
165 | @shared_version = Version.generate!(:sharing => 'system') |
|
164 | @shared_version = Version.generate!(:sharing => 'system') | |
166 | p.versions << @shared_version |
|
165 | p.versions << @shared_version |
@@ -742,7 +742,7 class ProjectTest < ActiveSupport::TestCase | |||||
742 | project = Project.find(1) |
|
742 | project = Project.find(1) | |
743 | system_activity = TimeEntryActivity.find_by_name('Design') |
|
743 | system_activity = TimeEntryActivity.find_by_name('Design') | |
744 | assert system_activity.active? |
|
744 | assert system_activity.active? | |
745 |
overridden_activity = TimeEntryActivity. |
|
745 | overridden_activity = TimeEntryActivity.create!(:name => "Project", :project => project, :parent => system_activity, :active => false) | |
746 | assert overridden_activity.save! |
|
746 | assert overridden_activity.save! | |
747 |
|
747 | |||
748 | assert !project.activities.include?(overridden_activity), "Inactive Project specific Activity not found" |
|
748 | assert !project.activities.include?(overridden_activity), "Inactive Project specific Activity not found" | |
@@ -822,10 +822,10 class ProjectTest < ActiveSupport::TestCase | |||||
822 | :tracker_id => 1, |
|
822 | :tracker_id => 1, | |
823 | :assigned_to_id => 2, |
|
823 | :assigned_to_id => 2, | |
824 | :project_id => @source_project.id) |
|
824 | :project_id => @source_project.id) | |
825 |
source_relation = IssueRelation. |
|
825 | source_relation = IssueRelation.create!(:issue_from => Issue.find(4), | |
826 | :issue_to => second_issue, |
|
826 | :issue_to => second_issue, | |
827 | :relation_type => "relates") |
|
827 | :relation_type => "relates") | |
828 |
source_relation_cross_project = IssueRelation. |
|
828 | source_relation_cross_project = IssueRelation.create!(:issue_from => Issue.find(1), | |
829 | :issue_to => second_issue, |
|
829 | :issue_to => second_issue, | |
830 | :relation_type => "duplicates") |
|
830 | :relation_type => "duplicates") | |
831 |
|
831 | |||
@@ -1104,22 +1104,22 class ProjectTest < ActiveSupport::TestCase | |||||
1104 | @role = Role.generate! |
|
1104 | @role = Role.generate! | |
1105 |
|
1105 | |||
1106 | @user_with_membership_notification = User.generate!(:mail_notification => 'selected') |
|
1106 | @user_with_membership_notification = User.generate!(:mail_notification => 'selected') | |
1107 |
Member. |
|
1107 | Member.create!(:project => @project, :roles => [@role], :principal => @user_with_membership_notification, :mail_notification => true) | |
1108 |
|
1108 | |||
1109 | @all_events_user = User.generate!(:mail_notification => 'all') |
|
1109 | @all_events_user = User.generate!(:mail_notification => 'all') | |
1110 |
Member. |
|
1110 | Member.create!(:project => @project, :roles => [@role], :principal => @all_events_user) | |
1111 |
|
1111 | |||
1112 | @no_events_user = User.generate!(:mail_notification => 'none') |
|
1112 | @no_events_user = User.generate!(:mail_notification => 'none') | |
1113 |
Member. |
|
1113 | Member.create!(:project => @project, :roles => [@role], :principal => @no_events_user) | |
1114 |
|
1114 | |||
1115 | @only_my_events_user = User.generate!(:mail_notification => 'only_my_events') |
|
1115 | @only_my_events_user = User.generate!(:mail_notification => 'only_my_events') | |
1116 |
Member. |
|
1116 | Member.create!(:project => @project, :roles => [@role], :principal => @only_my_events_user) | |
1117 |
|
1117 | |||
1118 | @only_assigned_user = User.generate!(:mail_notification => 'only_assigned') |
|
1118 | @only_assigned_user = User.generate!(:mail_notification => 'only_assigned') | |
1119 |
Member. |
|
1119 | Member.create!(:project => @project, :roles => [@role], :principal => @only_assigned_user) | |
1120 |
|
1120 | |||
1121 | @only_owned_user = User.generate!(:mail_notification => 'only_owner') |
|
1121 | @only_owned_user = User.generate!(:mail_notification => 'only_owner') | |
1122 |
Member. |
|
1122 | Member.create!(:project => @project, :roles => [@role], :principal => @only_owned_user) | |
1123 | end |
|
1123 | end | |
1124 |
|
1124 | |||
1125 | should "include members with a mail notification" do |
|
1125 | should "include members with a mail notification" do |
@@ -670,7 +670,9 class QueryTest < ActiveSupport::TestCase | |||||
670 | end |
|
670 | end | |
671 |
|
671 | |||
672 | def test_issue_count_with_archived_issues |
|
672 | def test_issue_count_with_archived_issues | |
673 |
p = Project.generate! |
|
673 | p = Project.generate! do |project| | |
|
674 | project.status = Project::STATUS_ARCHIVED | |||
|
675 | end | |||
674 | i = Issue.generate!( :project => p, :tracker => p.trackers.first ) |
|
676 | i = Issue.generate!( :project => p, :tracker => p.trackers.first ) | |
675 | assert !i.visible? |
|
677 | assert !i.visible? | |
676 |
|
678 |
@@ -337,8 +337,10 class UserTest < ActiveSupport::TestCase | |||||
337 |
|
337 | |||
338 | def test_destroy_should_nullify_changesets |
|
338 | def test_destroy_should_nullify_changesets | |
339 | changeset = Changeset.create!( |
|
339 | changeset = Changeset.create!( | |
340 |
:repository => Repository::Subversion. |
|
340 | :repository => Repository::Subversion.create!( | |
341 | :project_id => 1 |
|
341 | :project_id => 1, | |
|
342 | :url => 'file:///tmp', | |||
|
343 | :identifier => 'tmp' | |||
342 | ), |
|
344 | ), | |
343 | :revision => '12', |
|
345 | :revision => '12', | |
344 | :committed_on => Time.now, |
|
346 | :committed_on => Time.now, | |
@@ -378,9 +380,9 class UserTest < ActiveSupport::TestCase | |||||
378 | end |
|
380 | end | |
379 |
|
381 | |||
380 | should "select the exact matching user first" do |
|
382 | should "select the exact matching user first" do | |
381 |
case_sensitive_user = User.generate |
|
383 | case_sensitive_user = User.generate! do |user| | |
382 | :login => 'changed', :password => 'admin', |
|
384 | user.password = "admin" | |
383 | :password_confirmation => 'admin') |
|
385 | end | |
384 | # bypass validations to make it appear like existing data |
|
386 | # bypass validations to make it appear like existing data | |
385 | case_sensitive_user.update_attribute(:login, 'ADMIN') |
|
387 | case_sensitive_user.update_attribute(:login, 'ADMIN') | |
386 |
|
388 | |||
@@ -628,7 +630,7 class UserTest < ActiveSupport::TestCase | |||||
628 |
|
630 | |||
629 | should "return the existing api token value" do |
|
631 | should "return the existing api token value" do | |
630 | user = User.generate_with_protected! |
|
632 | user = User.generate_with_protected! | |
631 |
token = Token. |
|
633 | token = Token.create!(:action => 'api') | |
632 | user.api_token = token |
|
634 | user.api_token = token | |
633 | assert user.save |
|
635 | assert user.save | |
634 |
|
636 | |||
@@ -643,7 +645,7 class UserTest < ActiveSupport::TestCase | |||||
643 |
|
645 | |||
644 | should "return nil if the key is found for an inactive user" do |
|
646 | should "return nil if the key is found for an inactive user" do | |
645 | user = User.generate_with_protected!(:status => User::STATUS_LOCKED) |
|
647 | user = User.generate_with_protected!(:status => User::STATUS_LOCKED) | |
646 |
token = Token. |
|
648 | token = Token.create!(:action => 'api') | |
647 | user.api_token = token |
|
649 | user.api_token = token | |
648 | user.save |
|
650 | user.save | |
649 |
|
651 | |||
@@ -652,7 +654,7 class UserTest < ActiveSupport::TestCase | |||||
652 |
|
654 | |||
653 | should "return the user if the key is found for an active user" do |
|
655 | should "return the user if the key is found for an active user" do | |
654 | user = User.generate_with_protected!(:status => User::STATUS_ACTIVE) |
|
656 | user = User.generate_with_protected!(:status => User::STATUS_ACTIVE) | |
655 |
token = Token. |
|
657 | token = Token.create!(:action => 'api') | |
656 | user.api_token = token |
|
658 | user.api_token = token | |
657 | user.save |
|
659 | user.save | |
658 |
|
660 | |||
@@ -823,7 +825,9 class UserTest < ActiveSupport::TestCase | |||||
823 | end |
|
825 | end | |
824 |
|
826 | |||
825 | def test_own_account_deletable_should_be_true_for_an_admin_if_other_admin_exists |
|
827 | def test_own_account_deletable_should_be_true_for_an_admin_if_other_admin_exists | |
826 | User.generate_with_protected(:admin => true) |
|
828 | User.generate! do |user| | |
|
829 | user.admin = true | |||
|
830 | end | |||
827 |
|
831 | |||
828 | with_settings :unsubscribe => '1' do |
|
832 | with_settings :unsubscribe => '1' do | |
829 | assert_equal true, User.find(1).own_account_deletable? |
|
833 | assert_equal true, User.find(1).own_account_deletable? |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now