Files
2026-04-24 22:01:18 +00:00

145 lines
6.0 KiB
Ruby

# encoding: utf-8
require File.expand_path('../../test_helper', __FILE__)
# require 'helpdesk_controller'
class HelpdeskControllerTest < ActionController::TestCase
fixtures :projects,
:users,
:roles,
:members,
:member_roles,
:issues,
:issue_statuses,
:versions,
:trackers,
:projects_trackers,
:issue_categories,
:enabled_modules,
:enumerations,
:attachments,
:workflows,
:custom_fields,
:custom_values,
:custom_fields_projects,
:custom_fields_trackers,
:time_entries,
:journals,
:journal_details,
:queries
RedmineHelpdesk::TestCase.create_fixtures(Redmine::Plugin.find(:redmine_contacts).directory + '/test/fixtures/', [:contacts,
:contacts_projects,
:contacts_issues,
:deals,
:notes,
:tags,
:taggings,
:queries])
RedmineHelpdesk::TestCase.create_fixtures(Redmine::Plugin.find(:redmine_contacts_helpdesk).directory + '/test/fixtures/', [:journal_messages,
:helpdesk_tickets])
FIXTURES_PATH = Redmine::Plugin.find(:redmine_contacts_helpdesk).directory + '/test/fixtures/helpdesk_mailer'
def setup
RedmineHelpdesk::TestCase.prepare
@controller = HelpdeskController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
User.current = nil
end
def credentials(user, password=nil)
ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user)
end
def test_show_original
@request.session[:user_id] = 1
Setting.default_language = 'en'
a = Attachment.create!(:container => HelpdeskTicket.find(1),
:file => uploaded_file("new_issue_new_contact_ru_2.eml", "message/rfc822"),
:author => User.find(1))
get :show_original, :id => a, :project_id => 1
assert_response :success
assert_template 'attachments/file'
assert_not_nil assigns(:content)
assert_match 'Программа автоматически заменила категории', @response.body
end
def test_should_delete_spam
@request.session[:user_id] = 1
Setting.default_language = 'en'
issue = Issue.new
issue.copy_from(1).save
contact = Contact.create(:first_name => "New contact", :project => Project.find('ecookbook'), :email => "mail@test.new")
user = User.find(1)
issue.helpdesk_ticket = HelpdeskTicket.new(:customer => contact,
:issue => issue,
:from_address => contact.primary_email,
:ticket_date => Time.now)
issue.save!
assert_not_nil customer = issue.customer
delete :delete_spam, :project_id => 1, :issue_id => issue.id
assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook'
assert_nil Contact.find_by_id(contact.id)
assert_nil Issue.find_by_id(issue.id)
assert_match customer.primary_email, HelpdeskSettings["helpdesk_blacklist", '1']
end
def test_should_save_settings
@request.session[:user_id] = 1
Setting.default_language = 'en'
@project = Project.find('ecookbook')
put :save_settings , :project_id => @project.id, "helpdesk_answer_from" => 'test@test.ru', "helpdesk_lifetime" => 60, :helpdesk_protocol => 'pop3', :helpdesk_host => 'pop3.test.ru'
assert_response :redirect
assert_equal('test@test.ru', ContactsSetting["helpdesk_answer_from", @project.id])
assert_equal('60', ContactsSetting["helpdesk_lifetime", @project.id])
assert_equal('pop3', ContactsSetting[:helpdesk_protocol, @project.id])
assert_equal('pop3.test.ru', ContactsSetting[:helpdesk_host, @project.id])
end
def test_should_notify_sender_on_ticket_created_via_api
user = User.find(1)
user.pref[:no_self_notified] = false
user.pref.save
@request.session[:user_id] = 1
@project = Project.find('ecookbook')
Setting.default_language = 'en'
Setting.rest_api_enabled = 1
ContactsSetting["helpdesk_answer_from", @project.id] = 'test@email.from'
ContactsSetting["helpdesk_send_notification", @project.id] = 1
token = Token.create!(:user => User.find(1), :action => 'api', :value => 'topsecret')
ActionMailer::Base.deliveries = []
post :create_ticket,
:format => :xml,
:project_id => @project.id,
:key => token.value,
:ticket => {
:issue => {
:subject => 'test1',
:tracker_id => Tracker.first.id
},
:contact => {
:email => 'test@example.com',
:first_name => 'John'
}
}
assert_response 201
assert_equal(2, ActionMailer::Base.deliveries.count)
assert_equal(['test@example.com'], ActionMailer::Base.deliveries.last.to)
end
private
def uploaded_file(filename, mime)
fixture_file_upload("../../plugins/redmine_contacts_helpdesk/test/fixtures/helpdesk_mailer/#{filename}", mime, true)
end
end