Maintenance: Updated rubocop(-* gems) to latest version (0.80.0).
This commit is contained in:
parent
ed8a152f28
commit
a976b9fb43
93 changed files with 287 additions and 330 deletions
19
.rubocop.yml
19
.rubocop.yml
|
@ -32,7 +32,7 @@ Rails:
|
||||||
Style/FrozenStringLiteralComment:
|
Style/FrozenStringLiteralComment:
|
||||||
Enabled: false
|
Enabled: false
|
||||||
|
|
||||||
Metrics/LineLength:
|
Layout/LineLength:
|
||||||
Description: 'Limit lines to 80 characters.'
|
Description: 'Limit lines to 80 characters.'
|
||||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#80-character-limits'
|
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#80-character-limits'
|
||||||
Enabled: false
|
Enabled: false
|
||||||
|
@ -106,7 +106,7 @@ Style/MethodDefParentheses:
|
||||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#method-parens'
|
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#method-parens'
|
||||||
Enabled: false
|
Enabled: false
|
||||||
|
|
||||||
Layout/AlignHash:
|
Layout/HashAlignment:
|
||||||
Description: >-
|
Description: >-
|
||||||
Align the elements of a hash literal if they span more than
|
Align the elements of a hash literal if they span more than
|
||||||
one line.
|
one line.
|
||||||
|
@ -155,6 +155,15 @@ Style/PerlBackrefs:
|
||||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers'
|
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers'
|
||||||
Enabled: false
|
Enabled: false
|
||||||
|
|
||||||
|
Style/HashEachMethods:
|
||||||
|
Enabled: true
|
||||||
|
|
||||||
|
Style/HashTransformKeys:
|
||||||
|
Enabled: true
|
||||||
|
|
||||||
|
Style/HashTransformValues:
|
||||||
|
Enabled: true
|
||||||
|
|
||||||
Style/SelfAssignment:
|
Style/SelfAssignment:
|
||||||
Description: >-
|
Description: >-
|
||||||
Checks for places where self-assignment shorthand should have
|
Checks for places where self-assignment shorthand should have
|
||||||
|
@ -162,10 +171,6 @@ Style/SelfAssignment:
|
||||||
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#self-assignment'
|
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#self-assignment'
|
||||||
Enabled: false
|
Enabled: false
|
||||||
|
|
||||||
Style/BracesAroundHashParameters:
|
|
||||||
Description: 'Enforce braces style around hash parameters.'
|
|
||||||
Enabled: false
|
|
||||||
|
|
||||||
Rails/ApplicationRecord:
|
Rails/ApplicationRecord:
|
||||||
Exclude:
|
Exclude:
|
||||||
- 'app/models/application_model.rb'
|
- 'app/models/application_model.rb'
|
||||||
|
@ -210,7 +215,7 @@ Naming/VariableNumber:
|
||||||
Description: 'Use the configured style when numbering variables.'
|
Description: 'Use the configured style when numbering variables.'
|
||||||
Enabled: false
|
Enabled: false
|
||||||
|
|
||||||
Naming/UncommunicativeMethodParamName:
|
Naming/MethodParameterName:
|
||||||
Description: >-
|
Description: >-
|
||||||
Checks for method parameter names that contain capital letters,
|
Checks for method parameter names that contain capital letters,
|
||||||
end in numbers, or do not meet a minimal length.
|
end in numbers, or do not meet a minimal length.
|
||||||
|
|
|
@ -170,6 +170,7 @@ RSpec/ScatteredSetup:
|
||||||
# Offense count: 8
|
# Offense count: 8
|
||||||
RSpec/SubjectStub:
|
RSpec/SubjectStub:
|
||||||
Exclude:
|
Exclude:
|
||||||
|
- 'spec/lib/import/exchange/folder_spec.rb'
|
||||||
- 'spec/models/concerns/has_groups_examples.rb'
|
- 'spec/models/concerns/has_groups_examples.rb'
|
||||||
- 'spec/models/concerns/has_roles_examples.rb'
|
- 'spec/models/concerns/has_roles_examples.rb'
|
||||||
- 'spec/models/job_spec.rb'
|
- 'spec/models/job_spec.rb'
|
||||||
|
|
22
Gemfile.lock
22
Gemfile.lock
|
@ -255,7 +255,7 @@ GEM
|
||||||
ice_cube (0.16.3)
|
ice_cube (0.16.3)
|
||||||
inflection (1.0.0)
|
inflection (1.0.0)
|
||||||
interception (0.5)
|
interception (0.5)
|
||||||
jaro_winkler (1.5.3)
|
jaro_winkler (1.5.4)
|
||||||
json (2.2.0)
|
json (2.2.0)
|
||||||
jwt (2.2.1)
|
jwt (2.2.1)
|
||||||
kgio (2.11.2)
|
kgio (2.11.2)
|
||||||
|
@ -354,8 +354,8 @@ GEM
|
||||||
omniauth-weibo-oauth2 (0.5.2)
|
omniauth-weibo-oauth2 (0.5.2)
|
||||||
omniauth (~> 1.5)
|
omniauth (~> 1.5)
|
||||||
omniauth-oauth2 (>= 1.4.0)
|
omniauth-oauth2 (>= 1.4.0)
|
||||||
parallel (1.17.0)
|
parallel (1.19.1)
|
||||||
parser (2.6.4.0)
|
parser (2.7.0.2)
|
||||||
ast (~> 2.4.0)
|
ast (~> 2.4.0)
|
||||||
pg (0.21.0)
|
pg (0.21.0)
|
||||||
pluginator (1.5.0)
|
pluginator (1.5.0)
|
||||||
|
@ -426,6 +426,7 @@ GEM
|
||||||
mime-types (>= 1.16, < 4.0)
|
mime-types (>= 1.16, < 4.0)
|
||||||
netrc (~> 0.8)
|
netrc (~> 0.8)
|
||||||
retriable (2.1.0)
|
retriable (2.1.0)
|
||||||
|
rexml (3.2.4)
|
||||||
rspec-core (3.8.0)
|
rspec-core (3.8.0)
|
||||||
rspec-support (~> 3.8.0)
|
rspec-support (~> 3.8.0)
|
||||||
rspec-expectations (3.8.2)
|
rspec-expectations (3.8.2)
|
||||||
|
@ -444,20 +445,21 @@ GEM
|
||||||
rspec-support (~> 3.8.0)
|
rspec-support (~> 3.8.0)
|
||||||
rspec-support (3.8.0)
|
rspec-support (3.8.0)
|
||||||
rszr (0.5.2)
|
rszr (0.5.2)
|
||||||
rubocop (0.74.0)
|
rubocop (0.80.0)
|
||||||
jaro_winkler (~> 1.5.1)
|
jaro_winkler (~> 1.5.1)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
parser (>= 2.6)
|
parser (>= 2.7.0.1)
|
||||||
rainbow (>= 2.2.2, < 4.0)
|
rainbow (>= 2.2.2, < 4.0)
|
||||||
|
rexml
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (>= 1.4.0, < 1.7)
|
unicode-display_width (>= 1.4.0, < 1.7)
|
||||||
rubocop-performance (1.4.1)
|
rubocop-performance (1.5.2)
|
||||||
rubocop (>= 0.71.0)
|
rubocop (>= 0.71.0)
|
||||||
rubocop-rails (2.3.2)
|
rubocop-rails (2.4.2)
|
||||||
rack (>= 1.1)
|
rack (>= 1.1)
|
||||||
rubocop (>= 0.72.0)
|
rubocop (>= 0.72.0)
|
||||||
rubocop-rspec (1.35.0)
|
rubocop-rspec (1.38.1)
|
||||||
rubocop (>= 0.60.0)
|
rubocop (>= 0.68.1)
|
||||||
ruby-progressbar (1.10.1)
|
ruby-progressbar (1.10.1)
|
||||||
ruby-saml (1.10.2)
|
ruby-saml (1.10.2)
|
||||||
nokogiri (>= 1.5.10)
|
nokogiri (>= 1.5.10)
|
||||||
|
@ -526,7 +528,7 @@ GEM
|
||||||
unf (0.1.4)
|
unf (0.1.4)
|
||||||
unf_ext
|
unf_ext
|
||||||
unf_ext (0.0.7.5)
|
unf_ext (0.0.7.5)
|
||||||
unicode-display_width (1.6.0)
|
unicode-display_width (1.6.1)
|
||||||
unicorn (5.5.0)
|
unicorn (5.5.0)
|
||||||
kgio (~> 2.6)
|
kgio (~> 2.6)
|
||||||
raindrops (~> 0.7)
|
raindrops (~> 0.7)
|
||||||
|
|
|
@ -66,7 +66,7 @@ class ChannelsSmsController < ApplicationChannelController
|
||||||
|
|
||||||
def channels_config
|
def channels_config
|
||||||
list = []
|
list = []
|
||||||
Dir.glob(Rails.root.join('app', 'models', 'channel', 'driver', 'sms', '*.rb')).each do |path|
|
Dir.glob(Rails.root.join('app/models/channel/driver/sms/*.rb')).each do |path|
|
||||||
filename = File.basename(path)
|
filename = File.basename(path)
|
||||||
require_dependency "channel/driver/sms/#{filename.sub('.rb', '')}"
|
require_dependency "channel/driver/sms/#{filename.sub('.rb', '')}"
|
||||||
list.push Channel.driver_class("sms/#{filename}").definition
|
list.push Channel.driver_class("sms/#{filename}").definition
|
||||||
|
|
|
@ -64,7 +64,7 @@ curl http://localhost/api/v1/monitoring/health_check?token=XXX
|
||||||
end
|
end
|
||||||
|
|
||||||
# unprocessable mail check
|
# unprocessable mail check
|
||||||
directory = Rails.root.join('tmp', 'unprocessable_mail').to_s
|
directory = Rails.root.join('tmp/unprocessable_mail').to_s
|
||||||
if File.exist?(directory)
|
if File.exist?(directory)
|
||||||
count = 0
|
count = 0
|
||||||
Dir.glob("#{directory}/*.eml") do |_entry|
|
Dir.glob("#{directory}/*.eml") do |_entry|
|
||||||
|
|
|
@ -54,7 +54,7 @@ store attachments for this object
|
||||||
self.attachments_buffer = attachments
|
self.attachments_buffer = attachments
|
||||||
|
|
||||||
# update if object already exists
|
# update if object already exists
|
||||||
return if !(id&.nonzero?)
|
return if !id&.nonzero?
|
||||||
|
|
||||||
attachments_buffer_check
|
attachments_buffer_check
|
||||||
end
|
end
|
||||||
|
|
|
@ -86,7 +86,7 @@ returns
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def self.ical_feeds
|
def self.ical_feeds
|
||||||
data = YAML.load_file(Rails.root.join('config', 'holiday_calendars.yml'))
|
data = YAML.load_file(Rails.root.join('config/holiday_calendars.yml'))
|
||||||
url = data['url']
|
url = data['url']
|
||||||
|
|
||||||
data['countries'].map do |country, domain|
|
data['countries'].map do |country, domain|
|
||||||
|
@ -256,7 +256,7 @@ returns
|
||||||
|
|
||||||
# get day and comment by event
|
# get day and comment by event
|
||||||
def self.day_and_comment_by_event(event, start_time)
|
def self.day_and_comment_by_event(event, start_time)
|
||||||
day = "#{start_time.year}-#{format('%02d', start_time.month)}-#{format('%02d', start_time.day)}"
|
day = "#{start_time.year}-#{format('%<month>02d', month: start_time.month)}-#{format('%<day>02d', day: start_time.day)}"
|
||||||
comment = event.summary || event.description
|
comment = event.summary || event.description
|
||||||
comment = comment.to_utf8(fallback: :read_as_sanitized_binary)
|
comment = comment.to_utf8(fallback: :read_as_sanitized_binary)
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ fetch one account
|
||||||
self.last_log_in = result[:notice]
|
self.last_log_in = result[:notice]
|
||||||
preferences[:last_fetch] = Time.zone.now
|
preferences[:last_fetch] = Time.zone.now
|
||||||
save!
|
save!
|
||||||
return true
|
true
|
||||||
rescue => e
|
rescue => e
|
||||||
error = "Can't use Channel::Driver::#{adapter.to_classname}: #{e.inspect}"
|
error = "Can't use Channel::Driver::#{adapter.to_classname}: #{e.inspect}"
|
||||||
logger.error error
|
logger.error error
|
||||||
|
@ -67,7 +67,7 @@ fetch one account
|
||||||
self.last_log_in = error
|
self.last_log_in = error
|
||||||
preferences[:last_fetch] = Time.zone.now
|
preferences[:last_fetch] = Time.zone.now
|
||||||
save!
|
save!
|
||||||
return false
|
false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ stream instance of account
|
||||||
|
|
||||||
# set scheduler job to active
|
# set scheduler job to active
|
||||||
|
|
||||||
return driver_instance
|
driver_instance
|
||||||
rescue => e
|
rescue => e
|
||||||
error = "Can't use Channel::Driver::#{adapter.to_classname}: #{e.inspect}"
|
error = "Can't use Channel::Driver::#{adapter.to_classname}: #{e.inspect}"
|
||||||
logger.error error
|
logger.error error
|
||||||
|
|
|
@ -153,7 +153,7 @@ Check if string is a complete html document. If not, add head and css styles.
|
||||||
|
|
||||||
return html if html.match?(/<html>/i)
|
return html if html.match?(/<html>/i)
|
||||||
|
|
||||||
html_email_body = File.read(Rails.root.join('app', 'views', 'mailer', 'application_wrapper.html.erb').to_s)
|
html_email_body = File.read(Rails.root.join('app/views/mailer/application_wrapper.html.erb').to_s)
|
||||||
|
|
||||||
html_email_body.gsub!('###html_email_css_font###', Setting.get('html_email_css_font'))
|
html_email_body.gsub!('###html_email_css_font###', Setting.get('html_email_css_font'))
|
||||||
|
|
||||||
|
|
|
@ -473,7 +473,7 @@ process unprocessable_mails (tmp/unprocessable_mail/*.eml) again
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def self.process_unprocessable_mails(params = {})
|
def self.process_unprocessable_mails(params = {})
|
||||||
path = Rails.root.join('tmp', 'unprocessable_mail')
|
path = Rails.root.join('tmp/unprocessable_mail')
|
||||||
files = []
|
files = []
|
||||||
Dir.glob("#{path}/*.eml") do |entry|
|
Dir.glob("#{path}/*.eml") do |entry|
|
||||||
ticket, _article, _user, _mail = Channel::EmailParser.new.process(params, IO.binread(entry))
|
ticket, _article, _user, _mail = Channel::EmailParser.new.process(params, IO.binread(entry))
|
||||||
|
@ -847,7 +847,7 @@ process unprocessable_mails (tmp/unprocessable_mail/*.eml) again
|
||||||
mail = OpenStruct.new
|
mail = OpenStruct.new
|
||||||
mail.from_display_name = parsed_incoming_mail[:from_display_name]
|
mail.from_display_name = parsed_incoming_mail[:from_display_name]
|
||||||
mail.subject = parsed_incoming_mail[:subject]
|
mail.subject = parsed_incoming_mail[:subject]
|
||||||
mail.msg_size = format('%.2f', raw_incoming_mail.size.to_f / 1024 / 1024)
|
mail.msg_size = format('%<MB>.2f', MB: raw_incoming_mail.size.to_f / 1024 / 1024)
|
||||||
|
|
||||||
reply = NotificationFactory::Mailer.template(
|
reply = NotificationFactory::Mailer.template(
|
||||||
template: 'email_oversized',
|
template: 'email_oversized',
|
||||||
|
|
|
@ -25,7 +25,7 @@ class ObjectManager::Attribute < ApplicationModel
|
||||||
belongs_to :object_lookup, optional: true
|
belongs_to :object_lookup, optional: true
|
||||||
|
|
||||||
validates :name, presence: true
|
validates :name, presence: true
|
||||||
validates :data_type, inclusion: { in: DATA_TYPES, msg: '%{value} is not a valid data type' }
|
validates :data_type, inclusion: { in: DATA_TYPES, msg: '%{value} is not a valid data type' } # rubocop:disable Style/FormatStringToken
|
||||||
validate :data_option_must_have_appropriate_values
|
validate :data_option_must_have_appropriate_values
|
||||||
validate :data_type_must_not_change, on: :update
|
validate :data_type_must_not_change, on: :update
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ class Store::Provider::File
|
||||||
def self.get_location(sha)
|
def self.get_location(sha)
|
||||||
|
|
||||||
# generate directory
|
# generate directory
|
||||||
base = Rails.root.join('storage', 'fs').to_s
|
base = Rails.root.join('storage/fs').to_s
|
||||||
parts = []
|
parts = []
|
||||||
length1 = 4
|
length1 = 4
|
||||||
length2 = 5
|
length2 = 5
|
||||||
|
|
|
@ -18,7 +18,7 @@ module Ticket::Number::Date
|
||||||
counter.update(content: "#{counter_increment};#{date}")
|
counter.update(content: "#{counter_increment};#{date}")
|
||||||
end
|
end
|
||||||
|
|
||||||
number = date.delete('-') + Setting.get('system_id').to_s + format('%04d', counter.content.split(';').first)
|
number = date.delete('-') + Setting.get('system_id').to_s + format('%<counter>04d', counter: counter.content.split(';').first)
|
||||||
number += checksum(number) if config[:checksum]
|
number += checksum(number) if config[:checksum]
|
||||||
|
|
||||||
number
|
number
|
||||||
|
|
|
@ -246,15 +246,15 @@ or
|
||||||
record = Translation.where(locale: locale, source: 'timestamp', format: 'time').pluck(:target).first
|
record = Translation.where(locale: locale, source: 'timestamp', format: 'time').pluck(:target).first
|
||||||
return timestamp.to_s if !record
|
return timestamp.to_s if !record
|
||||||
|
|
||||||
record.sub!('dd', format('%02d', timestamp.day))
|
record.sub!('dd', format('%<day>02d', day: timestamp.day))
|
||||||
record.sub!('d', timestamp.day.to_s)
|
record.sub!('d', timestamp.day.to_s)
|
||||||
record.sub!('mm', format('%02d', timestamp.month))
|
record.sub!('mm', format('%<month>02d', month: timestamp.month))
|
||||||
record.sub!('m', timestamp.month.to_s)
|
record.sub!('m', timestamp.month.to_s)
|
||||||
record.sub!('yyyy', timestamp.year.to_s)
|
record.sub!('yyyy', timestamp.year.to_s)
|
||||||
record.sub!('yy', timestamp.year.to_s.last(2))
|
record.sub!('yy', timestamp.year.to_s.last(2))
|
||||||
record.sub!('SS', format('%02d', timestamp.sec.to_s))
|
record.sub!('SS', format('%<second>02d', second: timestamp.sec.to_s))
|
||||||
record.sub!('MM', format('%02d', timestamp.min.to_s))
|
record.sub!('MM', format('%<minute>02d', minute: timestamp.min.to_s))
|
||||||
record.sub!('HH', format('%02d', timestamp.hour.to_s))
|
record.sub!('HH', format('%<hour>02d', hour: timestamp.hour.to_s))
|
||||||
"#{record} (#{timezone})"
|
"#{record} (#{timezone})"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -288,9 +288,9 @@ or
|
||||||
record = Translation.where(locale: locale, source: 'date', format: 'time').pluck(:target).first
|
record = Translation.where(locale: locale, source: 'date', format: 'time').pluck(:target).first
|
||||||
return date.to_s if !record
|
return date.to_s if !record
|
||||||
|
|
||||||
record.sub!('dd', format('%02d', date.day))
|
record.sub!('dd', format('%<day>02d', day: date.day))
|
||||||
record.sub!('d', date.day.to_s)
|
record.sub!('d', date.day.to_s)
|
||||||
record.sub!('mm', format('%02d', date.month))
|
record.sub!('mm', format('%<month>02d', month: date.month))
|
||||||
record.sub!('m', date.month.to_s)
|
record.sub!('m', date.month.to_s)
|
||||||
record.sub!('yyyy', date.year.to_s)
|
record.sub!('yyyy', date.year.to_s)
|
||||||
record.sub!('yy', date.year.to_s.last(2))
|
record.sub!('yy', date.year.to_s.last(2))
|
||||||
|
@ -313,7 +313,7 @@ all:
|
||||||
|
|
||||||
def self.load_from_file(dedicated_locale = nil)
|
def self.load_from_file(dedicated_locale = nil)
|
||||||
version = Version.get
|
version = Version.get
|
||||||
directory = Rails.root.join('config', 'translations')
|
directory = Rails.root.join('config/translations')
|
||||||
locals_to_sync(dedicated_locale).each do |locale|
|
locals_to_sync(dedicated_locale).each do |locale|
|
||||||
file = Rails.root.join(directory, "#{locale}-#{version}.yml")
|
file = Rails.root.join(directory, "#{locale}-#{version}.yml")
|
||||||
return false if !File.exist?(file)
|
return false if !File.exist?(file)
|
||||||
|
@ -358,7 +358,7 @@ all:
|
||||||
)
|
)
|
||||||
raise "Can't load translations from #{url}: #{result.error}" if !result.success?
|
raise "Can't load translations from #{url}: #{result.error}" if !result.success?
|
||||||
|
|
||||||
directory = Rails.root.join('config', 'translations')
|
directory = Rails.root.join('config/translations')
|
||||||
if !File.directory?(directory)
|
if !File.directory?(directory)
|
||||||
Dir.mkdir(directory, 0o755)
|
Dir.mkdir(directory, 0o755)
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,7 +14,7 @@ Rails.application.configure do
|
||||||
|
|
||||||
# Enable/disable caching. By default caching is disabled.
|
# Enable/disable caching. By default caching is disabled.
|
||||||
# Run rails dev:cache to toggle caching.
|
# Run rails dev:cache to toggle caching.
|
||||||
if Rails.root.join('tmp', 'caching-dev.txt').exist?
|
if Rails.root.join('tmp/caching-dev.txt').exist?
|
||||||
config.action_controller.perform_caching = true
|
config.action_controller.perform_caching = true
|
||||||
|
|
||||||
config.public_file_server.headers = {
|
config.public_file_server.headers = {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# load all core_ext extensions
|
# load all core_ext extensions
|
||||||
Dir.glob( Rails.root.join('lib', 'core_ext', '**', '*') ).each do |file|
|
Dir.glob( Rails.root.join('lib/core_ext/**/*') ).sort.each do |file|
|
||||||
if File.file?(file)
|
if File.file?(file)
|
||||||
require file
|
require file
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Dir[ Rails.root.join('lib', 'omniauth', '*') ].each do |file|
|
Dir[ Rails.root.join('lib/omniauth/*') ].sort.each do |file|
|
||||||
if File.file?(file)
|
if File.file?(file)
|
||||||
require file
|
require file
|
||||||
end
|
end
|
||||||
|
|
|
@ -60,7 +60,7 @@ class String
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def to_filename
|
def to_filename
|
||||||
camel_cased_word = "#{self}" # rubocop:disable Style/UnneededInterpolation
|
camel_cased_word = dup
|
||||||
camel_cased_word.gsub(/::/, '/')
|
camel_cased_word.gsub(/::/, '/')
|
||||||
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
||||||
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
||||||
|
@ -77,7 +77,7 @@ class String
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def to_classname
|
def to_classname
|
||||||
camel_cased_word = "#{self}" # rubocop:disable Style/UnneededInterpolation
|
camel_cased_word = dup
|
||||||
camel_cased_word.gsub!(/\.rb$/, '')
|
camel_cased_word.gsub!(/\.rb$/, '')
|
||||||
camel_cased_word.split('/').map(&:camelize).join('::')
|
camel_cased_word.split('/').map(&:camelize).join('::')
|
||||||
end
|
end
|
||||||
|
@ -109,7 +109,7 @@ class String
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def html2text(string_only = false, strict = false)
|
def html2text(string_only = false, strict = false)
|
||||||
string = "#{self}" # rubocop:disable Style/UnneededInterpolation
|
string = dup
|
||||||
|
|
||||||
# in case of invalid encoding, strip invalid chars
|
# in case of invalid encoding, strip invalid chars
|
||||||
# see also test/data/mail/mail021.box
|
# see also test/data/mail/mail021.box
|
||||||
|
@ -322,7 +322,7 @@ class String
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def html2html_strict
|
def html2html_strict
|
||||||
string = "#{self}" # rubocop:disable Style/UnneededInterpolation
|
string = dup
|
||||||
string = HtmlSanitizer.cleanup_replace_tags(string)
|
string = HtmlSanitizer.cleanup_replace_tags(string)
|
||||||
string = HtmlSanitizer.strict(string, true).strip
|
string = HtmlSanitizer.strict(string, true).strip
|
||||||
string = HtmlSanitizer.cleanup(string).strip
|
string = HtmlSanitizer.cleanup(string).strip
|
||||||
|
|
|
@ -176,7 +176,7 @@ satinize html string based on whiltelist
|
||||||
# remove attributes if not whitelisted
|
# remove attributes if not whitelisted
|
||||||
node.each do |attribute, _value|
|
node.each do |attribute, _value|
|
||||||
attribute_name = attribute.downcase
|
attribute_name = attribute.downcase
|
||||||
next if attributes_whitelist[:all].include?(attribute_name) || (attributes_whitelist[node.name]&.include?(attribute_name))
|
next if attributes_whitelist[:all].include?(attribute_name) || attributes_whitelist[node.name]&.include?(attribute_name)
|
||||||
|
|
||||||
node.delete(attribute)
|
node.delete(attribute)
|
||||||
end
|
end
|
||||||
|
|
|
@ -27,7 +27,7 @@ returns
|
||||||
def self.all
|
def self.all
|
||||||
@all ||= begin
|
@all ||= begin
|
||||||
all = {}
|
all = {}
|
||||||
dir = Rails.root.join('app', 'models').to_s
|
dir = Rails.root.join('app/models').to_s
|
||||||
tables = ActiveRecord::Base.connection.tables
|
tables = ActiveRecord::Base.connection.tables
|
||||||
Dir.glob("#{dir}/**/*.rb") do |entry|
|
Dir.glob("#{dir}/**/*.rb") do |entry|
|
||||||
next if entry.match?(/application_model/i)
|
next if entry.match?(/application_model/i)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
module NotificationFactory
|
module NotificationFactory
|
||||||
TEMPLATE_PATH_STRING = Rails.root.join('app', 'views', '%<type>s', '%<template>s', '%<filename>s').to_s.freeze
|
TEMPLATE_PATH_STRING = Rails.root.join('app/views/%<type>s/%<template>s/%<filename>s').to_s.freeze
|
||||||
APPLICATION_TEMPLATE_PATH_STRING = Rails.root.join('app', 'views', '%<type>s', 'application.%<format>s.erb').to_s.freeze
|
APPLICATION_TEMPLATE_PATH_STRING = Rails.root.join('app/views/%<type>s/application.%<format>s.erb').to_s.freeze
|
||||||
|
|
||||||
=begin
|
=begin
|
||||||
|
|
||||||
|
|
|
@ -462,10 +462,10 @@ returns
|
||||||
return if message.blank?
|
return if message.blank?
|
||||||
|
|
||||||
begin
|
begin
|
||||||
return JSON.parse(message)
|
JSON.parse(message)
|
||||||
rescue => e
|
rescue => e
|
||||||
log('error', "can't parse queue message: #{message}, #{e.inspect}")
|
log('error', "can't parse queue message: #{message}, #{e.inspect}")
|
||||||
return
|
nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ class Sessions::Event
|
||||||
rescue => e
|
rescue => e
|
||||||
Rails.logger.error e.inspect
|
Rails.logger.error e.inspect
|
||||||
Rails.logger.error e.backtrace
|
Rails.logger.error e.backtrace
|
||||||
return { event: 'error', data: { error: e.message, payload: params[:payload] } }
|
{ event: 'error', data: { error: e.message, payload: params[:payload] } }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -308,7 +308,7 @@ end
|
||||||
|
|
||||||
def es_version_supported?
|
def es_version_supported?
|
||||||
version_split = es_version.split('.')
|
version_split = es_version.split('.')
|
||||||
version = "#{version_split[0]}#{format('%03d', version_split[1])}#{format('%03d', version_split[2])}".to_i
|
version = "#{version_split[0]}#{format('%<minor>03d', minor: version_split[1])}#{format('%<patch>03d', patch: version_split[2])}".to_i
|
||||||
|
|
||||||
# only versions greater/equal than 5.6.0 are supported
|
# only versions greater/equal than 5.6.0 are supported
|
||||||
return if version < 5_006_000
|
return if version < 5_006_000
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace :zammad do
|
||||||
namespace :app do
|
namespace :app do
|
||||||
|
|
||||||
desc 'Starts the application and uses BROWSER_PORT, RAILS_ENV and WS_PORT ENVs'
|
desc 'Starts the application and uses BROWSER_PORT, RAILS_ENV and WS_PORT ENVs'
|
||||||
task :start do
|
task :start do # rubocop:disable Rails/RakeEnvironment
|
||||||
Rake::Task['zammad:ci:service:puma:start'].invoke(ENV['BROWSER_PORT'], ENV['RAILS_ENV'])
|
Rake::Task['zammad:ci:service:puma:start'].invoke(ENV['BROWSER_PORT'], ENV['RAILS_ENV'])
|
||||||
Rake::Task['zammad:ci:service:websocket:start'].invoke(ENV['WS_PORT'])
|
Rake::Task['zammad:ci:service:websocket:start'].invoke(ENV['WS_PORT'])
|
||||||
Rake::Task['zammad:ci:service:scheduler:start'].invoke
|
Rake::Task['zammad:ci:service:scheduler:start'].invoke
|
||||||
|
|
|
@ -7,7 +7,7 @@ namespace :zammad do
|
||||||
namespace :puma do
|
namespace :puma do
|
||||||
|
|
||||||
desc 'Starts the puma application webserver'
|
desc 'Starts the puma application webserver'
|
||||||
task :start, [:port, :env] do |_task, args|
|
task :start, [:port, :env] do |_task, args| # rubocop:disable Rails/RakeEnvironment
|
||||||
|
|
||||||
port = args.fetch(:port, '3000')
|
port = args.fetch(:port, '3000')
|
||||||
env = args.fetch(:env, 'production')
|
env = args.fetch(:env, 'production')
|
||||||
|
|
|
@ -7,9 +7,9 @@ namespace :zammad do
|
||||||
namespace :puma do
|
namespace :puma do
|
||||||
|
|
||||||
desc 'Stops the puma application webserver'
|
desc 'Stops the puma application webserver'
|
||||||
task :stop do
|
task :stop do # rubocop:disable Rails/RakeEnvironment
|
||||||
|
|
||||||
file = Rails.root.join('tmp', 'pids', 'server.pid')
|
file = Rails.root.join('tmp/pids/server.pid')
|
||||||
pid = File.read(file).to_i
|
pid = File.read(file).to_i
|
||||||
|
|
||||||
Process.kill('SIGTERM', pid)
|
Process.kill('SIGTERM', pid)
|
||||||
|
|
|
@ -7,7 +7,7 @@ namespace :zammad do
|
||||||
namespace :scheduler do
|
namespace :scheduler do
|
||||||
|
|
||||||
desc 'Starts the scheduler'
|
desc 'Starts the scheduler'
|
||||||
task :start do
|
task :start do # rubocop:disable Rails/RakeEnvironment
|
||||||
|
|
||||||
command = [
|
command = [
|
||||||
'bundle',
|
'bundle',
|
||||||
|
|
|
@ -7,7 +7,7 @@ namespace :zammad do
|
||||||
namespace :scheduler do
|
namespace :scheduler do
|
||||||
|
|
||||||
desc 'Stops the scheduler'
|
desc 'Stops the scheduler'
|
||||||
task :stop do
|
task :stop do # rubocop:disable Rails/RakeEnvironment
|
||||||
|
|
||||||
command = [
|
command = [
|
||||||
'bundle',
|
'bundle',
|
||||||
|
|
|
@ -7,7 +7,7 @@ namespace :zammad do
|
||||||
namespace :websocket do
|
namespace :websocket do
|
||||||
|
|
||||||
desc 'Starts the websocket server'
|
desc 'Starts the websocket server'
|
||||||
task :start, [:port] do |_task, args|
|
task :start, [:port] do |_task, args| # rubocop:disable Rails/RakeEnvironment
|
||||||
|
|
||||||
port = args.fetch(:port, '6042')
|
port = args.fetch(:port, '6042')
|
||||||
command = [
|
command = [
|
||||||
|
|
|
@ -7,7 +7,7 @@ namespace :zammad do
|
||||||
namespace :websocket do
|
namespace :websocket do
|
||||||
|
|
||||||
desc 'Stops the websocket server'
|
desc 'Stops the websocket server'
|
||||||
task :stop do
|
task :stop do # rubocop:disable Rails/RakeEnvironment
|
||||||
|
|
||||||
command = [
|
command = [
|
||||||
'bundle',
|
'bundle',
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace :zammad do
|
||||||
namespace :test do
|
namespace :test do
|
||||||
|
|
||||||
desc 'Stops all of Zammads services and exists the rake task with exit code 1'
|
desc 'Stops all of Zammads services and exists the rake task with exit code 1'
|
||||||
task :fail, [:no_app] do |_task, args|
|
task :fail, [:no_app] do |_task, args| # rubocop:disable Rails/RakeEnvironment
|
||||||
Rake::Task['zammad:ci:test:stop'].invoke if args[:no_app].blank?
|
Rake::Task['zammad:ci:test:stop'].invoke if args[:no_app].blank?
|
||||||
abort('Abort further test processing')
|
abort('Abort further test processing')
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace :zammad do
|
||||||
namespace :test do
|
namespace :test do
|
||||||
|
|
||||||
desc 'Prepares Zammad system for CI env'
|
desc 'Prepares Zammad system for CI env'
|
||||||
task :prepare, [:elasticsearch] do |_task, args|
|
task :prepare, [:elasticsearch] do |_task, args| # rubocop:disable Rails/RakeEnvironment
|
||||||
ENV['RAILS_ENV'] ||= 'production'
|
ENV['RAILS_ENV'] ||= 'production'
|
||||||
ENV['DISABLE_DATABASE_ENVIRONMENT_CHECK'] = 'true'
|
ENV['DISABLE_DATABASE_ENVIRONMENT_CHECK'] = 'true'
|
||||||
# we have to enforce the env
|
# we have to enforce the env
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace :zammad do
|
||||||
namespace :test do
|
namespace :test do
|
||||||
|
|
||||||
desc 'Starts all of Zammads services for CI test'
|
desc 'Starts all of Zammads services for CI test'
|
||||||
task :start, [:elasticsearch] do |_task, args|
|
task :start, [:elasticsearch] do |_task, args| # rubocop:disable Rails/RakeEnvironment
|
||||||
Rake::Task['zammad:ci:test:prepare'].invoke(args[:elasticsearch])
|
Rake::Task['zammad:ci:test:prepare'].invoke(args[:elasticsearch])
|
||||||
Rake::Task['zammad:ci:app:start'].invoke
|
Rake::Task['zammad:ci:app:start'].invoke
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace :zammad do
|
||||||
namespace :test do
|
namespace :test do
|
||||||
|
|
||||||
desc 'Stop of all Zammad services and cleans up the database(s)'
|
desc 'Stop of all Zammad services and cleans up the database(s)'
|
||||||
task :stop, [:no_app] do |_task, args|
|
task :stop, [:no_app] do |_task, args| # rubocop:disable Rails/RakeEnvironment
|
||||||
ENV['RAILS_ENV'] ||= 'production'
|
ENV['RAILS_ENV'] ||= 'production'
|
||||||
ENV['DISABLE_DATABASE_ENVIRONMENT_CHECK'] = 'true'
|
ENV['DISABLE_DATABASE_ENVIRONMENT_CHECK'] = 'true'
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@ namespace :zammad do
|
||||||
namespace :flush do
|
namespace :flush do
|
||||||
|
|
||||||
desc 'Flushes all caches'
|
desc 'Flushes all caches'
|
||||||
task :cache do
|
task :cache do # rubocop:disable Rails/RakeEnvironment
|
||||||
FileUtils.rm_rf(Rails.root.join('tmp', 'cache*'))
|
FileUtils.rm_rf(Rails.root.join('tmp/cache*'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace :zammad do
|
||||||
namespace :log do
|
namespace :log do
|
||||||
|
|
||||||
desc 'Flushes all scheduler log files'
|
desc 'Flushes all scheduler log files'
|
||||||
task :scheduler do
|
task :scheduler do # rubocop:disable Rails/RakeEnvironment
|
||||||
%w[err out].each do |suffix|
|
%w[err out].each do |suffix|
|
||||||
File.write(Rails.root.join('log', "scheduler_#{suffix}.log"), '')
|
File.write(Rails.root.join('log', "scheduler_#{suffix}.log"), '')
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace :zammad do
|
||||||
namespace :log do
|
namespace :log do
|
||||||
|
|
||||||
desc 'Flushes the log Rails file of the given or active environment'
|
desc 'Flushes the log Rails file of the given or active environment'
|
||||||
task :rails, [:env] do |_task, args|
|
task :rails, [:env] do |_task, args| # rubocop:disable Rails/RakeEnvironment
|
||||||
env = args.fetch(:env, Rails.env)
|
env = args.fetch(:env, Rails.env)
|
||||||
File.write(Rails.root.join('log', "#{env}.log"), '')
|
File.write(Rails.root.join('log', "#{env}.log"), '')
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace :zammad do
|
||||||
namespace :log do
|
namespace :log do
|
||||||
|
|
||||||
desc 'Flushes all websocket server log files'
|
desc 'Flushes all websocket server log files'
|
||||||
task :websocket do
|
task :websocket do # rubocop:disable Rails/RakeEnvironment
|
||||||
%w[err out].each do |suffix|
|
%w[err out].each do |suffix|
|
||||||
File.write(Rails.root.join('log', "websocket-server_#{suffix}.log"), '')
|
File.write(Rails.root.join('log', "websocket-server_#{suffix}.log"), '')
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,7 @@ namespace :zammad do
|
||||||
namespace :setup do
|
namespace :setup do
|
||||||
|
|
||||||
desc 'Copies the database config template file to config/database.yml'
|
desc 'Copies the database config template file to config/database.yml'
|
||||||
task :db_config do
|
task :db_config do # rubocop:disable Rails/RakeEnvironment
|
||||||
|
|
||||||
config_dir = Rails.root.join('config')
|
config_dir = Rails.root.join('config')
|
||||||
template = config_dir.join('database', 'database.yml')
|
template = config_dir.join('database', 'database.yml')
|
||||||
|
|
|
@ -9,7 +9,7 @@ class Twitter::Streaming::ConnectionCustom < Twitter::Streaming::Connection
|
||||||
|
|
||||||
ssl_client.connect
|
ssl_client.connect
|
||||||
request.stream(ssl_client)
|
request.stream(ssl_client)
|
||||||
while body = ssl_client.readpartial(1024) # rubocop:disable AssignmentInCondition
|
while body = ssl_client.readpartial(1024) # rubocop:disable Lint/AssignmentInCondition
|
||||||
response << body
|
response << body
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -68,7 +68,7 @@ returns
|
||||||
end
|
end
|
||||||
rescue => e
|
rescue => e
|
||||||
log(url, request, nil, options)
|
log(url, request, nil, options)
|
||||||
return Result.new(
|
Result.new(
|
||||||
error: e.inspect,
|
error: e.inspect,
|
||||||
success: false,
|
success: false,
|
||||||
code: 0,
|
code: 0,
|
||||||
|
@ -124,7 +124,7 @@ returns
|
||||||
end
|
end
|
||||||
rescue => e
|
rescue => e
|
||||||
log(url, request, nil, options)
|
log(url, request, nil, options)
|
||||||
return Result.new(
|
Result.new(
|
||||||
error: e.inspect,
|
error: e.inspect,
|
||||||
success: false,
|
success: false,
|
||||||
code: 0,
|
code: 0,
|
||||||
|
@ -179,7 +179,7 @@ returns
|
||||||
end
|
end
|
||||||
rescue => e
|
rescue => e
|
||||||
log(url, request, nil, options)
|
log(url, request, nil, options)
|
||||||
return Result.new(
|
Result.new(
|
||||||
error: e.inspect,
|
error: e.inspect,
|
||||||
success: false,
|
success: false,
|
||||||
code: 0,
|
code: 0,
|
||||||
|
@ -226,7 +226,7 @@ returns
|
||||||
end
|
end
|
||||||
rescue => e
|
rescue => e
|
||||||
log(url, request, nil, options)
|
log(url, request, nil, options)
|
||||||
return Result.new(
|
Result.new(
|
||||||
error: e.inspect,
|
error: e.inspect,
|
||||||
success: false,
|
success: false,
|
||||||
code: 0,
|
code: 0,
|
||||||
|
|
|
@ -42,7 +42,7 @@ module Zammad
|
||||||
MSG
|
MSG
|
||||||
end
|
end
|
||||||
# Setting.get will fail if 'settings' table does not exist
|
# Setting.get will fail if 'settings' table does not exist
|
||||||
rescue ActiveRecord::StatementInvalid # rubocop:disable Lint/HandleExceptions
|
rescue ActiveRecord::StatementInvalid # rubocop:disable Lint/SuppressedException
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.connection
|
def self.connection
|
||||||
|
|
|
@ -6,7 +6,7 @@ RSpec.describe Auth::Base do
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:instance) { described_class.new({ adapter: described_class.name }) }
|
let(:instance) { described_class.new({ adapter: described_class.name }) }
|
||||||
|
|
||||||
context '#valid?' do
|
describe '#valid?' do
|
||||||
it_behaves_like 'Auth backend'
|
it_behaves_like 'Auth backend'
|
||||||
|
|
||||||
it "requires an implementation of the 'valid?' method" do
|
it "requires an implementation of the 'valid?' method" do
|
||||||
|
|
|
@ -6,7 +6,7 @@ RSpec.describe Auth::Developer do
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:instance) { described_class.new({ adapter: described_class.name }) }
|
let(:instance) { described_class.new({ adapter: described_class.name }) }
|
||||||
|
|
||||||
context '#valid?' do
|
describe '#valid?' do
|
||||||
it_behaves_like 'Auth backend'
|
it_behaves_like 'Auth backend'
|
||||||
|
|
||||||
it "authenticates users with password 'test'" do
|
it "authenticates users with password 'test'" do
|
||||||
|
|
|
@ -7,7 +7,7 @@ RSpec.describe Auth::Internal do
|
||||||
let(:user) { create(:user, password: password) }
|
let(:user) { create(:user, password: password) }
|
||||||
let(:instance) { described_class.new({ adapter: described_class.name }) }
|
let(:instance) { described_class.new({ adapter: described_class.name }) }
|
||||||
|
|
||||||
context '#valid?' do
|
describe '#valid?' do
|
||||||
it_behaves_like 'Auth backend'
|
it_behaves_like 'Auth backend'
|
||||||
|
|
||||||
it 'authenticates via password' do
|
it 'authenticates via password' do
|
||||||
|
|
|
@ -8,7 +8,7 @@ RSpec.describe ::Auth::Ldap do
|
||||||
let(:password) { 'somepassword' }
|
let(:password) { 'somepassword' }
|
||||||
let(:instance) { described_class.new({ adapter: described_class.name }) }
|
let(:instance) { described_class.new({ adapter: described_class.name }) }
|
||||||
|
|
||||||
context '#valid?' do
|
describe '#valid?' do
|
||||||
it_behaves_like 'Auth backend'
|
it_behaves_like 'Auth backend'
|
||||||
|
|
||||||
it 'authenticates users' do
|
it 'authenticates users' do
|
||||||
|
|
|
@ -2,7 +2,7 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Auth do
|
RSpec.describe Auth do
|
||||||
|
|
||||||
context '.can_login?' do
|
describe '.can_login?' do
|
||||||
it 'responds to can_login?' do
|
it 'responds to can_login?' do
|
||||||
expect(described_class).to respond_to(:can_login?)
|
expect(described_class).to respond_to(:can_login?)
|
||||||
end
|
end
|
||||||
|
@ -34,7 +34,7 @@ RSpec.describe Auth do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.valid?' do
|
describe '.valid?' do
|
||||||
it 'responds to valid?' do
|
it 'responds to valid?' do
|
||||||
expect(described_class).to respond_to(:valid?)
|
expect(described_class).to respond_to(:valid?)
|
||||||
end
|
end
|
||||||
|
@ -47,7 +47,7 @@ RSpec.describe Auth do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.backends' do
|
describe '.backends' do
|
||||||
it 'responds to backends' do
|
it 'responds to backends' do
|
||||||
expect(described_class).to respond_to(:backends)
|
expect(described_class).to respond_to(:backends)
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,7 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ExternalSync do
|
RSpec.describe ExternalSync do
|
||||||
|
|
||||||
context '#changed?' do
|
describe '#changed?' do
|
||||||
|
|
||||||
it 'keeps ActiveRecord instance unchanged on local but no remote changes' do
|
it 'keeps ActiveRecord instance unchanged on local but no remote changes' do
|
||||||
object = create(:group)
|
object = create(:group)
|
||||||
|
@ -68,7 +68,7 @@ RSpec.describe ExternalSync do
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#map' do
|
describe '#map' do
|
||||||
it 'maps to symbol keys' do
|
it 'maps to symbol keys' do
|
||||||
mapping = {
|
mapping = {
|
||||||
'key' => 'key'
|
'key' => 'key'
|
||||||
|
|
|
@ -6,12 +6,15 @@ RSpec.shared_examples 'Import::BaseFactory' do
|
||||||
it 'responds to pre_import_hook' do
|
it 'responds to pre_import_hook' do
|
||||||
expect(described_class).to respond_to('pre_import_hook')
|
expect(described_class).to respond_to('pre_import_hook')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'responds to post_import_hook' do
|
it 'responds to post_import_hook' do
|
||||||
expect(described_class).to respond_to('post_import_hook')
|
expect(described_class).to respond_to('post_import_hook')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'responds to backend_class' do
|
it 'responds to backend_class' do
|
||||||
expect(described_class).to respond_to('backend_class')
|
expect(described_class).to respond_to('backend_class')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'responds to skip?' do
|
it 'responds to skip?' do
|
||||||
expect(described_class).to respond_to('skip?')
|
expect(described_class).to respond_to('skip?')
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,6 +2,7 @@ RSpec.shared_examples 'Import::ImportStats' do
|
||||||
it 'responds to current_state' do
|
it 'responds to current_state' do
|
||||||
expect(described_class).to respond_to('current_state')
|
expect(described_class).to respond_to('current_state')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'responds to statistic' do
|
it 'responds to statistic' do
|
||||||
expect(described_class).to respond_to('statistic')
|
expect(described_class).to respond_to('statistic')
|
||||||
end
|
end
|
||||||
|
|
|
@ -48,14 +48,14 @@ RSpec.describe Import::OTRS::ArticleCustomer do
|
||||||
expect(User.last.login).to eq('user@example.com')
|
expect(User.last.login).to eq('user@example.com')
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.find' do
|
describe '.find' do
|
||||||
|
|
||||||
it 'returns nil if no email could be found' do
|
it 'returns nil if no email could be found' do
|
||||||
expect(described_class.find({})).to be nil
|
expect(described_class.find({})).to be nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.local_email' do
|
describe '.local_email' do
|
||||||
|
|
||||||
it 'returns nil if no email could be found' do
|
it 'returns nil if no email could be found' do
|
||||||
expect(described_class.local_email(nil)).to be nil
|
expect(described_class.local_email(nil)).to be nil
|
||||||
|
|
|
@ -117,7 +117,7 @@ RSpec.describe Import::OTRS::CustomerUser do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'regular user' do
|
context 'regular user with capitalized email' do
|
||||||
|
|
||||||
let(:object_structure) { load_customer_json('capital_email') }
|
let(:object_structure) { load_customer_json('capital_email') }
|
||||||
let(:zammad_structure) do
|
let(:zammad_structure) do
|
||||||
|
|
|
@ -2,13 +2,13 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Import::OTRS::Requester do
|
RSpec.describe Import::OTRS::Requester do
|
||||||
|
|
||||||
context '.list' do
|
describe '.list' do
|
||||||
it 'responds to list' do
|
it 'responds to list' do
|
||||||
expect(described_class).to respond_to(:list)
|
expect(described_class).to respond_to(:list)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.load' do
|
describe '.load' do
|
||||||
|
|
||||||
it 'responds to load' do
|
it 'responds to load' do
|
||||||
expect(described_class).to respond_to(:load)
|
expect(described_class).to respond_to(:load)
|
||||||
|
@ -39,7 +39,7 @@ RSpec.describe Import::OTRS::Requester do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.connection_test' do
|
describe '.connection_test' do
|
||||||
it 'responds to connection_test' do
|
it 'responds to connection_test' do
|
||||||
expect(described_class).to respond_to(:connection_test)
|
expect(described_class).to respond_to(:connection_test)
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,7 +10,7 @@ RSpec.describe Ldap::Group do
|
||||||
# as additional parameter
|
# as additional parameter
|
||||||
let(:mocked_ldap) { double() }
|
let(:mocked_ldap) { double() }
|
||||||
|
|
||||||
context '.uid_attribute' do
|
describe '.uid_attribute' do
|
||||||
|
|
||||||
it 'responds to .uid_attribute' do
|
it 'responds to .uid_attribute' do
|
||||||
expect(described_class).to respond_to(:uid_attribute)
|
expect(described_class).to respond_to(:uid_attribute)
|
||||||
|
@ -73,7 +73,7 @@ RSpec.describe Ldap::Group do
|
||||||
described_class.new(initialization_config, ldap: mocked_ldap)
|
described_class.new(initialization_config, ldap: mocked_ldap)
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#list' do
|
describe '#list' do
|
||||||
|
|
||||||
it 'responds to #list' do
|
it 'responds to #list' do
|
||||||
expect(instance).to respond_to(:list)
|
expect(instance).to respond_to(:list)
|
||||||
|
@ -86,7 +86,7 @@ RSpec.describe Ldap::Group do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#filter' do
|
describe '#filter' do
|
||||||
|
|
||||||
let(:initialization_config) do
|
let(:initialization_config) do
|
||||||
{
|
{
|
||||||
|
@ -109,7 +109,7 @@ RSpec.describe Ldap::Group do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#uid_attribute' do
|
describe '#uid_attribute' do
|
||||||
|
|
||||||
it 'responds to #uid_attribute' do
|
it 'responds to #uid_attribute' do
|
||||||
expect(instance).to respond_to(:uid_attribute)
|
expect(instance).to respond_to(:uid_attribute)
|
||||||
|
|
|
@ -5,7 +5,7 @@ RSpec.describe Ldap::Guid do
|
||||||
let(:string) { 'f742b361-32c6-4a92-baaa-eaae7df657ee' }
|
let(:string) { 'f742b361-32c6-4a92-baaa-eaae7df657ee' }
|
||||||
let(:hex) { "a\xB3B\xF7\xC62\x92J\xBA\xAA\xEA\xAE}\xF6W\xEE".b }
|
let(:hex) { "a\xB3B\xF7\xC62\x92J\xBA\xAA\xEA\xAE}\xF6W\xEE".b }
|
||||||
|
|
||||||
context '.valid?' do
|
describe '.valid?' do
|
||||||
|
|
||||||
it 'responds to .valid?' do
|
it 'responds to .valid?' do
|
||||||
expect(described_class).to respond_to(:valid?)
|
expect(described_class).to respond_to(:valid?)
|
||||||
|
@ -21,7 +21,7 @@ RSpec.describe Ldap::Guid do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.hex' do
|
describe '.hex' do
|
||||||
|
|
||||||
it 'responds to .hex' do
|
it 'responds to .hex' do
|
||||||
expect(described_class).to respond_to(:hex)
|
expect(described_class).to respond_to(:hex)
|
||||||
|
@ -37,7 +37,7 @@ RSpec.describe Ldap::Guid do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.string' do
|
describe '.string' do
|
||||||
|
|
||||||
it 'responds to .string' do
|
it 'responds to .string' do
|
||||||
expect(described_class).to respond_to(:string)
|
expect(described_class).to respond_to(:string)
|
||||||
|
@ -53,7 +53,7 @@ RSpec.describe Ldap::Guid do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#string' do
|
describe '#string' do
|
||||||
|
|
||||||
let(:instance) { described_class.new(hex) }
|
let(:instance) { described_class.new(hex) }
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ RSpec.describe Ldap::Guid do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#hex' do
|
describe '#hex' do
|
||||||
|
|
||||||
let(:instance) { described_class.new(string) }
|
let(:instance) { described_class.new(string) }
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ RSpec.describe Ldap::User do
|
||||||
|
|
||||||
let(:mocked_ldap) { double() }
|
let(:mocked_ldap) { double() }
|
||||||
|
|
||||||
context '.uid_attribute' do
|
describe '.uid_attribute' do
|
||||||
|
|
||||||
it 'responds to .uid_attribute' do
|
it 'responds to .uid_attribute' do
|
||||||
expect(described_class).to respond_to(:uid_attribute)
|
expect(described_class).to respond_to(:uid_attribute)
|
||||||
|
@ -86,7 +86,7 @@ RSpec.describe Ldap::User do
|
||||||
described_class.new(initialization_config, ldap: mocked_ldap)
|
described_class.new(initialization_config, ldap: mocked_ldap)
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#valid?' do
|
describe '#valid?' do
|
||||||
|
|
||||||
it 'responds to #valid?' do
|
it 'responds to #valid?' do
|
||||||
expect(instance).to respond_to(:valid?)
|
expect(instance).to respond_to(:valid?)
|
||||||
|
@ -117,7 +117,7 @@ RSpec.describe Ldap::User do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#attributes' do
|
describe '#attributes' do
|
||||||
|
|
||||||
it 'responds to #attributes' do
|
it 'responds to #attributes' do
|
||||||
expect(instance).to respond_to(:attributes)
|
expect(instance).to respond_to(:attributes)
|
||||||
|
@ -146,7 +146,7 @@ RSpec.describe Ldap::User do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#filter' do
|
describe '#filter' do
|
||||||
|
|
||||||
let(:initialization_config) do
|
let(:initialization_config) do
|
||||||
{
|
{
|
||||||
|
@ -169,7 +169,7 @@ RSpec.describe Ldap::User do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#uid_attribute' do
|
describe '#uid_attribute' do
|
||||||
|
|
||||||
let(:initialization_config) do
|
let(:initialization_config) do
|
||||||
{
|
{
|
||||||
|
|
|
@ -214,7 +214,7 @@ RSpec.describe Ldap do
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#preferences' do
|
describe '#preferences' do
|
||||||
|
|
||||||
it 'responds to #preferences' do
|
it 'responds to #preferences' do
|
||||||
expect(instance).to respond_to(:preferences)
|
expect(instance).to respond_to(:preferences)
|
||||||
|
@ -231,7 +231,7 @@ RSpec.describe Ldap do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#search' do
|
describe '#search' do
|
||||||
|
|
||||||
let(:base) { 'DC=domain,DC=tld' }
|
let(:base) { 'DC=domain,DC=tld' }
|
||||||
let(:filter) { '(objectClass=user)' }
|
let(:filter) { '(objectClass=user)' }
|
||||||
|
@ -307,7 +307,7 @@ RSpec.describe Ldap do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#entries?' do
|
describe '#entries?' do
|
||||||
|
|
||||||
let(:filter) { '(objectClass=user)' }
|
let(:filter) { '(objectClass=user)' }
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ require 'ostruct'
|
||||||
RSpec.describe NotificationFactory::Mailer do
|
RSpec.describe NotificationFactory::Mailer do
|
||||||
describe '#template' do
|
describe '#template' do
|
||||||
context 'for postmaster oversized mail' do
|
context 'for postmaster oversized mail' do
|
||||||
let(:raw_incoming_mail) { File.read(Rails.root.join('test', 'data', 'mail', 'mail010.box')) }
|
let(:raw_incoming_mail) { File.read(Rails.root.join('test/data/mail/mail010.box')) }
|
||||||
|
|
||||||
let(:parsed_incoming_mail) { Channel::EmailParser.new.parse raw_incoming_mail }
|
let(:parsed_incoming_mail) { Channel::EmailParser.new.parse raw_incoming_mail }
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ RSpec.describe NotificationFactory::Mailer do
|
||||||
mail = OpenStruct.new
|
mail = OpenStruct.new
|
||||||
mail.from_display_name = parsed_incoming_mail[:from_display_name]
|
mail.from_display_name = parsed_incoming_mail[:from_display_name]
|
||||||
mail.subject = parsed_incoming_mail[:subject]
|
mail.subject = parsed_incoming_mail[:subject]
|
||||||
mail.msg_size = format('%.2f', raw_incoming_mail.size.to_f / 1024 / 1024)
|
mail.msg_size = format('%<MB>.2f', MB: raw_incoming_mail.size.to_f / 1024 / 1024)
|
||||||
mail
|
mail
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ RSpec.describe NotificationFactory do
|
||||||
let(:rendered_locale) { 'en' }
|
let(:rendered_locale) { 'en' }
|
||||||
let(:parsed_template) { { subject: template_lines.first, body: template_lines.drop(1).join } }
|
let(:parsed_template) { { subject: template_lines.first, body: template_lines.drop(1).join } }
|
||||||
let(:template_lines) { File.readlines(template_path) }
|
let(:template_lines) { File.readlines(template_path) }
|
||||||
let(:template_path) { Rails.root.join('app', 'views', 'mailer', 'signup', "#{rendered_locale}.html.erb") }
|
let(:template_path) { Rails.root.join("app/views/mailer/signup/#{rendered_locale}.html.erb") }
|
||||||
|
|
||||||
let(:read_params) do
|
let(:read_params) do
|
||||||
{ type: 'mailer', template: 'signup', locale: 'en', format: 'html' }
|
{ type: 'mailer', template: 'signup', locale: 'en', format: 'html' }
|
||||||
|
@ -89,7 +89,7 @@ RSpec.describe NotificationFactory do
|
||||||
|
|
||||||
describe '::application_template_read' do
|
describe '::application_template_read' do
|
||||||
let(:read_params) { { type: 'mailer', format: 'html' } }
|
let(:read_params) { { type: 'mailer', format: 'html' } }
|
||||||
let(:template_path) { Rails.root.join('app', 'views', 'mailer', 'application.html.erb') }
|
let(:template_path) { Rails.root.join('app/views/mailer/application.html.erb') }
|
||||||
|
|
||||||
it 'returns template file content as string' do
|
it 'returns template file content as string' do
|
||||||
expect(described_class.application_template_read(read_params))
|
expect(described_class.application_template_read(read_params))
|
||||||
|
|
|
@ -14,9 +14,9 @@ RSpec.describe SignatureDetection do
|
||||||
|
|
||||||
let(:raw_message_files) do
|
let(:raw_message_files) do
|
||||||
[
|
[
|
||||||
Rails.root.join('test', 'data', 'email_signature_detection', 'client_a_1.txt'),
|
Rails.root.join('test/data/email_signature_detection/client_a_1.txt'),
|
||||||
Rails.root.join('test', 'data', 'email_signature_detection', 'client_a_2.txt'),
|
Rails.root.join('test/data/email_signature_detection/client_a_2.txt'),
|
||||||
Rails.root.join('test', 'data', 'email_signature_detection', 'client_a_3.txt')
|
Rails.root.join('test/data/email_signature_detection/client_a_3.txt')
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -41,9 +41,9 @@ RSpec.describe SignatureDetection do
|
||||||
|
|
||||||
let(:raw_message_files) do
|
let(:raw_message_files) do
|
||||||
[
|
[
|
||||||
Rails.root.join('test', 'data', 'email_signature_detection', 'client_b_1.txt'),
|
Rails.root.join('test/data/email_signature_detection/client_b_1.txt'),
|
||||||
Rails.root.join('test', 'data', 'email_signature_detection', 'client_b_2.txt'),
|
Rails.root.join('test/data/email_signature_detection/client_b_2.txt'),
|
||||||
Rails.root.join('test', 'data', 'email_signature_detection', 'client_b_3.txt')
|
Rails.root.join('test/data/email_signature_detection/client_b_3.txt')
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -68,9 +68,9 @@ RSpec.describe SignatureDetection do
|
||||||
|
|
||||||
let(:raw_message_files) do
|
let(:raw_message_files) do
|
||||||
[
|
[
|
||||||
Rails.root.join('test', 'data', 'email_signature_detection', 'client_c_1.html'),
|
Rails.root.join('test/data/email_signature_detection/client_c_1.html'),
|
||||||
Rails.root.join('test', 'data', 'email_signature_detection', 'client_c_2.html'),
|
Rails.root.join('test/data/email_signature_detection/client_c_2.html'),
|
||||||
Rails.root.join('test', 'data', 'email_signature_detection', 'client_c_3.html')
|
Rails.root.join('test/data/email_signature_detection/client_c_3.html')
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@ RSpec.describe SignatureDetection do
|
||||||
describe '.find_signature_line' do
|
describe '.find_signature_line' do
|
||||||
context 'when given a plain text message' do
|
context 'when given a plain text message' do
|
||||||
let(:content_type) { 'text/plain' }
|
let(:content_type) { 'text/plain' }
|
||||||
let(:content) { File.read(Rails.root.join('test', 'data', 'email_signature_detection', 'client_a_1.txt')) }
|
let(:content) { File.read(Rails.root.join('test/data/email_signature_detection/client_a_1.txt')) }
|
||||||
|
|
||||||
context 'and a substring it contains' do
|
context 'and a substring it contains' do
|
||||||
let(:signature) { <<~SIG.chomp }
|
let(:signature) { <<~SIG.chomp }
|
||||||
|
@ -134,7 +134,7 @@ RSpec.describe SignatureDetection do
|
||||||
|
|
||||||
context 'when given an HTML message' do
|
context 'when given an HTML message' do
|
||||||
let(:content_type) { 'text/html' }
|
let(:content_type) { 'text/html' }
|
||||||
let(:content) { File.read(Rails.root.join('test', 'data', 'email_signature_detection', 'example1.html')) }
|
let(:content) { File.read(Rails.root.join('test/data/email_signature_detection/example1.html')) }
|
||||||
|
|
||||||
context 'and a substring it contains' do
|
context 'and a substring it contains' do
|
||||||
let(:signature) { <<~SIG.chomp }
|
let(:signature) { <<~SIG.chomp }
|
||||||
|
|
|
@ -45,7 +45,7 @@ RSpec.describe UserInfo do
|
||||||
described_class.ensure_current_user_id do
|
described_class.ensure_current_user_id do
|
||||||
raise 'error'
|
raise 'error'
|
||||||
end
|
end
|
||||||
rescue # rubocop:disable Lint/HandleExceptions
|
rescue # rubocop:disable Lint/SuppressedException
|
||||||
end
|
end
|
||||||
|
|
||||||
expect(described_class.current_user_id).to be nil
|
expect(described_class.current_user_id).to be nil
|
||||||
|
|
|
@ -46,7 +46,7 @@ RSpec.describe Calendar, type: :model do
|
||||||
|
|
||||||
describe '#public_holidays' do
|
describe '#public_holidays' do
|
||||||
subject(:calendar) do
|
subject(:calendar) do
|
||||||
create(:calendar, ical_url: Rails.root.join('test', 'data', 'calendar', 'calendar1.ics'))
|
create(:calendar, ical_url: Rails.root.join('test/data/calendar/calendar1.ics'))
|
||||||
end
|
end
|
||||||
|
|
||||||
before { travel_to Time.zone.parse('2017-08-24T01:04:44Z0') }
|
before { travel_to Time.zone.parse('2017-08-24T01:04:44Z0') }
|
||||||
|
@ -63,7 +63,7 @@ RSpec.describe Calendar, type: :model do
|
||||||
|
|
||||||
context 'with one-time and n-time (recurring) events' do
|
context 'with one-time and n-time (recurring) events' do
|
||||||
subject(:calendar) do
|
subject(:calendar) do
|
||||||
create(:calendar, ical_url: Rails.root.join('test', 'data', 'calendar', 'calendar3.ics'))
|
create(:calendar, ical_url: Rails.root.join('test/data/calendar/calendar3.ics'))
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'accurately computes/imports events' do
|
it 'accurately computes/imports events' do
|
||||||
|
@ -87,7 +87,7 @@ RSpec.describe Calendar, type: :model do
|
||||||
|
|
||||||
describe '#sync' do
|
describe '#sync' do
|
||||||
subject(:calendar) do
|
subject(:calendar) do
|
||||||
create(:calendar, ical_url: Rails.root.join('test', 'data', 'calendar', 'calendar1.ics'), default: false)
|
create(:calendar, ical_url: Rails.root.join('test/data/calendar/calendar1.ics'), default: false)
|
||||||
end
|
end
|
||||||
|
|
||||||
before { travel_to Time.zone.parse('2017-08-24T01:04:44Z0') }
|
before { travel_to Time.zone.parse('2017-08-24T01:04:44Z0') }
|
||||||
|
@ -106,6 +106,7 @@ RSpec.describe Calendar, type: :model do
|
||||||
expect { calendar.sync }
|
expect { calendar.sync }
|
||||||
.not_to change(calendar, :public_holidays)
|
.not_to change(calendar, :public_holidays)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not create a background job for escalation rebuild' do
|
it 'does not create a background job for escalation rebuild' do
|
||||||
calendar # create and sync (1 inital background job is created)
|
calendar # create and sync (1 inital background job is created)
|
||||||
expect { calendar.sync } # a second sync right after calendar create
|
expect { calendar.sync } # a second sync right after calendar create
|
||||||
|
@ -123,6 +124,7 @@ RSpec.describe Calendar, type: :model do
|
||||||
expect { calendar.sync }
|
expect { calendar.sync }
|
||||||
.not_to change(calendar, :public_holidays)
|
.not_to change(calendar, :public_holidays)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not create a background job for escalation rebuild' do
|
it 'does not create a background job for escalation rebuild' do
|
||||||
expect { calendar.sync }
|
expect { calendar.sync }
|
||||||
.not_to change { Delayed::Job.count }
|
.not_to change { Delayed::Job.count }
|
||||||
|
@ -152,7 +154,7 @@ RSpec.describe Calendar, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'and iCal URL has changed' do
|
context 'and iCal URL has changed' do
|
||||||
before { calendar.assign_attributes(ical_url: Rails.root.join('test', 'data', 'calendar', 'calendar2.ics')) }
|
before { calendar.assign_attributes(ical_url: Rails.root.join('test/data/calendar/calendar2.ics')) }
|
||||||
|
|
||||||
it 'replaces #public_holidays with event data computed from new iCal URL' do
|
it 'replaces #public_holidays with event data computed from new iCal URL' do
|
||||||
expect { calendar.save }
|
expect { calendar.save }
|
||||||
|
|
|
@ -689,11 +689,6 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
include_examples 'creates a new ticket'
|
include_examples 'creates a new ticket'
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when image/jpg attachment contains ticket reference' do
|
|
||||||
include_context 'ticket reference in image/jpg attachment'
|
|
||||||
include_examples 'creates a new ticket'
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when In-Reply-To header contains article message-id' do
|
context 'when In-Reply-To header contains article message-id' do
|
||||||
include_context 'ticket reference in In-Reply-To header'
|
include_context 'ticket reference in In-Reply-To header'
|
||||||
include_examples 'adds message to ticket'
|
include_examples 'adds message to ticket'
|
||||||
|
@ -847,7 +842,7 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
describe 'formatting to/from addresses' do
|
describe 'formatting to/from addresses' do
|
||||||
# see https://github.com/zammad/zammad/issues/2198
|
# see https://github.com/zammad/zammad/issues/2198
|
||||||
context 'when sender address contains spaces (#2198)' do
|
context 'when sender address contains spaces (#2198)' do
|
||||||
let(:mail_file) { Rails.root.join('test', 'data', 'mail', 'mail071.box') }
|
let(:mail_file) { Rails.root.join('test/data/mail/mail071.box') }
|
||||||
let(:sender_email) { 'powerquadrantsystem@example.com' }
|
let(:sender_email) { 'powerquadrantsystem@example.com' }
|
||||||
|
|
||||||
it 'removes them before creating a new user' do
|
it 'removes them before creating a new user' do
|
||||||
|
@ -867,7 +862,7 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
|
|
||||||
# see https://github.com/zammad/zammad/issues/2254
|
# see https://github.com/zammad/zammad/issues/2254
|
||||||
context 'when sender address contains > (#2254)' do
|
context 'when sender address contains > (#2254)' do
|
||||||
let(:mail_file) { Rails.root.join('test', 'data', 'mail', 'mail076.box') }
|
let(:mail_file) { Rails.root.join('test/data/mail/mail076.box') }
|
||||||
let(:sender_email) { 'millionslotteryspaintransfer@example.com' }
|
let(:sender_email) { 'millionslotteryspaintransfer@example.com' }
|
||||||
|
|
||||||
it 'removes them before creating a new user' do
|
it 'removes them before creating a new user' do
|
||||||
|
@ -897,7 +892,7 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
HEADER
|
HEADER
|
||||||
|
|
||||||
context 'for emails from an unrecognized email address' do
|
context 'for emails from an unrecognized email address' do
|
||||||
let(:message_file) { Rails.root.join('test', 'data', 'email_signature_detection', 'client_a_1.txt') }
|
let(:message_file) { Rails.root.join('test/data/email_signature_detection/client_a_1.txt') }
|
||||||
|
|
||||||
it 'does not detect signatures' do
|
it 'does not detect signatures' do
|
||||||
described_class.new.process({}, raw_mail)
|
described_class.new.process({}, raw_mail)
|
||||||
|
@ -913,9 +908,9 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
described_class.new.process({}, header + File.read(previous_message_file))
|
described_class.new.process({}, header + File.read(previous_message_file))
|
||||||
end
|
end
|
||||||
|
|
||||||
let(:previous_message_file) { Rails.root.join('test', 'data', 'email_signature_detection', 'client_a_1.txt') }
|
let(:previous_message_file) { Rails.root.join('test/data/email_signature_detection/client_a_1.txt') }
|
||||||
|
|
||||||
let(:message_file) { Rails.root.join('test', 'data', 'email_signature_detection', 'client_a_2.txt') }
|
let(:message_file) { Rails.root.join('test/data/email_signature_detection/client_a_2.txt') }
|
||||||
|
|
||||||
it 'sets detected signature on user (in a background job)' do
|
it 'sets detected signature on user (in a background job)' do
|
||||||
described_class.new.process({}, raw_mail)
|
described_class.new.process({}, raw_mail)
|
||||||
|
@ -936,7 +931,7 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
describe 'charset handling' do
|
describe 'charset handling' do
|
||||||
# see https://github.com/zammad/zammad/issues/2224
|
# see https://github.com/zammad/zammad/issues/2224
|
||||||
context 'when header specifies Windows-1258 charset (#2224)' do
|
context 'when header specifies Windows-1258 charset (#2224)' do
|
||||||
let(:mail_file) { Rails.root.join('test', 'data', 'mail', 'mail072.box') }
|
let(:mail_file) { Rails.root.join('test/data/mail/mail072.box') }
|
||||||
|
|
||||||
it 'does not raise Encoding::ConverterNotFoundError' do
|
it 'does not raise Encoding::ConverterNotFoundError' do
|
||||||
expect { described_class.new.process({}, raw_mail) }
|
expect { described_class.new.process({}, raw_mail) }
|
||||||
|
@ -945,7 +940,7 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when attachment for follow up check contains invalid charsets (#2808)' do
|
context 'when attachment for follow up check contains invalid charsets (#2808)' do
|
||||||
let(:mail_file) { Rails.root.join('test', 'data', 'mail', 'mail085.box') }
|
let(:mail_file) { Rails.root.join('test/data/mail/mail085.box') }
|
||||||
|
|
||||||
before { Setting.set('postmaster_follow_up_search_in', %w[attachment body]) }
|
before { Setting.set('postmaster_follow_up_search_in', %w[attachment body]) }
|
||||||
|
|
||||||
|
@ -959,7 +954,7 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
|
|
||||||
describe 'attachment handling' do
|
describe 'attachment handling' do
|
||||||
context 'with header "Content-Transfer-Encoding: x-uuencode"' do
|
context 'with header "Content-Transfer-Encoding: x-uuencode"' do
|
||||||
let(:mail_file) { Rails.root.join('test', 'data', 'mail', 'mail078-content_transfer_encoding_x_uuencode.box') }
|
let(:mail_file) { Rails.root.join('test/data/mail/mail078-content_transfer_encoding_x_uuencode.box') }
|
||||||
let(:article) { described_class.new.process({}, raw_mail).second }
|
let(:article) { described_class.new.process({}, raw_mail).second }
|
||||||
|
|
||||||
it 'does not raise RuntimeError' do
|
it 'does not raise RuntimeError' do
|
||||||
|
@ -977,7 +972,7 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
describe 'inline image handling' do
|
describe 'inline image handling' do
|
||||||
# see https://github.com/zammad/zammad/issues/2486
|
# see https://github.com/zammad/zammad/issues/2486
|
||||||
context 'when image is large but not resizable' do
|
context 'when image is large but not resizable' do
|
||||||
let(:mail_file) { Rails.root.join('test', 'data', 'mail', 'mail079.box') }
|
let(:mail_file) { Rails.root.join('test/data/mail/mail079.box') }
|
||||||
let(:attachment) { article.attachments.to_a.find { |i| i.filename == 'a.jpg' } }
|
let(:attachment) { article.attachments.to_a.find { |i| i.filename == 'a.jpg' } }
|
||||||
let(:article) { described_class.new.process({}, raw_mail).second }
|
let(:article) { described_class.new.process({}, raw_mail).second }
|
||||||
|
|
||||||
|
@ -1026,7 +1021,7 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
let(:message_id) { raw_mail[/(?<=^(References|Message-ID): )\S*/] }
|
let(:message_id) { raw_mail[/(?<=^(References|Message-ID): )\S*/] }
|
||||||
|
|
||||||
context 'with future retries (delayed)' do
|
context 'with future retries (delayed)' do
|
||||||
let(:mail_file) { Rails.root.join('test', 'data', 'mail', 'mail078.box') }
|
let(:mail_file) { Rails.root.join('test/data/mail/mail078.box') }
|
||||||
|
|
||||||
context 'on a closed ticket' do
|
context 'on a closed ticket' do
|
||||||
before { ticket.update(state: Ticket::State.find_by(name: 'closed')) }
|
before { ticket.update(state: Ticket::State.find_by(name: 'closed')) }
|
||||||
|
@ -1055,7 +1050,7 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with no future retries (undeliverable): sample input 1' do
|
context 'with no future retries (undeliverable): sample input 1' do
|
||||||
let(:mail_file) { Rails.root.join('test', 'data', 'mail', 'mail033-undelivered-mail-returned-to-sender.box') }
|
let(:mail_file) { Rails.root.join('test/data/mail/mail033-undelivered-mail-returned-to-sender.box') }
|
||||||
|
|
||||||
context 'for original message sent by Agent' do
|
context 'for original message sent by Agent' do
|
||||||
it 'sets #preferences on resulting ticket to { "send-auto-responses" => false, "is-auto-reponse" => true }' do
|
it 'sets #preferences on resulting ticket to { "send-auto-responses" => false, "is-auto-reponse" => true }' do
|
||||||
|
@ -1097,7 +1092,7 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with no future retries (undeliverable): sample input 2' do
|
context 'with no future retries (undeliverable): sample input 2' do
|
||||||
let(:mail_file) { Rails.root.join('test', 'data', 'mail', 'mail055.box') }
|
let(:mail_file) { Rails.root.join('test/data/mail/mail055.box') }
|
||||||
|
|
||||||
it 'finds the article referenced in the bounce message headers, then adds the bounce message to its ticket' do
|
it 'finds the article referenced in the bounce message headers, then adds the bounce message to its ticket' do
|
||||||
expect { described_class.new.process({}, raw_mail) }
|
expect { described_class.new.process({}, raw_mail) }
|
||||||
|
@ -1181,67 +1176,7 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#compose_postmaster_reply' do
|
describe '#compose_postmaster_reply' do
|
||||||
let(:raw_incoming_mail) { File.read(Rails.root.join('test', 'data', 'mail', 'mail010.box')) }
|
let(:raw_incoming_mail) { File.read(Rails.root.join('test/data/mail/mail010.box')) }
|
||||||
|
|
||||||
shared_examples 'postmaster reply' do
|
|
||||||
it 'composes postmaster reply' do
|
|
||||||
reply = described_class.new.send(:compose_postmaster_reply, raw_incoming_mail, locale)
|
|
||||||
expect(reply[:to]).to eq('smith@example.com')
|
|
||||||
expect(reply[:content_type]).to eq('text/plain')
|
|
||||||
expect(reply[:subject]).to eq(expected_subject)
|
|
||||||
expect(reply[:body]).to eq(expected_body)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'for English locale (en)' do
|
|
||||||
include_examples 'postmaster reply' do
|
|
||||||
let(:locale) { 'en' }
|
|
||||||
let(:expected_subject) { '[undeliverable] Message too large' }
|
|
||||||
let(:expected_body) do
|
|
||||||
body = <<~BODY
|
|
||||||
Dear Smith Sepp,
|
|
||||||
|
|
||||||
Unfortunately your email titled \"Gruß aus Oberalteich\" could not be delivered to one or more recipients.
|
|
||||||
|
|
||||||
Your message was 0.01 MB but we only accept messages up to 10 MB.
|
|
||||||
|
|
||||||
Please reduce the message size and try again. Thank you for your understanding.
|
|
||||||
|
|
||||||
Regretfully,
|
|
||||||
|
|
||||||
Postmaster of zammad.example.com
|
|
||||||
BODY
|
|
||||||
body.gsub(/\n/, "\r\n")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'for German locale (de)' do
|
|
||||||
include_examples 'postmaster reply' do
|
|
||||||
let(:locale) { 'de' }
|
|
||||||
let(:expected_subject) { '[Unzustellbar] Nachricht zu groß' }
|
|
||||||
let(:expected_body) do
|
|
||||||
body = <<~BODY
|
|
||||||
Hallo Smith Sepp,
|
|
||||||
|
|
||||||
Ihre E-Mail mit dem Betreff \"Gruß aus Oberalteich\" konnte nicht an einen oder mehrere Empfänger zugestellt werden.
|
|
||||||
|
|
||||||
Die Nachricht hatte eine Größe von 0.01 MB, wir akzeptieren jedoch nur E-Mails mit einer Größe von bis zu 10 MB.
|
|
||||||
|
|
||||||
Bitte reduzieren Sie die Größe Ihrer Nachricht und versuchen Sie es erneut. Vielen Dank für Ihr Verständnis.
|
|
||||||
|
|
||||||
Mit freundlichen Grüßen
|
|
||||||
|
|
||||||
Postmaster von zammad.example.com
|
|
||||||
BODY
|
|
||||||
body.gsub(/\n/, "\r\n")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
describe '#compose_postmaster_reply' do
|
|
||||||
let(:raw_incoming_mail) { File.read(Rails.root.join('test', 'data', 'mail', 'mail010.box')) }
|
|
||||||
|
|
||||||
shared_examples 'postmaster reply' do
|
shared_examples 'postmaster reply' do
|
||||||
it 'composes postmaster reply' do
|
it 'composes postmaster reply' do
|
||||||
|
|
|
@ -46,7 +46,7 @@ RSpec.describe Channel::Filter::Match::EmailRegex do
|
||||||
it { is_expected.to be(false) }
|
it { is_expected.to be(false) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'and invalid regex (misused ? repeat operator)' do
|
context 'and invalid regex (unassociated wild card operator)' do
|
||||||
let(:sender) { 'regex:*' }
|
let(:sender) { 'regex:*' }
|
||||||
|
|
||||||
it { is_expected.to be(false) }
|
it { is_expected.to be(false) }
|
||||||
|
@ -102,7 +102,7 @@ RSpec.describe Channel::Filter::Match::EmailRegex do
|
||||||
ERR
|
ERR
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'and invalid regex (misused ? repeat operator)' do
|
context 'and invalid regex (unassociated wild card operator)' do
|
||||||
let(:sender) { 'regex:*' }
|
let(:sender) { 'regex:*' }
|
||||||
|
|
||||||
it { expect { subject }.to raise_error(<<~ERR.chomp) }
|
it { expect { subject }.to raise_error(<<~ERR.chomp) }
|
||||||
|
|
|
@ -6,7 +6,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
let(:group_read) { create(:group) }
|
let(:group_read) { create(:group) }
|
||||||
let(:group_inactive) { create(:group, active: false) }
|
let(:group_inactive) { create(:group, active: false) }
|
||||||
|
|
||||||
context '.group_through_identifier' do
|
describe '.group_through_identifier' do
|
||||||
|
|
||||||
it 'responds to group_through_identifier' do
|
it 'responds to group_through_identifier' do
|
||||||
expect(described_class).to respond_to(:group_through_identifier)
|
expect(described_class).to respond_to(:group_through_identifier)
|
||||||
|
@ -21,7 +21,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.group_through' do
|
describe '.group_through' do
|
||||||
|
|
||||||
it 'responds to group_through' do
|
it 'responds to group_through' do
|
||||||
expect(described_class).to respond_to(:group_through)
|
expect(described_class).to respond_to(:group_through)
|
||||||
|
@ -32,13 +32,13 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#groups' do
|
describe '#groups' do
|
||||||
|
|
||||||
it 'responds to groups' do
|
it 'responds to groups' do
|
||||||
expect(subject).to respond_to(:groups)
|
expect(subject).to respond_to(:groups)
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#groups.access' do
|
describe '#groups.access' do
|
||||||
|
|
||||||
it 'responds to groups.access' do
|
it 'responds to groups.access' do
|
||||||
expect(subject.groups).to respond_to(:access)
|
expect(subject.groups).to respond_to(:access)
|
||||||
|
@ -77,7 +77,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_access?' do
|
describe '#group_access?' do
|
||||||
|
|
||||||
before do
|
before do
|
||||||
subject.group_names_access_map = {
|
subject.group_names_access_map = {
|
||||||
|
@ -120,7 +120,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_ids_access' do
|
describe '#group_ids_access' do
|
||||||
|
|
||||||
before do
|
before do
|
||||||
subject.group_names_access_map = {
|
subject.group_names_access_map = {
|
||||||
|
@ -179,7 +179,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#groups_access' do
|
describe '#groups_access' do
|
||||||
|
|
||||||
it 'responds to groups_access' do
|
it 'responds to groups_access' do
|
||||||
expect(subject).to respond_to(:groups_access)
|
expect(subject).to respond_to(:groups_access)
|
||||||
|
@ -199,7 +199,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_names_access_map=' do
|
describe '#group_names_access_map=' do
|
||||||
|
|
||||||
it 'responds to group_names_access_map=' do
|
it 'responds to group_names_access_map=' do
|
||||||
expect(subject).to respond_to(:group_names_access_map=)
|
expect(subject).to respond_to(:group_names_access_map=)
|
||||||
|
@ -300,7 +300,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_names_access_map' do
|
describe '#group_names_access_map' do
|
||||||
|
|
||||||
it 'responds to group_names_access_map' do
|
it 'responds to group_names_access_map' do
|
||||||
expect(subject).to respond_to(:group_names_access_map)
|
expect(subject).to respond_to(:group_names_access_map)
|
||||||
|
@ -341,7 +341,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_ids_access_map=' do
|
describe '#group_ids_access_map=' do
|
||||||
|
|
||||||
it 'responds to group_ids_access_map=' do
|
it 'responds to group_ids_access_map=' do
|
||||||
expect(subject).to respond_to(:group_ids_access_map=)
|
expect(subject).to respond_to(:group_ids_access_map=)
|
||||||
|
@ -424,7 +424,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_ids_access_map' do
|
describe '#group_ids_access_map' do
|
||||||
|
|
||||||
it 'responds to group_ids_access_map' do
|
it 'responds to group_ids_access_map' do
|
||||||
expect(subject).to respond_to(:group_ids_access_map)
|
expect(subject).to respond_to(:group_ids_access_map)
|
||||||
|
@ -465,7 +465,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#associations_from_param' do
|
describe '#associations_from_param' do
|
||||||
|
|
||||||
it 'handles group_ids parameter as group_ids_access_map' do
|
it 'handles group_ids parameter as group_ids_access_map' do
|
||||||
expected = {
|
expected = {
|
||||||
|
@ -488,7 +488,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#attributes_with_association_ids' do
|
describe '#attributes_with_association_ids' do
|
||||||
|
|
||||||
it 'includes group_ids as group_ids_access_map' do
|
it 'includes group_ids as group_ids_access_map' do
|
||||||
expected = {
|
expected = {
|
||||||
|
@ -503,7 +503,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#attributes_with_association_names' do
|
describe '#attributes_with_association_names' do
|
||||||
|
|
||||||
it 'includes group_ids as group_ids_access_map' do
|
it 'includes group_ids as group_ids_access_map' do
|
||||||
expected = {
|
expected = {
|
||||||
|
@ -530,7 +530,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.group_access' do
|
describe '.group_access' do
|
||||||
|
|
||||||
before do
|
before do
|
||||||
subject.group_names_access_map = {
|
subject.group_names_access_map = {
|
||||||
|
@ -566,7 +566,7 @@ RSpec.shared_examples 'HasGroups' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.group_access_ids' do
|
describe '.group_access_ids' do
|
||||||
|
|
||||||
it 'responds to group_access_ids' do
|
it 'responds to group_access_ids' do
|
||||||
expect(described_class).to respond_to(:group_access_ids)
|
expect(described_class).to respond_to(:group_access_ids)
|
||||||
|
|
|
@ -10,56 +10,56 @@ RSpec.shared_examples 'HasGroups and Permissions' do |group_access_no_permission
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_access?' do
|
describe '#group_access?' do
|
||||||
|
|
||||||
it 'prevents instances without permissions' do
|
it 'prevents instances without permissions' do
|
||||||
expect(subject.group_access?(group_read, 'read')).to be false
|
expect(subject.group_access?(group_read, 'read')).to be false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_ids_access' do
|
describe '#group_ids_access' do
|
||||||
|
|
||||||
it 'prevents instances without permissions' do
|
it 'prevents instances without permissions' do
|
||||||
expect(subject.group_ids_access('read')).to be_empty
|
expect(subject.group_ids_access('read')).to be_empty
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#groups_access' do
|
describe '#groups_access' do
|
||||||
|
|
||||||
it 'prevents instances without permissions' do
|
it 'prevents instances without permissions' do
|
||||||
expect(subject.groups_access('read')).to be_empty
|
expect(subject.groups_access('read')).to be_empty
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_names_access_map' do
|
describe '#group_names_access_map' do
|
||||||
|
|
||||||
it 'prevents instances without permissions' do
|
it 'prevents instances without permissions' do
|
||||||
expect(subject.group_names_access_map).to be_empty
|
expect(subject.group_names_access_map).to be_empty
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_ids_access_map' do
|
describe '#group_ids_access_map' do
|
||||||
|
|
||||||
it 'prevents instances without permissions' do
|
it 'prevents instances without permissions' do
|
||||||
expect(subject.group_ids_access_map).to be_empty
|
expect(subject.group_ids_access_map).to be_empty
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#attributes_with_association_ids' do
|
describe '#attributes_with_association_ids' do
|
||||||
|
|
||||||
it 'prevents instances without permissions' do
|
it 'prevents instances without permissions' do
|
||||||
expect(subject.attributes_with_association_ids['group_ids']).to be_empty
|
expect(subject.attributes_with_association_ids['group_ids']).to be_empty
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#attributes_with_association_names' do
|
describe '#attributes_with_association_names' do
|
||||||
|
|
||||||
it 'prevents instances without permissions' do
|
it 'prevents instances without permissions' do
|
||||||
expect(subject.attributes_with_association_names['group_ids']).to be_empty
|
expect(subject.attributes_with_association_names['group_ids']).to be_empty
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.group_access' do
|
describe '.group_access' do
|
||||||
|
|
||||||
it 'prevents instances without permissions' do
|
it 'prevents instances without permissions' do
|
||||||
result = described_class.group_access(group_read.id, 'read')
|
result = described_class.group_access(group_read.id, 'read')
|
||||||
|
@ -67,7 +67,7 @@ RSpec.shared_examples 'HasGroups and Permissions' do |group_access_no_permission
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.group_access_ids' do
|
describe '.group_access_ids' do
|
||||||
|
|
||||||
it 'prevents instances without permissions' do
|
it 'prevents instances without permissions' do
|
||||||
result = described_class.group_access(group_read.id, 'read')
|
result = described_class.group_access(group_read.id, 'read')
|
||||||
|
|
|
@ -7,7 +7,7 @@ RSpec.shared_examples 'HasRoles' do |group_access_factory:|
|
||||||
let(:group_role) { create(:group) }
|
let(:group_role) { create(:group) }
|
||||||
let(:group_inactive) { create(:group, active: false) }
|
let(:group_inactive) { create(:group, active: false) }
|
||||||
|
|
||||||
context '#role_access?' do
|
describe '#role_access?' do
|
||||||
|
|
||||||
it 'responds to role_access?' do
|
it 'responds to role_access?' do
|
||||||
expect(subject).to respond_to(:role_access?)
|
expect(subject).to respond_to(:role_access?)
|
||||||
|
@ -57,7 +57,7 @@ RSpec.shared_examples 'HasRoles' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.role_access_ids' do
|
describe '.role_access_ids' do
|
||||||
|
|
||||||
before do
|
before do
|
||||||
role.group_names_access_map = {
|
role.group_names_access_map = {
|
||||||
|
@ -115,7 +115,7 @@ RSpec.shared_examples 'HasRoles' do |group_access_factory:|
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_access?' do
|
describe '#group_access?' do
|
||||||
|
|
||||||
it 'falls back to #role_access?' do
|
it 'falls back to #role_access?' do
|
||||||
expect(subject).to receive(:role_access?)
|
expect(subject).to receive(:role_access?)
|
||||||
|
@ -128,7 +128,7 @@ RSpec.shared_examples 'HasRoles' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '#group_ids_access' do
|
describe '#group_ids_access' do
|
||||||
|
|
||||||
before do
|
before do
|
||||||
role.group_names_access_map = {
|
role.group_names_access_map = {
|
||||||
|
@ -198,7 +198,7 @@ RSpec.shared_examples 'HasRoles' do |group_access_factory:|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context '.group_access_ids' do
|
describe '.group_access_ids' do
|
||||||
|
|
||||||
it 'includes the result of .role_access_ids' do
|
it 'includes the result of .role_access_ids' do
|
||||||
result = described_class.group_access_ids(group_role, 'read')
|
result = described_class.group_access_ids(group_role, 'read')
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
RSpec.shared_examples 'HasSearchIndexBackend' do |indexed_factory:|
|
RSpec.shared_examples 'HasSearchIndexBackend' do |indexed_factory:|
|
||||||
|
|
||||||
context '#search_index_update', performs_jobs: true do
|
describe '#search_index_update', performs_jobs: true do
|
||||||
subject { create(indexed_factory) }
|
subject { create(indexed_factory) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
|
|
@ -7,6 +7,7 @@ RSpec.describe Ticket::Subject do
|
||||||
it 'build subject based on new title' do
|
it 'build subject based on new title' do
|
||||||
expect(ticket.subject_build('other title')).to eq("other title [Ticket##{ticket.number}]")
|
expect(ticket.subject_build('other title')).to eq("other title [Ticket##{ticket.number}]")
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'build subject based on new title with ticket_hook_position left' do
|
it 'build subject based on new title with ticket_hook_position left' do
|
||||||
Setting.set('ticket_hook_position', 'left')
|
Setting.set('ticket_hook_position', 'left')
|
||||||
expect(ticket.subject_build('other title')).to eq("[Ticket##{ticket.number}] other title")
|
expect(ticket.subject_build('other title')).to eq("[Ticket##{ticket.number}] other title")
|
||||||
|
@ -16,9 +17,11 @@ RSpec.describe Ticket::Subject do
|
||||||
Setting.set('ticket_hook_position', '')
|
Setting.set('ticket_hook_position', '')
|
||||||
expect(ticket.subject_build('other title')).to eq('other title')
|
expect(ticket.subject_build('other title')).to eq('other title')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'build subject based with forward argument' do
|
it 'build subject based with forward argument' do
|
||||||
expect(ticket.subject_build('other title', 'forward')).to eq("FWD: other title [Ticket##{ticket.number}]")
|
expect(ticket.subject_build('other title', 'forward')).to eq("FWD: other title [Ticket##{ticket.number}]")
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'build subject based with reply argument' do
|
it 'build subject based with reply argument' do
|
||||||
expect(ticket.subject_build('other title', 'reply')).to eq("RE: other title [Ticket##{ticket.number}]")
|
expect(ticket.subject_build('other title', 'reply')).to eq("RE: other title [Ticket##{ticket.number}]")
|
||||||
end
|
end
|
||||||
|
@ -28,21 +31,27 @@ RSpec.describe Ticket::Subject do
|
||||||
it 'cleanup subject with undefined string' do
|
it 'cleanup subject with undefined string' do
|
||||||
expect(ticket.subject_clean(nil)).to eq('')
|
expect(ticket.subject_clean(nil)).to eq('')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'cleanup subject with empty string' do
|
it 'cleanup subject with empty string' do
|
||||||
expect(ticket.subject_clean('')).to eq('')
|
expect(ticket.subject_clean('')).to eq('')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'cleanup subject with long string which need to be truncated by [...]' do
|
it 'cleanup subject with long string which need to be truncated by [...]' do
|
||||||
expect(ticket.subject_clean('123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890')).to eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[...]')
|
expect(ticket.subject_clean('123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890')).to eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[...]')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'cleanup subject with regular ticket#' do
|
it 'cleanup subject with regular ticket#' do
|
||||||
expect(ticket.subject_clean("something [Ticket##{ticket.number}]")).to eq('something')
|
expect(ticket.subject_clean("something [Ticket##{ticket.number}]")).to eq('something')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'cleanup subject with regular ticket# multiple time' do
|
it 'cleanup subject with regular ticket# multiple time' do
|
||||||
expect(ticket.subject_clean("[Ticket##{ticket.number}] [Ticket##{ticket.number}] something [Ticket##{ticket.number}]")).to eq('something')
|
expect(ticket.subject_clean("[Ticket##{ticket.number}] [Ticket##{ticket.number}] something [Ticket##{ticket.number}]")).to eq('something')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'cleanup subject with foreign ticket#' do
|
it 'cleanup subject with foreign ticket#' do
|
||||||
expect(ticket.subject_clean('something [Ticket#123456]')).to eq('something [Ticket#123456]')
|
expect(ticket.subject_clean('something [Ticket#123456]')).to eq('something [Ticket#123456]')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'cleanup subject with some reply signs' do
|
it 'cleanup subject with some reply signs' do
|
||||||
expect(ticket.subject_clean('RE: RE: Re[5]: something [Ticket#123456]')).to eq('something [Ticket#123456]')
|
expect(ticket.subject_clean('RE: RE: Re[5]: something [Ticket#123456]')).to eq('something [Ticket#123456]')
|
||||||
end
|
end
|
||||||
|
|
|
@ -924,7 +924,7 @@ RSpec.describe Ticket, type: :model do
|
||||||
context 'when ticket is generated from email (with attachments)' do
|
context 'when ticket is generated from email (with attachments)' do
|
||||||
subject(:ticket) { Channel::EmailParser.new.process({}, raw_email).first }
|
subject(:ticket) { Channel::EmailParser.new.process({}, raw_email).first }
|
||||||
|
|
||||||
let(:raw_email) { File.read(Rails.root.join('test', 'data', 'mail', 'mail001.box')) }
|
let(:raw_email) { File.read(Rails.root.join('test/data/mail/mail001.box')) }
|
||||||
|
|
||||||
it 'adds attachments to the Store{::File,::Provider::DB} tables' do
|
it 'adds attachments to the Store{::File,::Provider::DB} tables' do
|
||||||
expect { ticket }
|
expect { ticket }
|
||||||
|
@ -965,9 +965,7 @@ RSpec.describe Ticket, type: :model do
|
||||||
.and change { Store::File.count }.by(0)
|
.and change { Store::File.count }.by(0)
|
||||||
.and change { Store::Provider::DB.count }.by(0)
|
.and change { Store::Provider::DB.count }.by(0)
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
context 'when only the duplicate ticket is destroyed' do
|
|
||||||
it 'deletes all related attachments' do
|
it 'deletes all related attachments' do
|
||||||
duplicate.destroy
|
duplicate.destroy
|
||||||
|
|
||||||
|
|
|
@ -259,7 +259,7 @@ RSpec.describe Translation do
|
||||||
it 'check download of translations' do
|
it 'check download of translations' do
|
||||||
version = Version.get
|
version = Version.get
|
||||||
locale = 'de-de'
|
locale = 'de-de'
|
||||||
directory = Rails.root.join('config', 'translations')
|
directory = Rails.root.join('config/translations')
|
||||||
if File.directory?(directory)
|
if File.directory?(directory)
|
||||||
FileUtils.rm_rf(directory)
|
FileUtils.rm_rf(directory)
|
||||||
end
|
end
|
||||||
|
|
|
@ -40,7 +40,7 @@ RSpec.describe Trigger, type: :model do
|
||||||
context 'when ticket is created via Channel::EmailParser.process' do
|
context 'when ticket is created via Channel::EmailParser.process' do
|
||||||
before { create(:email_address, groups: [Group.first]) }
|
before { create(:email_address, groups: [Group.first]) }
|
||||||
|
|
||||||
let(:raw_email) { File.read(Rails.root.join('test', 'data', 'mail', 'mail001.box')) }
|
let(:raw_email) { File.read(Rails.root.join('test/data/mail/mail001.box')) }
|
||||||
|
|
||||||
it 'fires (without altering ticket state)' do
|
it 'fires (without altering ticket state)' do
|
||||||
expect { Channel::EmailParser.new.process({}, raw_email) }
|
expect { Channel::EmailParser.new.process({}, raw_email) }
|
||||||
|
@ -54,7 +54,7 @@ RSpec.describe Trigger, type: :model do
|
||||||
context 'when ticket is created via Channel::EmailParser.process with inline image' do
|
context 'when ticket is created via Channel::EmailParser.process with inline image' do
|
||||||
before { create(:email_address, groups: [Group.first]) }
|
before { create(:email_address, groups: [Group.first]) }
|
||||||
|
|
||||||
let(:raw_email) { File.read(Rails.root.join('test', 'data', 'mail', 'mail010.box')) }
|
let(:raw_email) { File.read(Rails.root.join('test/data/mail/mail010.box')) }
|
||||||
|
|
||||||
it 'fires (without altering ticket state)' do
|
it 'fires (without altering ticket state)' do
|
||||||
expect { Channel::EmailParser.new.process({}, raw_email) }
|
expect { Channel::EmailParser.new.process({}, raw_email) }
|
||||||
|
@ -130,7 +130,7 @@ RSpec.describe Trigger, type: :model do
|
||||||
subject: raw_email[/(?<=^Subject: Re: ).*$/])
|
subject: raw_email[/(?<=^Subject: Re: ).*$/])
|
||||||
end
|
end
|
||||||
|
|
||||||
let(:raw_email) { File.read(Rails.root.join('test', 'data', 'mail', 'mail005.box')) }
|
let(:raw_email) { File.read(Rails.root.join('test/data/mail/mail005.box')) }
|
||||||
|
|
||||||
it 'fires (without altering ticket state)' do
|
it 'fires (without altering ticket state)' do
|
||||||
expect { Channel::EmailParser.new.process({}, raw_email) }
|
expect { Channel::EmailParser.new.process({}, raw_email) }
|
||||||
|
@ -147,7 +147,7 @@ RSpec.describe Trigger, type: :model do
|
||||||
message_id: raw_email[/(?<=^Message-ID: )\S*/])
|
message_id: raw_email[/(?<=^Message-ID: )\S*/])
|
||||||
end
|
end
|
||||||
|
|
||||||
let(:raw_email) { File.read(Rails.root.join('test', 'data', 'mail', 'mail055.box')) }
|
let(:raw_email) { File.read(Rails.root.join('test/data/mail/mail055.box')) }
|
||||||
|
|
||||||
it 'does not fire' do
|
it 'does not fire' do
|
||||||
expect { Channel::EmailParser.new.process({}, raw_email) }
|
expect { Channel::EmailParser.new.process({}, raw_email) }
|
||||||
|
|
|
@ -21,7 +21,7 @@ require 'rspec/rails'
|
||||||
# directory. Alternatively, in the individual `*_spec.rb` files, manually
|
# directory. Alternatively, in the individual `*_spec.rb` files, manually
|
||||||
# require only the support files necessary.
|
# require only the support files necessary.
|
||||||
#
|
#
|
||||||
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
|
Dir[Rails.root.join('spec/support/**/*.rb')].sort.each { |f| require f }
|
||||||
|
|
||||||
# Checks for pending migration and applies them before tests are run.
|
# Checks for pending migration and applies them before tests are run.
|
||||||
# If you are not using ActiveRecord, you can remove this line.
|
# If you are not using ActiveRecord, you can remove this line.
|
||||||
|
|
|
@ -27,7 +27,7 @@ RSpec.describe 'Monitoring', type: :request do
|
||||||
channel.last_log_out = nil
|
channel.last_log_out = nil
|
||||||
channel.save!
|
channel.save!
|
||||||
end
|
end
|
||||||
dir = Rails.root.join('tmp', 'unprocessable_mail')
|
dir = Rails.root.join('tmp/unprocessable_mail')
|
||||||
Dir.glob("#{dir}/*.eml") do |entry|
|
Dir.glob("#{dir}/*.eml") do |entry|
|
||||||
File.delete(entry)
|
File.delete(entry)
|
||||||
end
|
end
|
||||||
|
@ -457,7 +457,7 @@ RSpec.describe 'Monitoring', type: :request do
|
||||||
travel_back
|
travel_back
|
||||||
|
|
||||||
# health_check - unprocessable mail
|
# health_check - unprocessable mail
|
||||||
dir = Rails.root.join('tmp', 'unprocessable_mail')
|
dir = Rails.root.join('tmp/unprocessable_mail')
|
||||||
FileUtils.mkdir_p(dir)
|
FileUtils.mkdir_p(dir)
|
||||||
FileUtils.touch("#{dir}/test.eml")
|
FileUtils.touch("#{dir}/test.eml")
|
||||||
|
|
||||||
|
|
|
@ -133,6 +133,7 @@ RSpec.describe 'Telegram Webhook Integration', type: :request do
|
||||||
post '/api/v1/channels_telegram_webhook', params: read_message('private', 'start'), as: :json
|
post '/api/v1/channels_telegram_webhook', params: read_message('private', 'start'), as: :json
|
||||||
expect(response).to have_http_status(:not_found)
|
expect(response).to have_http_status(:not_found)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'bot id is missing' do
|
it 'bot id is missing' do
|
||||||
post '/api/v1/channels_telegram_webhook/not_existing', params: read_message('private', 'start'), as: :json
|
post '/api/v1/channels_telegram_webhook/not_existing', params: read_message('private', 'start'), as: :json
|
||||||
expect(response).to have_http_status(:unprocessable_entity)
|
expect(response).to have_http_status(:unprocessable_entity)
|
||||||
|
|
|
@ -140,7 +140,7 @@ RSpec.describe 'Twitter Webhook Integration', type: :request do
|
||||||
|
|
||||||
describe 'auto-creation of tickets/articles on webhook receipt' do
|
describe 'auto-creation of tickets/articles on webhook receipt' do
|
||||||
let(:webhook_payload) do
|
let(:webhook_payload) do
|
||||||
JSON.parse(File.read(Rails.root.join('test', 'data', 'twitter', payload_file))).symbolize_keys
|
JSON.parse(File.read(Rails.root.join('test/data/twitter', payload_file))).symbolize_keys
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'for outbound DMs' do
|
context 'for outbound DMs' do
|
||||||
|
@ -238,7 +238,7 @@ RSpec.describe 'Twitter Webhook Integration', type: :request do
|
||||||
before { post '/api/v1/channels_twitter_webhook', **previous_webhook_payload, as: :json }
|
before { post '/api/v1/channels_twitter_webhook', **previous_webhook_payload, as: :json }
|
||||||
|
|
||||||
let(:previous_webhook_payload) do
|
let(:previous_webhook_payload) do
|
||||||
JSON.parse(File.read(Rails.root.join('test', 'data', 'twitter', 'webhook2_direct_message.json'))).symbolize_keys
|
JSON.parse(File.read(Rails.root.join('test/data/twitter/webhook2_direct_message.json'))).symbolize_keys
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns 200' do
|
it 'returns 200' do
|
||||||
|
|
|
@ -66,7 +66,7 @@ RSpec.describe 'Search', type: :request, searchindex: true do
|
||||||
Store.add(
|
Store.add(
|
||||||
object: 'Ticket::Article',
|
object: 'Ticket::Article',
|
||||||
o_id: article.id,
|
o_id: article.id,
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'elasticsearch', 'es-normal.txt')),
|
data: File.binread(Rails.root.join('test/data/elasticsearch/es-normal.txt')),
|
||||||
filename: 'es-normal.txt',
|
filename: 'es-normal.txt',
|
||||||
preferences: {},
|
preferences: {},
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
|
|
|
@ -66,7 +66,7 @@ RSpec.describe 'Ticket Article Attachments', type: :request do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does test attachments for split' do
|
it 'does test attachments for split' do
|
||||||
email_file_path = Rails.root.join('test', 'data', 'mail', 'mail024.box')
|
email_file_path = Rails.root.join('test/data/mail/mail024.box')
|
||||||
email_raw_string = File.read(email_file_path)
|
email_raw_string = File.read(email_file_path)
|
||||||
ticket_p, article_p, _user_p = Channel::EmailParser.new.process({}, email_raw_string)
|
ticket_p, article_p, _user_p = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ RSpec.describe 'Ticket Article Attachments', type: :request do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does test attachments for forward' do
|
it 'does test attachments for forward' do
|
||||||
email_file_path = Rails.root.join('test', 'data', 'mail', 'mail008.box')
|
email_file_path = Rails.root.join('test/data/mail/mail008.box')
|
||||||
email_raw_string = File.read(email_file_path)
|
email_raw_string = File.read(email_file_path)
|
||||||
_ticket_p, article_p, _user_p = Channel::EmailParser.new.process({}, email_raw_string)
|
_ticket_p, article_p, _user_p = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ RSpec.describe 'Ticket Article Attachments', type: :request do
|
||||||
expect(json_response['attachments']).to be_a_kind_of(Array)
|
expect(json_response['attachments']).to be_a_kind_of(Array)
|
||||||
expect(json_response['attachments']).to be_blank
|
expect(json_response['attachments']).to be_blank
|
||||||
|
|
||||||
email_file_path = Rails.root.join('test', 'data', 'mail', 'mail024.box')
|
email_file_path = Rails.root.join('test/data/mail/mail024.box')
|
||||||
email_raw_string = File.read(email_file_path)
|
email_raw_string = File.read(email_file_path)
|
||||||
_ticket_p, article_p, _user_p = Channel::EmailParser.new.process({}, email_raw_string)
|
_ticket_p, article_p, _user_p = Channel::EmailParser.new.process({}, email_raw_string)
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ module BrowserTestHelper
|
||||||
self.until do
|
self.until do
|
||||||
|
|
||||||
yield
|
yield
|
||||||
rescue Capybara::ElementNotFound # rubocop:disable Lint/HandleExceptions
|
rescue Capybara::ElementNotFound # rubocop:disable Lint/SuppressedException
|
||||||
|
|
||||||
end
|
end
|
||||||
rescue Selenium::WebDriver::Error::TimeOutError => e
|
rescue Selenium::WebDriver::Error::TimeOutError => e
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# require all database migrations so we can test them without manual require
|
# require all database migrations so we can test them without manual require
|
||||||
Rails.root.join('db', 'migrate').children.each do |migration|
|
Rails.root.join('db/migrate').children.each do |migration|
|
||||||
require migration.to_s
|
require migration.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ RSpec.describe 'Auto wizard', type: :system, set_up: false do
|
||||||
it 'Automatic setup and login' do
|
it 'Automatic setup and login' do
|
||||||
|
|
||||||
FileUtils.ln(
|
FileUtils.ln(
|
||||||
Rails.root.join('contrib', 'auto_wizard_test.json'),
|
Rails.root.join('contrib/auto_wizard_test.json'),
|
||||||
Rails.root.join('auto_wizard.json'),
|
Rails.root.join('auto_wizard.json'),
|
||||||
force: true
|
force: true
|
||||||
)
|
)
|
||||||
|
|
|
@ -44,8 +44,8 @@ class AgentTicketAttachmentTest < TestCase
|
||||||
# add attachment, attachment check should quiet
|
# add attachment, attachment check should quiet
|
||||||
file_upload(
|
file_upload(
|
||||||
css: '.content.active .attachmentPlaceholder-inputHolder input',
|
css: '.content.active .attachmentPlaceholder-inputHolder input',
|
||||||
files: [Rails.root.join('test', 'data', 'upload', 'upload1.txt'),
|
files: [Rails.root.join('test/data/upload/upload1.txt'),
|
||||||
Rails.root.join('test', 'data', 'upload', 'upload2.jpg')],
|
Rails.root.join('test/data/upload/upload2.jpg')],
|
||||||
)
|
)
|
||||||
|
|
||||||
# upload might take a while
|
# upload might take a while
|
||||||
|
@ -98,7 +98,7 @@ class AgentTicketAttachmentTest < TestCase
|
||||||
# add attachment, attachment check should quiet
|
# add attachment, attachment check should quiet
|
||||||
file_upload(
|
file_upload(
|
||||||
css: '.content.active .attachmentPlaceholder-inputHolder input',
|
css: '.content.active .attachmentPlaceholder-inputHolder input',
|
||||||
files: [Rails.root.join('test', 'data', 'upload', 'upload1.txt')],
|
files: [Rails.root.join('test/data/upload/upload1.txt')],
|
||||||
)
|
)
|
||||||
|
|
||||||
# upload might take a while
|
# upload might take a while
|
||||||
|
@ -145,8 +145,8 @@ class AgentTicketAttachmentTest < TestCase
|
||||||
# add attachment without body
|
# add attachment without body
|
||||||
file_upload(
|
file_upload(
|
||||||
css: '.content.active .attachmentPlaceholder-inputHolder input',
|
css: '.content.active .attachmentPlaceholder-inputHolder input',
|
||||||
files: [Rails.root.join('test', 'data', 'upload', 'upload1.txt'),
|
files: [Rails.root.join('test/data/upload/upload1.txt'),
|
||||||
Rails.root.join('test', 'data', 'upload', 'upload2.jpg')],
|
Rails.root.join('test/data/upload/upload2.jpg')],
|
||||||
)
|
)
|
||||||
|
|
||||||
# upload might take a while
|
# upload might take a while
|
||||||
|
|
|
@ -43,7 +43,7 @@ class AgentTicketZoomHideTest < TestCase
|
||||||
ticket_update(
|
ticket_update(
|
||||||
data: {
|
data: {
|
||||||
body: 'added image attachment',
|
body: 'added image attachment',
|
||||||
files: [Rails.root.join('test', 'data', 'upload', 'upload2.jpg')],
|
files: [Rails.root.join('test/data/upload/upload2.jpg')],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
ENV['RAILS_ENV'] = 'test'
|
ENV['RAILS_ENV'] = 'test'
|
||||||
# rubocop:disable HandleExceptions, NonLocalExitFromIterator, Style/GuardClause, Lint/MissingCopEnableDirective
|
# rubocop:disable Lint/SuppressedException, Lint/NonLocalExitFromIterator, Style/GuardClause, Lint/MissingCopEnableDirective
|
||||||
require File.expand_path('../config/environment', __dir__)
|
require File.expand_path('../config/environment', __dir__)
|
||||||
require 'selenium-webdriver'
|
require 'selenium-webdriver'
|
||||||
require 'json'
|
require 'json'
|
||||||
|
@ -1475,7 +1475,7 @@ set type of task (closeTab, closeNextInOverview, stayOnTab)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
rescue
|
rescue # rubocop:disable Lint/SuppressedException
|
||||||
# try again
|
# try again
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1537,7 +1537,7 @@ wait untill text in selector disabppears
|
||||||
sleep 1
|
sleep 1
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
rescue
|
rescue # rubocop:disable Lint/SuppressedException
|
||||||
# try again
|
# try again
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1700,7 +1700,7 @@ wait untill text in selector disabppears
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
rescue
|
rescue # rubocop:disable Lint/SuppressedException
|
||||||
# try again
|
# try again
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -2542,7 +2542,7 @@ wait untill text in selector disabppears
|
||||||
if text.match?(/(Discard your unsaved changes.|Verwerfen der)/)
|
if text.match?(/(Discard your unsaved changes.|Verwerfen der)/)
|
||||||
found = true
|
found = true
|
||||||
end
|
end
|
||||||
rescue
|
rescue # rubocop:disable Lint/SuppressedException
|
||||||
# try again
|
# try again
|
||||||
end
|
end
|
||||||
sleep 1
|
sleep 1
|
||||||
|
@ -2580,7 +2580,7 @@ wait untill text in selector disabppears
|
||||||
sleep 1
|
sleep 1
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
rescue
|
rescue # rubocop:disable Lint/SuppressedException
|
||||||
# try again
|
# try again
|
||||||
end
|
end
|
||||||
sleep 1
|
sleep 1
|
||||||
|
@ -4485,7 +4485,7 @@ wait untill text in selector disabppears
|
||||||
puts "#{time}/#{log.level}: #{log.message}"
|
puts "#{time}/#{log.level}: #{log.message}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
rescue
|
rescue # rubocop:disable Lint/SuppressedException
|
||||||
# failed to get logs
|
# failed to get logs
|
||||||
end
|
end
|
||||||
return if !DEBUG
|
return if !DEBUG
|
||||||
|
|
|
@ -143,7 +143,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
|
||||||
Store.add(
|
Store.add(
|
||||||
object: 'Ticket::Article',
|
object: 'Ticket::Article',
|
||||||
o_id: article1.id,
|
o_id: article1.id,
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'elasticsearch', 'es-normal.txt')),
|
data: File.binread(Rails.root.join('test/data/elasticsearch/es-normal.txt')),
|
||||||
filename: 'es-normal.txt',
|
filename: 'es-normal.txt',
|
||||||
preferences: {},
|
preferences: {},
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
|
@ -205,7 +205,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
|
||||||
Store.add(
|
Store.add(
|
||||||
object: 'Ticket::Article',
|
object: 'Ticket::Article',
|
||||||
o_id: article1.id,
|
o_id: article1.id,
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'elasticsearch', 'es-normal.txt')),
|
data: File.binread(Rails.root.join('test/data/elasticsearch/es-normal.txt')),
|
||||||
filename: 'es-normal.txt',
|
filename: 'es-normal.txt',
|
||||||
preferences: {},
|
preferences: {},
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
|
@ -216,7 +216,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
|
||||||
Store.add(
|
Store.add(
|
||||||
object: 'Ticket::Article',
|
object: 'Ticket::Article',
|
||||||
o_id: article1.id,
|
o_id: article1.id,
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'elasticsearch', 'es-pdf1.pdf')),
|
data: File.binread(Rails.root.join('test/data/elasticsearch/es-pdf1.pdf')),
|
||||||
filename: 'es-pdf1.pdf',
|
filename: 'es-pdf1.pdf',
|
||||||
preferences: {},
|
preferences: {},
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
|
@ -227,7 +227,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
|
||||||
Store.add(
|
Store.add(
|
||||||
object: 'Ticket::Article',
|
object: 'Ticket::Article',
|
||||||
o_id: article1.id,
|
o_id: article1.id,
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'elasticsearch', 'es-box1.box')),
|
data: File.binread(Rails.root.join('test/data/elasticsearch/es-box1.box')),
|
||||||
filename: 'mail1.box',
|
filename: 'mail1.box',
|
||||||
preferences: {},
|
preferences: {},
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
|
@ -238,7 +238,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
|
||||||
Store.add(
|
Store.add(
|
||||||
object: 'Ticket::Article',
|
object: 'Ticket::Article',
|
||||||
o_id: article1.id,
|
o_id: article1.id,
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'elasticsearch', 'es-too-big.txt')),
|
data: File.binread(Rails.root.join('test/data/elasticsearch/es-too-big.txt')),
|
||||||
filename: 'es-too-big.txt',
|
filename: 'es-too-big.txt',
|
||||||
preferences: {},
|
preferences: {},
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
|
|
|
@ -93,7 +93,7 @@ Oversized Email Message Body #{'#' * 120_000}
|
||||||
".gsub(/\n/, "\r\n")
|
".gsub(/\n/, "\r\n")
|
||||||
|
|
||||||
large_message_md5 = Digest::MD5.hexdigest(large_message)
|
large_message_md5 = Digest::MD5.hexdigest(large_message)
|
||||||
large_message_size = format('%.2f', large_message.size.to_f / 1024 / 1024)
|
large_message_size = format('%<MB>.2f', MB: large_message.size.to_f / 1024 / 1024)
|
||||||
|
|
||||||
imap.append(@folder, large_message, [], Time.zone.now)
|
imap.append(@folder, large_message, [], Time.zone.now)
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ Oversized Email Message Body #{'#' * 120_000}
|
||||||
|
|
||||||
# 1. verify that the oversized email has been saved locally to:
|
# 1. verify that the oversized email has been saved locally to:
|
||||||
# /tmp/oversized_mail/yyyy-mm-ddThh:mm:ss-:md5.eml
|
# /tmp/oversized_mail/yyyy-mm-ddThh:mm:ss-:md5.eml
|
||||||
path = Rails.root.join('tmp', 'oversized_mail')
|
path = Rails.root.join('tmp/oversized_mail')
|
||||||
target_files = Dir.entries(path).select do |filename|
|
target_files = Dir.entries(path).select do |filename|
|
||||||
filename =~ /^#{large_message_md5}\.eml$/
|
filename =~ /^#{large_message_md5}\.eml$/
|
||||||
end
|
end
|
||||||
|
@ -111,7 +111,7 @@ Oversized Email Message Body #{'#' * 120_000}
|
||||||
target_file = target_files.max
|
target_file = target_files.max
|
||||||
|
|
||||||
# verify that the file is byte for byte identical to the sent message
|
# verify that the file is byte for byte identical to the sent message
|
||||||
file_path = Rails.root.join('tmp', 'oversized_mail', target_file)
|
file_path = Rails.root.join('tmp/oversized_mail', target_file)
|
||||||
eml_data = File.read(file_path)
|
eml_data = File.read(file_path)
|
||||||
assert_equal(large_message, eml_data)
|
assert_equal(large_message, eml_data)
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ Oversized Email Message Body #{'#' * 120_000}
|
||||||
|
|
||||||
# 1. verify that the oversized email has been saved locally to:
|
# 1. verify that the oversized email has been saved locally to:
|
||||||
# /tmp/oversized_mail/yyyy-mm-ddThh:mm:ss-:md5.eml
|
# /tmp/oversized_mail/yyyy-mm-ddThh:mm:ss-:md5.eml
|
||||||
path = Rails.root.join('tmp', 'oversized_mail')
|
path = Rails.root.join('tmp/oversized_mail')
|
||||||
target_files = Dir.entries(path).select do |filename|
|
target_files = Dir.entries(path).select do |filename|
|
||||||
filename =~ /^.+?\.eml$/
|
filename =~ /^.+?\.eml$/
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,8 +17,8 @@ class ActiveSupport::TestCase
|
||||||
Cache.clear
|
Cache.clear
|
||||||
|
|
||||||
# load seeds
|
# load seeds
|
||||||
load Rails.root.join('db', 'seeds.rb')
|
load Rails.root.join('db/seeds.rb')
|
||||||
load Rails.root.join('test', 'fixtures', 'seeds.rb')
|
load Rails.root.join('test/fixtures/seeds.rb')
|
||||||
|
|
||||||
# set system mode to done / to activate
|
# set system mode to done / to activate
|
||||||
Setting.set('system_init_done', true)
|
Setting.set('system_init_done', true)
|
||||||
|
|
|
@ -14,8 +14,8 @@ class ActiveSupport::TestCase
|
||||||
Cache.clear
|
Cache.clear
|
||||||
|
|
||||||
# load seeds
|
# load seeds
|
||||||
load Rails.root.join('db', 'seeds.rb')
|
load Rails.root.join('db/seeds.rb')
|
||||||
load Rails.root.join('test', 'fixtures', 'seeds.rb')
|
load Rails.root.join('test/fixtures/seeds.rb')
|
||||||
|
|
||||||
# set system mode to done / to activate
|
# set system mode to done / to activate
|
||||||
Setting.set('system_init_done', true)
|
Setting.set('system_init_done', true)
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
# automatically require all helpers in test/support
|
# automatically require all helpers in test/support
|
||||||
Dir[Rails.root.join('test', 'support', '**', '*.rb')].each { |f| require f }
|
Dir[Rails.root.join('test/support/**/*.rb')].sort.each { |f| require f }
|
||||||
|
|
|
@ -4,7 +4,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
test 'store fs - get_location' do
|
test 'store fs - get_location' do
|
||||||
sha = 'ed7002b439e9ac845f22357d822bac1444730fbdb6016d3ec9432297b9ec9f73'
|
sha = 'ed7002b439e9ac845f22357d822bac1444730fbdb6016d3ec9432297b9ec9f73'
|
||||||
location = Store::Provider::File.get_location(sha)
|
location = Store::Provider::File.get_location(sha)
|
||||||
assert_equal(Rails.root.join('storage', 'fs', 'ed70', '02b4', '39e9a', 'c845f', '22357d8', '22bac14', '44730fbdb6016d3ec9432297b9ec9f73').to_s, location)
|
assert_equal(Rails.root.join('storage/fs/ed70/02b4/39e9a/c845f/22357d8/22bac14/44730fbdb6016d3ec9432297b9ec9f73').to_s, location)
|
||||||
end
|
end
|
||||||
|
|
||||||
test 'store fs - empty dir remove' do
|
test 'store fs - empty dir remove' do
|
||||||
|
@ -18,11 +18,11 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
Store::Provider::File.delete(sha)
|
Store::Provider::File.delete(sha)
|
||||||
exists = File.exist?(location)
|
exists = File.exist?(location)
|
||||||
assert_not(exists)
|
assert_not(exists)
|
||||||
exists = File.exist?(Rails.root.join('storage', 'fs', 'ed70', '02b4'))
|
exists = File.exist?(Rails.root.join('storage/fs/ed70/02b4'))
|
||||||
assert_not(exists)
|
assert_not(exists)
|
||||||
exists = File.exist?(Rails.root.join('storage', 'fs', 'ed70'))
|
exists = File.exist?(Rails.root.join('storage/fs/ed70'))
|
||||||
assert_not(exists)
|
assert_not(exists)
|
||||||
exists = File.exist?(Rails.root.join('storage', 'fs'))
|
exists = File.exist?(Rails.root.join('storage/fs'))
|
||||||
assert(exists)
|
assert(exists)
|
||||||
exists = File.exist?(Rails.root.join('storage'))
|
exists = File.exist?(Rails.root.join('storage'))
|
||||||
assert(exists)
|
assert(exists)
|
||||||
|
@ -41,12 +41,12 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
o_id: 2,
|
o_id: 2,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'pdf', 'test1.pdf')),
|
data: File.binread(Rails.root.join('test/data/pdf/test1.pdf')),
|
||||||
filename: 'test.pdf',
|
filename: 'test.pdf',
|
||||||
o_id: 3,
|
o_id: 3,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'pdf', 'test1.pdf')),
|
data: File.binread(Rails.root.join('test/data/pdf/test1.pdf')),
|
||||||
filename: 'test-again.pdf',
|
filename: 'test-again.pdf',
|
||||||
o_id: 4,
|
o_id: 4,
|
||||||
},
|
},
|
||||||
|
@ -158,7 +158,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject1',
|
object: 'SomeObject1',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'upload', 'upload1.txt')),
|
data: File.binread(Rails.root.join('test/data/upload/upload1.txt')),
|
||||||
filename: 'test1.pdf',
|
filename: 'test1.pdf',
|
||||||
preferences: {
|
preferences: {
|
||||||
content_type: 'text/plain',
|
content_type: 'text/plain',
|
||||||
|
@ -180,7 +180,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject2',
|
object: 'SomeObject2',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'upload', 'upload1.txt')),
|
data: File.binread(Rails.root.join('test/data/upload/upload1.txt')),
|
||||||
filename: 'test1.pdf',
|
filename: 'test1.pdf',
|
||||||
preferences: {
|
preferences: {
|
||||||
content_type: 'image/jpg',
|
content_type: 'image/jpg',
|
||||||
|
@ -202,7 +202,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject3',
|
object: 'SomeObject3',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'upload', 'upload2.jpg')),
|
data: File.binread(Rails.root.join('test/data/upload/upload2.jpg')),
|
||||||
filename: 'test1.pdf',
|
filename: 'test1.pdf',
|
||||||
preferences: {
|
preferences: {
|
||||||
content_type: 'image/jpg',
|
content_type: 'image/jpg',
|
||||||
|
@ -228,7 +228,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject4',
|
object: 'SomeObject4',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'image', '1000x1000.png')),
|
data: File.binread(Rails.root.join('test/data/image/1000x1000.png')),
|
||||||
filename: 'test1.png',
|
filename: 'test1.png',
|
||||||
preferences: {
|
preferences: {
|
||||||
content_type: 'image/png',
|
content_type: 'image/png',
|
||||||
|
@ -252,7 +252,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject5',
|
object: 'SomeObject5',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'image', '1x1.png')),
|
data: File.binread(Rails.root.join('test/data/image/1x1.png')),
|
||||||
filename: 'test1.png',
|
filename: 'test1.png',
|
||||||
preferences: {
|
preferences: {
|
||||||
content_type: 'image/png',
|
content_type: 'image/png',
|
||||||
|
@ -274,7 +274,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject6',
|
object: 'SomeObject6',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'image', '4000x1.jpg')),
|
data: File.binread(Rails.root.join('test/data/image/4000x1.jpg')),
|
||||||
filename: 'test1.jpg',
|
filename: 'test1.jpg',
|
||||||
preferences: {
|
preferences: {
|
||||||
content_type: 'image/jpg',
|
content_type: 'image/jpg',
|
||||||
|
@ -290,7 +290,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject7',
|
object: 'SomeObject7',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'image', '8000x25.jpg')),
|
data: File.binread(Rails.root.join('test/data/image/8000x25.jpg')),
|
||||||
filename: 'test1.jpg',
|
filename: 'test1.jpg',
|
||||||
preferences: {
|
preferences: {
|
||||||
content_type: 'image/jpg',
|
content_type: 'image/jpg',
|
||||||
|
@ -306,7 +306,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject8',
|
object: 'SomeObject8',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'image', '8000x300.jpg')),
|
data: File.binread(Rails.root.join('test/data/image/8000x300.jpg')),
|
||||||
filename: 'test1.jpg',
|
filename: 'test1.jpg',
|
||||||
preferences: {
|
preferences: {
|
||||||
content_type: 'image/jpg',
|
content_type: 'image/jpg',
|
||||||
|
@ -323,7 +323,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject3',
|
object: 'SomeObject3',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'upload', 'upload2.jpg')),
|
data: File.binread(Rails.root.join('test/data/upload/upload2.jpg')),
|
||||||
filename: 'test1.pdf',
|
filename: 'test1.pdf',
|
||||||
preferences: {
|
preferences: {
|
||||||
content_type: 'image/jpg',
|
content_type: 'image/jpg',
|
||||||
|
@ -340,7 +340,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject1',
|
object: 'SomeObject1',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'upload', 'upload1.txt')),
|
data: File.binread(Rails.root.join('test/data/upload/upload1.txt')),
|
||||||
filename: 'test1.pdf',
|
filename: 'test1.pdf',
|
||||||
preferences: {
|
preferences: {
|
||||||
content_type: 'text/plain',
|
content_type: 'text/plain',
|
||||||
|
@ -358,7 +358,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject1',
|
object: 'SomeObject1',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'upload', 'upload1.txt')),
|
data: File.binread(Rails.root.join('test/data/upload/upload1.txt')),
|
||||||
filename: 'test1.pdf',
|
filename: 'test1.pdf',
|
||||||
preferences: {
|
preferences: {
|
||||||
content_type: 'text/plain',
|
content_type: 'text/plain',
|
||||||
|
@ -385,7 +385,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject1',
|
object: 'SomeObject1',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'upload', 'upload1.txt')),
|
data: File.binread(Rails.root.join('test/data/upload/upload1.txt')),
|
||||||
filename: 'test1.pdf',
|
filename: 'test1.pdf',
|
||||||
preferences: preferences,
|
preferences: preferences,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
|
@ -408,7 +408,7 @@ class StoreTest < ActiveSupport::TestCase
|
||||||
store = Store.add(
|
store = Store.add(
|
||||||
object: 'SomeObject1',
|
object: 'SomeObject1',
|
||||||
o_id: rand(1_234_567_890),
|
o_id: rand(1_234_567_890),
|
||||||
data: File.binread(Rails.root.join('test', 'data', 'upload', 'upload1.txt')),
|
data: File.binread(Rails.root.join('test/data/upload/upload1.txt')),
|
||||||
filename: 'test1.pdf',
|
filename: 'test1.pdf',
|
||||||
preferences: preferences,
|
preferences: preferences,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
|
|
|
@ -707,7 +707,7 @@ class TicketTriggerRecursiveDisabledTest < ActiveSupport::TestCase
|
||||||
)
|
)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket_p.title)
|
assert_equal('aaäöüßad asd', ticket_p.title)
|
||||||
|
@ -833,21 +833,21 @@ class TicketTriggerRecursiveDisabledTest < ActiveSupport::TestCase
|
||||||
assert_equal('text/html', article_p.content_type)
|
assert_equal('text/html', article_p.content_type)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal('new', ticket_p.state.name)
|
assert_equal('new', ticket_p.state.name)
|
||||||
assert_equal(2, ticket_p.articles.count)
|
assert_equal(2, ticket_p.articles.count)
|
||||||
|
|
||||||
# process mail with Precedence header (no auto response)
|
# process mail with Precedence header (no auto response)
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail2.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail2.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal('new', ticket_p.state.name)
|
assert_equal('new', ticket_p.state.name)
|
||||||
assert_equal(1, ticket_p.articles.count)
|
assert_equal(1, ticket_p.articles.count)
|
||||||
|
|
||||||
# process mail with abuse@ (no auto response)
|
# process mail with abuse@ (no auto response)
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail3.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail3.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal('new', ticket_p.state.name)
|
assert_equal('new', ticket_p.state.name)
|
||||||
|
@ -926,7 +926,7 @@ class TicketTriggerRecursiveDisabledTest < ActiveSupport::TestCase
|
||||||
)
|
)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket_p.title)
|
assert_equal('aaäöüßad asd', ticket_p.title)
|
||||||
|
@ -990,7 +990,7 @@ class TicketTriggerRecursiveDisabledTest < ActiveSupport::TestCase
|
||||||
)
|
)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket_p.title)
|
assert_equal('aaäöüßad asd', ticket_p.title)
|
||||||
|
@ -1074,7 +1074,7 @@ class TicketTriggerRecursiveDisabledTest < ActiveSupport::TestCase
|
||||||
)
|
)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket_p.title)
|
assert_equal('aaäöüßad asd', ticket_p.title)
|
||||||
|
@ -1153,7 +1153,7 @@ class TicketTriggerRecursiveDisabledTest < ActiveSupport::TestCase
|
||||||
)
|
)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal(1, ticket_p.articles.count)
|
assert_equal(1, ticket_p.articles.count)
|
||||||
|
@ -4231,7 +4231,7 @@ class TicketTriggerRecursiveDisabledTest < ActiveSupport::TestCase
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
|
||||||
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test', 'data', 'mail', 'mail065.box')))
|
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test/data/mail/mail065.box')))
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket1.title, 'ticket1.title verify')
|
assert_equal('aaäöüßad asd', ticket1.title, 'ticket1.title verify')
|
||||||
assert_equal('Users', ticket1.group.name, 'ticket1.group verify')
|
assert_equal('Users', ticket1.group.name, 'ticket1.group verify')
|
||||||
|
@ -4272,7 +4272,7 @@ class TicketTriggerRecursiveDisabledTest < ActiveSupport::TestCase
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
|
||||||
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test', 'data', 'mail', 'mail065.box')))
|
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test/data/mail/mail065.box')))
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket1.title, 'ticket1.title verify')
|
assert_equal('aaäöüßad asd', ticket1.title, 'ticket1.title verify')
|
||||||
assert_equal('Users', ticket1.group.name, 'ticket1.group verify')
|
assert_equal('Users', ticket1.group.name, 'ticket1.group verify')
|
||||||
|
|
|
@ -721,7 +721,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
)
|
)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket_p.title)
|
assert_equal('aaäöüßad asd', ticket_p.title)
|
||||||
|
@ -847,7 +847,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
assert_equal('text/html', article_p.content_type)
|
assert_equal('text/html', article_p.content_type)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p1, _article_p1, _user_p1, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p1, _article_p1, _user_p1, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_not_equal(ticket_p.id, ticket_p1.id)
|
assert_not_equal(ticket_p.id, ticket_p1.id)
|
||||||
|
@ -855,7 +855,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
assert_equal(2, ticket_p1.articles.count)
|
assert_equal(2, ticket_p1.articles.count)
|
||||||
|
|
||||||
# process mail with Precedence header (no auto response)
|
# process mail with Precedence header (no auto response)
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail2.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail2.box'))
|
||||||
ticket_p2, _article_p2, _user_p2, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p2, _article_p2, _user_p2, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_not_equal(ticket_p.id, ticket_p1.id)
|
assert_not_equal(ticket_p.id, ticket_p1.id)
|
||||||
|
@ -865,7 +865,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
assert_equal(1, ticket_p2.articles.count)
|
assert_equal(1, ticket_p2.articles.count)
|
||||||
|
|
||||||
# process mail with abuse@ (no auto response)
|
# process mail with abuse@ (no auto response)
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail3.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail3.box'))
|
||||||
ticket_p3, _article_p3, _user_p3, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p3, _article_p3, _user_p3, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_not_equal(ticket_p.id, ticket_p1.id)
|
assert_not_equal(ticket_p.id, ticket_p1.id)
|
||||||
|
@ -951,7 +951,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
)
|
)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket_p.title)
|
assert_equal('aaäöüßad asd', ticket_p.title)
|
||||||
|
@ -1016,7 +1016,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
)
|
)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket_p.title)
|
assert_equal('aaäöüßad asd', ticket_p.title)
|
||||||
|
@ -1100,7 +1100,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
)
|
)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket_p.title)
|
assert_equal('aaäöüßad asd', ticket_p.title)
|
||||||
|
@ -1179,7 +1179,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
)
|
)
|
||||||
|
|
||||||
# process mail without Precedence header
|
# process mail without Precedence header
|
||||||
content = File.read(Rails.root.join('test', 'data', 'ticket_trigger', 'mail1.box'))
|
content = File.read(Rails.root.join('test/data/ticket_trigger/mail1.box'))
|
||||||
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
ticket_p, _article_p, _user_p, _mail = Channel::EmailParser.new.process({}, content)
|
||||||
|
|
||||||
assert_equal(1, ticket_p.articles.count)
|
assert_equal(1, ticket_p.articles.count)
|
||||||
|
@ -4257,7 +4257,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
|
||||||
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test', 'data', 'mail', 'mail065.box')))
|
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test/data/mail/mail065.box')))
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket1.title, 'ticket1.title verify')
|
assert_equal('aaäöüßad asd', ticket1.title, 'ticket1.title verify')
|
||||||
assert_equal('Users', ticket1.group.name, 'ticket1.group verify')
|
assert_equal('Users', ticket1.group.name, 'ticket1.group verify')
|
||||||
|
@ -4298,7 +4298,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
|
||||||
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test', 'data', 'mail', 'mail065.box')))
|
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test/data/mail/mail065.box')))
|
||||||
|
|
||||||
assert_equal('aaäöüßad asd', ticket1.title, 'ticket1.title verify')
|
assert_equal('aaäöüßad asd', ticket1.title, 'ticket1.title verify')
|
||||||
assert_equal('Users', ticket1.group.name, 'ticket1.group verify')
|
assert_equal('Users', ticket1.group.name, 'ticket1.group verify')
|
||||||
|
@ -4626,7 +4626,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
|
||||||
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test', 'data', 'mail', 'mail048.box')))
|
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test/data/mail/mail048.box')))
|
||||||
|
|
||||||
assert_equal('AW: OTRS / Anfrage OTRS Einführung/Präsentation [Ticket#11545]', ticket1.title, 'ticket1.title verify')
|
assert_equal('AW: OTRS / Anfrage OTRS Einführung/Präsentation [Ticket#11545]', ticket1.title, 'ticket1.title verify')
|
||||||
assert_equal(2, ticket1.articles.count, 'ticket1.articles verify')
|
assert_equal(2, ticket1.articles.count, 'ticket1.articles verify')
|
||||||
|
@ -4671,7 +4671,7 @@ class TicketTriggerTest < ActiveSupport::TestCase
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
)
|
)
|
||||||
|
|
||||||
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test', 'data', 'mail', 'mail069.box')))
|
ticket1, _article1, _user, _mail = Channel::EmailParser.new.process({}, File.read(Rails.root.join('test/data/mail/mail069.box')))
|
||||||
|
|
||||||
assert_equal('Online-apotheke. Günstigster Preis. Ohne Rezepte', ticket1.title, 'ticket1.title verify')
|
assert_equal('Online-apotheke. Günstigster Preis. Ohne Rezepte', ticket1.title, 'ticket1.title verify')
|
||||||
assert_equal(2, ticket1.articles.count, 'ticket1.articles verify')
|
assert_equal(2, ticket1.articles.count, 'ticket1.articles verify')
|
||||||
|
|
Loading…
Reference in a new issue