Fixes #3957 - S/MIME function buttons no longer working in tickets.
This commit is contained in:
parent
469d532b06
commit
30fd5d34da
3 changed files with 44 additions and 24 deletions
|
@ -305,34 +305,38 @@ class ArticleViewItem extends App.ControllerObserver
|
|||
e.stopPropagation()
|
||||
|
||||
article_id = $(e.target).closest('.ticket-article-item').data('id')
|
||||
article = App.TicketArticle.find(article_id)
|
||||
|
||||
@ajax(
|
||||
id: 'retrySecurityProcess'
|
||||
type: 'POST'
|
||||
url: "#{@apiPath}/ticket_articles/#{article_id}/retry_security_process"
|
||||
processData: true
|
||||
success: (data, status, xhr) =>
|
||||
if data.sign.success
|
||||
@notify
|
||||
type: 'success'
|
||||
msg: App.i18n.translateContent('Verify sign success!')
|
||||
else if data.sign.comment
|
||||
comment = App.i18n.translateContent('Verify sign failed!') + ' ' + App.i18n.translateContent(data.sign.comment || '')
|
||||
@notify
|
||||
type: 'error'
|
||||
msg: comment
|
||||
timeout: 2000
|
||||
success: (encryption_data, status, xhr) =>
|
||||
for data in encryption_data
|
||||
continue if article.preferences.security.type isnt data.type
|
||||
|
||||
if data.encryption.success
|
||||
@notify
|
||||
type: 'success'
|
||||
msg: App.i18n.translateContent('Decryption success!')
|
||||
else if data.encryption.comment
|
||||
comment = App.i18n.translateContent('Decryption failed!') + ' ' + App.i18n.translateContent(data.encryption.comment || '')
|
||||
@notify
|
||||
type: 'error'
|
||||
msg: comment
|
||||
timeout: 2000
|
||||
if data.sign.success
|
||||
@notify
|
||||
type: 'success'
|
||||
msg: App.i18n.translateContent('Verify sign success!')
|
||||
else if data.sign.comment
|
||||
comment = App.i18n.translateContent('Verify sign failed!') + ' ' + App.i18n.translateContent(data.sign.comment || '')
|
||||
@notify
|
||||
type: 'error'
|
||||
msg: comment
|
||||
timeout: 2000
|
||||
|
||||
if data.encryption.success
|
||||
@notify
|
||||
type: 'success'
|
||||
msg: App.i18n.translateContent('Decryption success!')
|
||||
else if data.encryption.comment
|
||||
comment = App.i18n.translateContent('Decryption failed!') + ' ' + App.i18n.translateContent(data.encryption.comment || '')
|
||||
@notify
|
||||
type: 'error'
|
||||
msg: comment
|
||||
timeout: 2000
|
||||
|
||||
error: (xhr) =>
|
||||
@notify
|
||||
|
|
|
@ -10,9 +10,11 @@ class SecureMailing
|
|||
end
|
||||
|
||||
def self.retry(article)
|
||||
result = []
|
||||
active_backends.each do |backend|
|
||||
"#{backend}::Retry".constantize.process(article)
|
||||
result << "#{backend}::Retry".constantize.process(article)
|
||||
end
|
||||
result
|
||||
end
|
||||
|
||||
def self.outgoing(mail, security)
|
||||
|
|
|
@ -588,8 +588,7 @@ RSpec.describe 'Ticket zoom', type: :system do
|
|||
end
|
||||
|
||||
context 'certificate not present at time of arrival' do
|
||||
|
||||
it 'retry' do
|
||||
let(:mail) do
|
||||
smime1 = create(:smime_certificate, :with_private, fixture: system_email_address)
|
||||
smime2 = create(:smime_certificate, :with_private, fixture: sender_email_address)
|
||||
|
||||
|
@ -612,6 +611,10 @@ RSpec.describe 'Ticket zoom', type: :system do
|
|||
smime1.destroy
|
||||
smime2.destroy
|
||||
|
||||
mail
|
||||
end
|
||||
|
||||
it 'does retry successfully' do
|
||||
parsed_mail = Channel::EmailParser.new.parse(mail.to_s)
|
||||
ticket, article, _user, _mail = Channel::EmailParser.new.process({ group_id: group.id }, parsed_mail['raw'])
|
||||
expect(Ticket::Article.find(article.id).body).to eq('no visible content')
|
||||
|
@ -624,6 +627,17 @@ RSpec.describe 'Ticket zoom', type: :system do
|
|||
click '.js-securityRetryProcess'
|
||||
expect(page).to have_css('.article-content', text: 'somebody with some text')
|
||||
end
|
||||
|
||||
it 'does fail on retry (S/MIME function buttons no longer working in tickets #3957)' do
|
||||
parsed_mail = Channel::EmailParser.new.parse(mail.to_s)
|
||||
ticket, article, _user, _mail = Channel::EmailParser.new.process({ group_id: group.id }, parsed_mail['raw'])
|
||||
expect(Ticket::Article.find(article.id).body).to eq('no visible content')
|
||||
|
||||
visit "#ticket/zoom/#{ticket.id}"
|
||||
expect(page).to have_no_css('.article-content', text: 'somebody with some text')
|
||||
click '.js-securityRetryProcess'
|
||||
expect(page).to have_css('#notify', text: 'Decryption failed! Unable to find private key to decrypt')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue