145 lines
6.0 KiB
Ruby
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
|