Fixes #4055 - Migrations (Zendesk, Kayako) currently do not support custom dropdown multi-select fields.

This commit is contained in:
Dominik Klein 2022-04-22 16:40:18 +02:00
parent 652d2c27e9
commit 54227e82ac
62 changed files with 16064 additions and 13452 deletions

View file

@ -412,16 +412,6 @@ RSpec/MessageSpies:
- 'spec/lib/import/otrs/ticket_spec.rb'
- 'spec/lib/import/otrs/user_factory_spec.rb'
- 'spec/lib/import/otrs/user_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/base_examples.rb'
- 'spec/lib/import/zendesk/object_attribute/checkbox_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/date_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/decimal_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/dropdown_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/integer_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/regexp_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/tagger_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/text_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/textarea_spec.rb'
- 'spec/lib/ldap/group_spec.rb'
- 'spec/lib/ldap/guid_spec.rb'
- 'spec/lib/ldap/user_spec.rb'
@ -483,16 +473,6 @@ RSpec/MultipleExpectations:
- 'spec/lib/import/otrs/priority_factory_spec.rb'
- 'spec/lib/import/otrs/requester_spec.rb'
- 'spec/lib/import/otrs/state_factory_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/base_examples.rb'
- 'spec/lib/import/zendesk/object_attribute/checkbox_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/date_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/decimal_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/dropdown_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/integer_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/regexp_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/tagger_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/text_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/textarea_spec.rb'
- 'spec/lib/ldap/group_spec.rb'
- 'spec/lib/ldap/guid_spec.rb'
- 'spec/lib/ldap/user_spec.rb'
@ -660,16 +640,6 @@ RSpec/VerifiedDoubles:
- 'spec/db/migrate/issue_2460_fix_corrupted_twitter_ids_spec.rb'
- 'spec/jobs/communicate_twitter_job_spec.rb'
- 'spec/lib/external_sync_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/base_examples.rb'
- 'spec/lib/import/zendesk/object_attribute/checkbox_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/date_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/decimal_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/dropdown_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/integer_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/regexp_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/tagger_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/text_spec.rb'
- 'spec/lib/import/zendesk/object_attribute/textarea_spec.rb'
- 'spec/lib/ldap_spec.rb'
- 'spec/lib/sequencer/sequence/import/ldap/users_spec.rb'
- 'spec/lib/sequencer/unit/import/zendesk/sub_sequence/base_examples.rb'

View file

@ -1,79 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
class Zendesk
module ObjectAttribute
class Base
def initialize(object, name, attribute)
initialize_data_option(attribute)
init_callback(attribute)
add(object, name, attribute)
end
private
def init_callback(_attribute); end
def add(object, name, attribute)
ObjectManager::Attribute.add(attribute_config(object, name, attribute))
ObjectManager::Attribute.migration_execute(false)
rescue
# rubocop:disable Style/SpecialGlobalVars
raise $!, "Problem with ObjectManager Attribute '#{name}': #{$!}", $!.backtrace
# rubocop:enable Style/SpecialGlobalVars
end
def attribute_config(object, name, attribute)
{
object: object.to_s,
name: name,
display: attribute.title,
data_type: data_type(attribute),
data_option: @data_option,
editable: !attribute.removable,
active: attribute.active,
screens: screens(attribute),
position: attribute.position,
created_by_id: 1,
updated_by_id: 1,
}
end
def screens(attribute)
config = {
view: {
'-all-' => {
shown: true,
},
}
}
return config if !attribute.visible_in_portal && attribute.required_in_portal
{
edit: {
Customer: {
shown: attribute.visible_in_portal,
null: !attribute.required_in_portal,
},
}.merge(config)
}
end
def initialize_data_option(attribute)
@data_option = {
null: !attribute.required,
note: attribute.description,
}
end
def data_type(attribute)
attribute.type
end
end
end
end
end

View file

@ -1,26 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
class Zendesk
module ObjectAttribute
class Checkbox < Import::Zendesk::ObjectAttribute::Base
def init_callback(_object_attribte)
@data_option.merge!(
default: false,
options: {
true => 'yes',
false => 'no',
},
)
end
private
def data_type(_attribute)
'boolean'
end
end
end
end
end

View file

@ -1,17 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
class Zendesk
module ObjectAttribute
class Date < Import::Zendesk::ObjectAttribute::Base
def init_callback(_object_attribte)
@data_option.merge!(
future: true,
past: true,
diff: 0,
)
end
end
end
end
end

View file

@ -1,10 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
class Zendesk
module ObjectAttribute
class Decimal < Import::Zendesk::ObjectAttribute::Text
end
end
end
end

View file

@ -1,10 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
class Zendesk
module ObjectAttribute
class Dropdown < Import::Zendesk::ObjectAttribute::Select
end
end
end
end

View file

@ -1,23 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
class Zendesk
module ObjectAttribute
class Integer < Import::Zendesk::ObjectAttribute::Base
def init_callback(_object_attribte)
@data_option.merge!(
min: 0,
max: 999_999_999,
)
end
private
def data_type(_attribute)
'integer'
end
end
end
end
end

View file

@ -1,24 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
class Zendesk
module ObjectAttribute
class Regexp < Import::Zendesk::ObjectAttribute::Base
def init_callback(object_attribte)
@data_option.merge!(
type: 'text',
maxlength: 255,
regex: object_attribte.regexp_for_validation,
)
end
private
def data_type(_attribute)
'input'
end
end
end
end
end

View file

@ -1,31 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
class Zendesk
module ObjectAttribute
class Select < Import::Zendesk::ObjectAttribute::Base
def init_callback(object_attribte)
@data_option.merge!(
default: '',
options: options(object_attribte),
)
end
private
def data_type(_attribute)
'select'
end
def options(object_attribte)
result = {}
object_attribte.custom_field_options.each do |entry|
result[ entry['value'] ] = entry['name']
end
result
end
end
end
end
end

View file

@ -1,10 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
class Zendesk
module ObjectAttribute
class Tagger < Import::Zendesk::ObjectAttribute::Select
end
end
end
end

View file

@ -1,23 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
class Zendesk
module ObjectAttribute
class Text < Import::Zendesk::ObjectAttribute::Base
def init_callback(_object_attribte)
@data_option.merge!(
type: 'text',
maxlength: 255,
)
end
private
def data_type(_attribute)
'input'
end
end
end
end
end

View file

@ -1,23 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
class Zendesk
module ObjectAttribute
class Textarea < Import::Zendesk::ObjectAttribute::Base
def init_callback(_object_attribte)
@data_option.merge!(
type: 'textarea',
maxlength: 255,
)
end
private
def data_type(_attribute)
'textarea'
end
end
end
end
end

View file

@ -0,0 +1,30 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Kayako
module ObjectAttribute
module AttributeType
class Checkbox < Sequencer::Unit::Import::Kayako::ObjectAttribute::AttributeType::Select
def local_value(value)
multiple_values = value.split(',').map(&:to_i)
relevant_options = attribute['options'].select { |option| multiple_values.include?(option['id']) }
value_locales = relevant_options.filter_map { |option| option['values'].detect { |locale_item| locale_item['locale'] == default_language } }
value_locales.map { |value_locale| value_locale['translation'] }
end
private
def data_type
'multiselect'
end
end
end
end
end
end
end
end

View file

@ -19,7 +19,7 @@ class Sequencer
private
def skip_attribute_types
@skip_attribute_types ||= %w[FILE CHECKBOX]
@skip_attribute_types ||= %w[FILE]
end
def allowed_system_attributes

View file

@ -8,7 +8,7 @@ class Sequencer
class Case < Sequencer::Unit::Import::Kayako::Request::Generic
def params
super.merge(
include: 'user,case_priority,case_status,channel,tag,case_type',
include: 'user,case_priority,case_status,channel,tag,case_type,case_field,field_option,locale_field',
fields: '+tags',
)
end

View file

@ -0,0 +1,85 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Base
def initialize(object, name, attribute)
initialize_data_option(attribute)
init_callback(attribute)
add(object, name, attribute)
end
private
def init_callback(_attribute); end
def add(object, name, attribute)
ObjectManager::Attribute.add(attribute_config(object, name, attribute))
ObjectManager::Attribute.migration_execute(false)
rescue
# rubocop:disable Style/SpecialGlobalVars
raise $!, "Problem with ObjectManager Attribute '#{name}': #{$!}", $!.backtrace
# rubocop:enable Style/SpecialGlobalVars
end
def attribute_config(object, name, attribute)
{
object: object.to_s,
name: name,
display: attribute.title,
data_type: data_type(attribute),
data_option: @data_option,
editable: !attribute.removable,
active: attribute.active,
screens: screens(attribute),
position: attribute.position,
created_by_id: 1,
updated_by_id: 1,
}
end
def screens(attribute)
config = {
view: {
'-all-' => {
shown: true,
},
}
}
return config if !attribute.visible_in_portal && attribute.required_in_portal
{
edit: {
Customer: {
shown: attribute.visible_in_portal,
null: !attribute.required_in_portal,
},
}.merge(config)
}
end
def initialize_data_option(attribute)
@data_option = {
null: !attribute.required,
note: attribute.description,
}
end
def data_type(attribute)
attribute.type
end
end
end
end
end
end
end
end

View file

@ -0,0 +1,31 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Checkbox < Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base
def init_callback(_object_attribte)
@data_option.merge!(
default: false,
options: {
true => 'yes',
false => 'no',
},
)
end
private
def data_type(_attribute)
'boolean'
end
end
end
end
end
end
end
end

View file

@ -0,0 +1,23 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Date < Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base
def init_callback(_object_attribte)
@data_option.merge!(
future: true,
past: true,
diff: 0,
)
end
end
end
end
end
end
end
end

View file

@ -0,0 +1,16 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Decimal < Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Text
end
end
end
end
end
end
end

View file

@ -0,0 +1,16 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Dropdown < Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Select
end
end
end
end
end
end
end

View file

@ -0,0 +1,29 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Integer < Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base
def init_callback(_object_attribte)
@data_option.merge!(
min: 0,
max: 999_999_999,
)
end
private
def data_type(_attribute)
'integer'
end
end
end
end
end
end
end
end

View file

@ -0,0 +1,19 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Multiselect < Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Select
def data_type(_attribute)
'multiselect'
end
end
end
end
end
end
end
end

View file

@ -0,0 +1,30 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Regexp < Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base
def init_callback(object_attribte)
@data_option.merge!(
type: 'text',
maxlength: 255,
regex: object_attribte.regexp_for_validation,
)
end
private
def data_type(_attribute)
'input'
end
end
end
end
end
end
end
end

View file

@ -0,0 +1,37 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Select < Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base
def init_callback(object_attribte)
@data_option.merge!(
default: '',
options: options(object_attribte),
)
end
private
def data_type(_attribute)
'select'
end
def options(object_attribte)
result = {}
object_attribte.custom_field_options.each do |entry|
result[ entry['value'] ] = entry['name']
end
result
end
end
end
end
end
end
end
end

View file

@ -0,0 +1,16 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Tagger < Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Select
end
end
end
end
end
end
end

View file

@ -0,0 +1,29 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Text < Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base
def init_callback(_object_attribte)
@data_option.merge!(
type: 'text',
maxlength: 255,
)
end
private
def data_type(_attribute)
'input'
end
end
end
end
end
end
end
end

View file

@ -0,0 +1,29 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sequencer
class Unit
module Import
module Zendesk
module ObjectAttribute
module AttributeType
class Textarea < Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base
def init_callback(_object_attribte)
@data_option.merge!(
type: 'textarea',
maxlength: 255,
)
end
private
def data_type(_attribute)
'textarea'
end
end
end
end
end
end
end
end

View file

@ -23,7 +23,7 @@ class Sequencer
end
def backend_class
"Import::Zendesk::ObjectAttribute::#{resource.type.capitalize}".constantize
"Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::#{resource.type.capitalize}".constantize
end
end
end

View file

@ -1,49 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
RSpec.shared_examples Import::Zendesk::ObjectAttribute::Base do
let(:attribute) do
double(
title: 'Example attribute',
description: 'Example attribute description',
removable: false,
active: true,
position: 12,
visible_in_portal: true,
required_in_portal: true,
required: true,
type: 'input',
custom_field_options: [],
regexp_for_validation: '',
)
end
describe 'exception handling' do
let(:error_text) { Faker::Lorem.sentence }
it 'extends ObjectManager Attribute exception message' do
expect(ObjectManager::Attribute).to receive(:add).and_raise(RuntimeError, error_text)
expect do
described_class.new('Ticket', 'example_field', attribute)
end.to raise_error(RuntimeError, %r{'example_field': #{error_text}$})
end
end
describe 'argument handling' do
it 'takes an ObjectLookup name as the first argument' do
expect(ObjectManager::Attribute)
.to receive(:add).with(hash_including(object: 'Ticket'))
described_class.new('Ticket', 'example_field', attribute)
end
it 'accepts a constant ObjectLookup name' do
expect(ObjectManager::Attribute)
.to receive(:add).with(hash_including(object: 'Ticket'))
described_class.new(Ticket, 'example_field', attribute)
end
end
end

View file

@ -1,62 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/import/zendesk/object_attribute/base_examples'
RSpec.describe Import::Zendesk::ObjectAttribute::Checkbox do
it_behaves_like Import::Zendesk::ObjectAttribute::Base
it 'imports boolean object attribute from checkbox object field' do
attribute = double(
title: 'Example attribute',
description: 'Example attribute description',
removable: false,
active: true,
position: 12,
visible_in_portal: true,
required_in_portal: true,
required: true,
type: 'checkbox',
)
expected_structure = {
object: 'Ticket',
name: 'example_field',
display: 'Example attribute',
data_type: 'boolean',
data_option: {
null: false,
note: 'Example attribute description',
default: false,
options: {
true => 'yes',
false => 'no'
}
},
editable: true,
active: true,
screens: {
edit: {
Customer: {
shown: true,
null: false
},
view: {
'-all-' => {
shown: true
}
}
}
},
position: 12,
created_by_id: 1,
updated_by_id: 1
}
expect(ObjectManager::Attribute).to receive(:add).with(expected_structure)
expect(ObjectManager::Attribute).to receive(:migration_execute)
described_class.new('Ticket', 'example_field', attribute)
end
end

View file

@ -1,63 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/import/zendesk/object_attribute/base_examples'
# required due to some of rails autoloading issues
require 'import/zendesk/object_attribute/date'
RSpec.describe Import::Zendesk::ObjectAttribute::Date do
it_behaves_like Import::Zendesk::ObjectAttribute::Base
it 'imports date object attribute from date object field' do
attribute = double(
title: 'Example attribute',
description: 'Example attribute description',
removable: false,
active: true,
position: 12,
visible_in_portal: true,
required_in_portal: true,
required: true,
type: 'date',
)
expected_structure = {
object: 'Ticket',
name: 'example_field',
display: 'Example attribute',
data_type: 'date',
data_option: {
null: false,
note: 'Example attribute description',
future: true,
past: true,
diff: 0,
},
editable: true,
active: true,
screens: {
edit: {
Customer: {
shown: true,
null: false
},
view: {
'-all-' => {
shown: true
}
}
}
},
position: 12,
created_by_id: 1,
updated_by_id: 1
}
expect(ObjectManager::Attribute).to receive(:add).with(expected_structure)
expect(ObjectManager::Attribute).to receive(:migration_execute)
described_class.new('Ticket', 'example_field', attribute)
end
end

View file

@ -1,59 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/import/zendesk/object_attribute/base_examples'
RSpec.describe Import::Zendesk::ObjectAttribute::Decimal do
it_behaves_like Import::Zendesk::ObjectAttribute::Base
it 'imports input object attribute from decimal object field' do
attribute = double(
title: 'Example attribute',
description: 'Example attribute description',
removable: false,
active: true,
position: 12,
visible_in_portal: true,
required_in_portal: true,
required: true,
type: 'decimal',
)
expected_structure = {
object: 'Ticket',
name: 'example_field',
display: 'Example attribute',
data_type: 'input',
data_option: {
null: false,
note: 'Example attribute description',
type: 'text',
maxlength: 255,
},
editable: true,
active: true,
screens: {
edit: {
Customer: {
shown: true,
null: false
},
view: {
'-all-' => {
shown: true
}
}
}
},
position: 12,
created_by_id: 1,
updated_by_id: 1
}
expect(ObjectManager::Attribute).to receive(:add).with(expected_structure)
expect(ObjectManager::Attribute).to receive(:migration_execute)
described_class.new('Ticket', 'example_field', attribute)
end
end

View file

@ -1,74 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/import/zendesk/object_attribute/base_examples'
RSpec.describe Import::Zendesk::ObjectAttribute::Dropdown do
it_behaves_like Import::Zendesk::ObjectAttribute::Base
it 'imports select object attribute from dropdown object field' do
attribute = double(
title: 'Example attribute',
description: 'Example attribute description',
removable: false,
active: true,
position: 12,
visible_in_portal: true,
required_in_portal: true,
required: true,
type: 'dropdown',
custom_field_options: [
{
'id' => 1,
'value' => 'Key 1',
'name' => 'Value 1'
},
{
'id' => 2,
'value' => 'Key 2',
'name' => 'Value 2'
},
]
)
expected_structure = {
object: 'Ticket',
name: 'example_field',
display: 'Example attribute',
data_type: 'select',
data_option: {
null: false,
note: 'Example attribute description',
default: '',
options: {
'Key 1' => 'Value 1',
'Key 2' => 'Value 2'
},
},
editable: true,
active: true,
screens: {
edit: {
Customer: {
shown: true,
null: false
},
view: {
'-all-' => {
shown: true
}
}
}
},
position: 12,
created_by_id: 1,
updated_by_id: 1
}
expect(ObjectManager::Attribute).to receive(:add).with(expected_structure)
expect(ObjectManager::Attribute).to receive(:migration_execute)
described_class.new('Ticket', 'example_field', attribute)
end
end

View file

@ -1,62 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/import/zendesk/object_attribute/base_examples'
# required due to some of rails autoloading issues
require 'import/zendesk/object_attribute/integer'
RSpec.describe Import::Zendesk::ObjectAttribute::Integer do
it_behaves_like Import::Zendesk::ObjectAttribute::Base
it 'imports integer object attribute from integer object field' do
attribute = double(
title: 'Example attribute',
description: 'Example attribute description',
removable: false,
active: true,
position: 12,
visible_in_portal: true,
required_in_portal: true,
required: true,
type: 'integer',
)
expected_structure = {
object: 'Ticket',
name: 'example_field',
display: 'Example attribute',
data_type: 'integer',
data_option: {
null: false,
note: 'Example attribute description',
min: 0,
max: 999_999_999,
},
editable: true,
active: true,
screens: {
edit: {
Customer: {
shown: true,
null: false
},
view: {
'-all-' => {
shown: true
}
}
}
},
position: 12,
created_by_id: 1,
updated_by_id: 1
}
expect(ObjectManager::Attribute).to receive(:add).with(expected_structure)
expect(ObjectManager::Attribute).to receive(:migration_execute)
described_class.new('Ticket', 'example_field', attribute)
end
end

View file

@ -1,65 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/import/zendesk/object_attribute/base_examples'
# required due to some of rails autoloading issues
require 'import/zendesk/object_attribute/regexp'
RSpec.describe Import::Zendesk::ObjectAttribute::Regexp do
it_behaves_like Import::Zendesk::ObjectAttribute::Base
it 'imports input object attribute from regexp object field' do
regex = '.+?'
attribute = double(
title: 'Example attribute',
description: 'Example attribute description',
removable: false,
active: true,
position: 12,
visible_in_portal: true,
required_in_portal: true,
required: true,
type: 'regexp',
regexp_for_validation: regex
)
expected_structure = {
object: 'Ticket',
name: 'example_field',
display: 'Example attribute',
data_type: 'input',
data_option: {
null: false,
note: 'Example attribute description',
type: 'text',
maxlength: 255,
regex: regex,
},
editable: true,
active: true,
screens: {
edit: {
Customer: {
shown: true,
null: false
},
view: {
'-all-' => {
shown: true
}
}
}
},
position: 12,
created_by_id: 1,
updated_by_id: 1
}
expect(ObjectManager::Attribute).to receive(:add).with(expected_structure)
expect(ObjectManager::Attribute).to receive(:migration_execute)
described_class.new('Ticket', 'example_field', attribute)
end
end

View file

@ -1,74 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/import/zendesk/object_attribute/base_examples'
RSpec.describe Import::Zendesk::ObjectAttribute::Tagger do
it_behaves_like Import::Zendesk::ObjectAttribute::Base
it 'imports select object attribute from tagger object field' do
attribute = double(
title: 'Example attribute',
description: 'Example attribute description',
removable: false,
active: true,
position: 12,
visible_in_portal: true,
required_in_portal: true,
required: true,
type: 'tagger',
custom_field_options: [
{
'id' => 1,
'value' => 'Key 1',
'name' => 'Value 1'
},
{
'id' => 2,
'value' => 'Key 2',
'name' => 'Value 2'
},
]
)
expected_structure = {
object: 'Ticket',
name: 'example_field',
display: 'Example attribute',
data_type: 'select',
data_option: {
null: false,
note: 'Example attribute description',
default: '',
options: {
'Key 1' => 'Value 1',
'Key 2' => 'Value 2'
},
},
editable: true,
active: true,
screens: {
edit: {
Customer: {
shown: true,
null: false
},
view: {
'-all-' => {
shown: true
}
}
}
},
position: 12,
created_by_id: 1,
updated_by_id: 1
}
expect(ObjectManager::Attribute).to receive(:add).with(expected_structure)
expect(ObjectManager::Attribute).to receive(:migration_execute)
described_class.new('Ticket', 'example_field', attribute)
end
end

View file

@ -1,59 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/import/zendesk/object_attribute/base_examples'
RSpec.describe Import::Zendesk::ObjectAttribute::Text do
it_behaves_like Import::Zendesk::ObjectAttribute::Base
it 'imports input object attribute from text object field' do
attribute = double(
title: 'Example attribute',
description: 'Example attribute description',
removable: false,
active: true,
position: 12,
visible_in_portal: true,
required_in_portal: true,
required: true,
type: 'text',
)
expected_structure = {
object: 'Ticket',
name: 'example_field',
display: 'Example attribute',
data_type: 'input',
data_option: {
null: false,
note: 'Example attribute description',
type: 'text',
maxlength: 255,
},
editable: true,
active: true,
screens: {
edit: {
Customer: {
shown: true,
null: false
},
view: {
'-all-' => {
shown: true
}
}
}
},
position: 12,
created_by_id: 1,
updated_by_id: 1
}
expect(ObjectManager::Attribute).to receive(:add).with(expected_structure)
expect(ObjectManager::Attribute).to receive(:migration_execute)
described_class.new('Ticket', 'example_field', attribute)
end
end

View file

@ -1,59 +0,0 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/import/zendesk/object_attribute/base_examples'
RSpec.describe Import::Zendesk::ObjectAttribute::Textarea do
it_behaves_like Import::Zendesk::ObjectAttribute::Base
it 'imports textarea object attribute from textarea object field' do
attribute = double(
title: 'Example attribute',
description: 'Example attribute description',
removable: false,
active: true,
position: 12,
visible_in_portal: true,
required_in_portal: true,
required: true,
type: 'textarea',
)
expected_structure = {
object: 'Ticket',
name: 'example_field',
display: 'Example attribute',
data_type: 'textarea',
data_option: {
null: false,
note: 'Example attribute description',
type: 'textarea',
maxlength: 255,
},
editable: true,
active: true,
screens: {
edit: {
Customer: {
shown: true,
null: false
},
view: {
'-all-' => {
shown: true
}
}
}
},
position: 12,
created_by_id: 1,
updated_by_id: 1
}
expect(ObjectManager::Attribute).to receive(:add).with(expected_structure)
expect(ObjectManager::Attribute).to receive(:migration_execute)
described_class.new('Ticket', 'example_field', attribute)
end
end

View file

@ -95,20 +95,70 @@ RSpec.shared_examples 'Object custom field values', db_strategy: :reset do |obje
{
'field' => {
'id' => 4,
'fielduuid' => '9586e37c-b561-4119-8673-726787ceb79d',
'title' => 'Checkbox',
'fielduuid' => 'ff7093f3-ad44-4519-80b0-f9b1a9988ac0',
'title' => 'Multiselection',
'type' => 'CHECKBOX',
'key' => 'custom_checkbox',
'key' => 'custom_multiselection',
'is_visible_to_customers' => false,
'is_customer_editable' => false,
'is_required_for_customers' => false,
'regular_expression' => nil,
'sort_order' => 4,
'sort_order' => 2,
'is_enabled' => true,
'created_at' => '2021-08-16T19:35:32+00:00',
'updated_at' => '2021-08-16T20:00:47+00:00',
'options' => [
{
'id' => 1,
'fielduuid' => 'ff7093f3-ad44-4519-80b0-f9b1a9988ac0',
'values' => [
{
'id' => 26,
'locale' => 'en-us',
'translation' => 'one',
'created_at' => '2021-08-16T19:35:02+00:00',
'updated_at' => '2021-08-16T19:35:02+00:00',
}
],
'sort_order' => 0,
'created_at' => '2021-08-16T19:35:02+00:00',
'updated_at' => '2021-08-16T19:35:02+00:00',
},
'value' => '5,6',
{
'id' => 2,
'fielduuid' => 'ff7093f3-ad44-4519-80b0-f9b1a9988ac0',
'values' => [
{
'id' => 27,
'locale' => 'en-us',
'translation' => 'two',
'created_at' => '2021-08-16T19:35:02+00:00',
'updated_at' => '2021-08-16T19:35:02+00:00',
}
],
'sort_order' => 0,
'created_at' => '2021-08-16T19:35:02+00:00',
'updated_at' => '2021-08-16T19:35:02+00:00',
},
{
'id' => 3,
'fielduuid' => 'ff7093f3-ad44-4519-80b0-f9b1a9988ac0',
'values' => [
{
'id' => 25,
'locale' => 'en-us',
'translation' => 'three',
'created_at' => '2021-08-16T19:35:01+00:00',
'updated_at' => '2021-08-16T19:35:01+00:00',
}
],
'sort_order' => 0,
'created_at' => '2021-08-16T19:35:01+00:00',
'updated_at' => '2021-08-16T19:35:01+00:00',
},
],
'created_at' => '2021-08-16T19:35:01+00:00',
'updated_at' => '2021-08-17T14:32:50+00:00',
},
'value' => '2,3',
},
{
'field' => {
@ -405,6 +455,7 @@ RSpec.shared_examples 'Object custom field values', db_strategy: :reset do |obje
object_name => {
'custom_textfield' => 'custom_textfield',
'custom_singleselection' => 'custom_singleselection',
'custom_multiselection' => 'custom_multiselection',
'custom_boolean' => 'custom_boolean',
'custom_radio' => 'custom_radio',
'custom_text_regex' => 'custom_text_regex',
@ -427,6 +478,7 @@ RSpec.shared_examples 'Object custom field values', db_strategy: :reset do |obje
{
custom_textfield: 'Testing',
custom_singleselection: 'two',
custom_multiselection: %w[two three],
custom_boolean: true,
custom_radio: 'third',
custom_text_regex: '999',
@ -441,6 +493,7 @@ RSpec.shared_examples 'Object custom field values', db_strategy: :reset do |obje
before do
create :object_manager_attribute_text, object_name: object_name, name: 'custom_textfield'
create :object_manager_attribute_select, object_name: object_name, name: 'custom_singleselection'
create :object_manager_attribute_multiselect, object_name: object_name, name: 'custom_multiselection'
create :object_manager_attribute_boolean, object_name: object_name, name: 'custom_boolean'
create :object_manager_attribute_select, object_name: object_name, name: 'custom_radio'
create :object_manager_attribute_text, object_name: object_name, name: 'custom_text_regex'

View file

@ -232,4 +232,76 @@ RSpec.shared_examples 'Object custom fields' do |klass:|
include_examples 'import valid custom field', 'custom_tree_select'
end
context "when custom field type is 'CHECKBOX'" do
let(:resource) do
{
'id' => 80_000_387_409,
'fielduuid' => 'ff7093f3-ad44-4519-80b0-f9b1a9988ac0',
'title' => 'Multichoice',
'type' => 'CHECKBOX',
'key' => 'custom_multichoice',
'is_visible_to_customers' => false,
'is_customer_editable' => false,
'is_required_for_customers' => false,
'regular_expression' => nil,
'sort_order' => 2,
'is_enabled' => true,
'options' => [
{
'id' => 1,
'fielduuid' => 'ff7093f3-ad44-4519-80b0-f9b1a9988ac0',
'values' => [
{
'id' => 26,
'locale' => 'en-us',
'translation' => 'one',
'created_at' => '2021-08-16T19:35:02+00:00',
'updated_at' => '2021-08-16T19:35:02+00:00',
}
],
'sort_order' => 0,
'created_at' => '2021-08-16T19:35:02+00:00',
'updated_at' => '2021-08-16T19:35:02+00:00',
},
{
'id' => 2,
'fielduuid' => 'ff7093f3-ad44-4519-80b0-f9b1a9988ac0',
'values' => [
{
'id' => 27,
'locale' => 'en-us',
'translation' => 'two',
'created_at' => '2021-08-16T19:35:02+00:00',
'updated_at' => '2021-08-16T19:35:02+00:00',
}
],
'sort_order' => 0,
'created_at' => '2021-08-16T19:35:02+00:00',
'updated_at' => '2021-08-16T19:35:02+00:00',
},
{
'id' => 3,
'fielduuid' => 'ff7093f3-ad44-4519-80b0-f9b1a9988ac0',
'values' => [
{
'id' => 25,
'locale' => 'en-us',
'translation' => 'three',
'created_at' => '2021-08-16T19:35:01+00:00',
'updated_at' => '2021-08-16T19:35:01+00:00',
}
],
'sort_order' => 0,
'created_at' => '2021-08-16T19:35:01+00:00',
'updated_at' => '2021-08-16T19:35:01+00:00',
},
],
'created_at' => '2021-08-16T19:35:01+00:00',
'updated_at' => '2021-08-17T14:32:50+00:00',
}
end
include_examples 'import valid custom field', 'custom_multichoice'
end
end

View file

@ -171,6 +171,47 @@ RSpec.describe ::Sequencer::Sequence::Import::Zendesk::TicketField, sequencer: :
end
end
context 'when field is a multiselect' do
let(:resource) do
ZendeskAPI::TicketField.new(
nil,
base_resource.merge(
{
'title' => 'Custom Multiselect',
'type' => 'multiselect',
'custom_field_options' => [
{
'id' => 28_353_445,
'name' => 'Another Value',
'raw_name' => 'Another Value',
'value' => 'anotherkey',
'default' => false
},
{
'id' => 28_353_425,
'name' => 'Value 1',
'raw_name' => 'Value 1',
'value' => 'key1',
'default' => false
},
{
'id' => 28_353_435,
'name' => 'Value 2',
'raw_name' => 'Value 2',
'value' => 'key2',
'default' => false
}
]
}
)
)
end
it 'adds a custom field' do
expect { process(process_payload) }.to change(Ticket, :column_names).by(['custom_multiselect'])
end
end
context 'when field is unknown' do
let(:resource) do
ZendeskAPI::TicketField.new(

View file

@ -65,18 +65,14 @@ RSpec.describe ::Sequencer::Sequence::Import::Zendesk::Ticket, sequencer: :seque
],
'custom_fields' => [
{ 'id' => 1001,
'value' => '1.6' },
'value' => 'key_1' },
{ 'id' => 1002,
'value' => true },
{ 'id' => 1003,
'value' => %w[key_1 key_2] },
],
'satisfaction_rating' => nil,
'sharing_agreement_ids' => [],
'fields' => [
{ 'id' => 1001,
'value' => '1.6' },
{ 'id' => 1002,
'value' => true },
],
'followup_ids' => [],
'brand_id' => 670_701,
'allow_channelback' => false,
@ -107,6 +103,7 @@ RSpec.describe ::Sequencer::Sequence::Import::Zendesk::Ticket, sequencer: :seque
{
1001 => 'custom_dropdown',
1002 => 'custom_checkbox',
1003 => 'custom_multiselect',
}
end
@ -134,14 +131,16 @@ RSpec.describe ::Sequencer::Sequence::Import::Zendesk::Ticket, sequencer: :seque
priority_id: 3,
owner_id: owner.id,
customer_id: customer.id,
custom_dropdown: '1.6',
custom_dropdown: 'key_1',
custom_checkbox: true,
custom_multiselect: %w[key_1 key_2],
}
end
before do
create :object_manager_attribute_select, object_name: 'Ticket', name: 'custom_dropdown'
create :object_manager_attribute_boolean, object_name: 'Ticket', name: 'custom_checkbox'
create :object_manager_attribute_multiselect, object_name: 'Ticket', name: 'custom_multiselect'
ObjectManager::Attribute.migration_execute
# We only want to test here the Ticket API, so disable other modules in the sequence

View file

@ -0,0 +1,112 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'zendesk_api'
RSpec.shared_examples Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base do
let(:object_attribute_type) { 'input' }
let(:object_attribute_data_option) do
{
null: false,
note: 'Example attribute description',
type: 'text',
maxlength: 255,
}
end
let(:zendesk_object_field_type) { object_attribute_type }
let(:zendesk_object_base_field_attributes) do
{
title: 'Example attribute',
description: 'Example attribute description',
removable: false,
active: true,
position: 12,
visible_in_portal: true,
required_in_portal: true,
required: true,
type: zendesk_object_field_type,
custom_field_options: [],
}
end
let(:zendesk_object_field_attributes) do
{
regexp_for_validation: '',
}
end
let(:attribute) do
ZendeskAPI::TicketField.new(
nil,
zendesk_object_base_field_attributes.merge(zendesk_object_field_attributes)
)
end
let(:expected_structure) do
{
object: 'Ticket',
name: 'example_field',
display: 'Example attribute',
data_type: object_attribute_type,
data_option: object_attribute_data_option,
editable: true,
active: true,
screens: {
edit: {
Customer: {
shown: true,
null: false
},
view: {
'-all-' => {
shown: true
}
}
}
},
position: 12,
created_by_id: 1,
updated_by_id: 1
}
end
describe 'exception handling' do
let(:error_text) { Faker::Lorem.sentence }
it 'extends ObjectManager Attribute exception message' do
allow(ObjectManager::Attribute).to receive(:add).and_raise(RuntimeError, error_text)
expect do
described_class.new('Ticket', 'example_field', attribute)
end.to raise_error(RuntimeError, %r{'example_field': #{error_text}$})
end
end
describe 'argument handling' do
before do
allow(ObjectManager::Attribute).to receive(:add).with(hash_including(object: 'Ticket'))
end
it 'takes an ObjectLookup name as the first argument' do
described_class.new('Ticket', 'example_field', attribute)
expect(ObjectManager::Attribute).to have_received(:add)
end
it 'accepts a constant ObjectLookup name' do
described_class.new(Ticket, 'example_field', attribute)
expect(ObjectManager::Attribute).to have_received(:add)
end
end
context 'when migration is executed' do
it 'imports object attribute from given zendesk object field' do
allow(ObjectManager::Attribute).to receive(:add).with(expected_structure)
allow(ObjectManager::Attribute).to receive(:migration_execute)
described_class.new('Ticket', 'example_field', attribute)
expect(ObjectManager::Attribute).to have_received(:migration_execute)
end
end
end

View file

@ -0,0 +1,22 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/sequencer/unit/import/zendesk/object_attribute/attribute_type/base_examples'
RSpec.describe Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Checkbox do
it_behaves_like Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base do
let(:zendesk_object_field_type) { 'checkbox' }
let(:object_attribute_type) { 'boolean' }
let(:object_attribute_data_option) do
{
null: false,
note: 'Example attribute description',
default: false,
options: {
true => 'yes',
false => 'no'
}
}
end
end
end

View file

@ -0,0 +1,19 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/sequencer/unit/import/zendesk/object_attribute/attribute_type/base_examples'
RSpec.describe Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Date do
it_behaves_like Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base do
let(:object_attribute_type) { 'data' }
let(:object_attribute_data_option) do
{
null: false,
note: 'Example attribute description',
future: true,
past: true,
diff: 0,
}
end
end
end

View file

@ -0,0 +1,10 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/sequencer/unit/import/zendesk/object_attribute/attribute_type/base_examples'
RSpec.describe Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Decimal do
it_behaves_like Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base do
let(:zendesk_object_field_type) { 'decimal' }
end
end

View file

@ -0,0 +1,38 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/sequencer/unit/import/zendesk/object_attribute/attribute_type/base_examples'
RSpec.describe Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Dropdown do
it_behaves_like Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base do
let(:zendesk_object_field_type) { 'dropdown' }
let(:zendesk_object_field_attributes) do
{
custom_field_options: [
{
'id' => 1,
'value' => 'Key 1',
'name' => 'Value 1'
},
{
'id' => 2,
'value' => 'Key 2',
'name' => 'Value 2'
},
]
}
end
let(:object_attribute_type) { 'select' }
let(:object_attribute_data_option) do
{
null: false,
note: 'Example attribute description',
default: '',
options: {
'Key 1' => 'Value 1',
'Key 2' => 'Value 2'
},
}
end
end
end

View file

@ -0,0 +1,18 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/sequencer/unit/import/zendesk/object_attribute/attribute_type/base_examples'
RSpec.describe Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Integer do
it_behaves_like Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base do
let(:object_attribute_type) { 'integer' }
let(:object_attribute_data_option) do
{
null: false,
note: 'Example attribute description',
min: 0,
max: 999_999_999,
}
end
end
end

View file

@ -0,0 +1,37 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/sequencer/unit/import/zendesk/object_attribute/attribute_type/base_examples'
RSpec.describe Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Multiselect do
it_behaves_like Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base do
let(:zendesk_object_field_attributes) do
{
custom_field_options: [
{
'id' => 1,
'value' => 'Key 1',
'name' => 'Value 1'
},
{
'id' => 2,
'value' => 'Key 2',
'name' => 'Value 2'
},
]
}
end
let(:object_attribute_type) { 'multiselect' }
let(:object_attribute_data_option) do
{
null: false,
note: 'Example attribute description',
default: '',
options: {
'Key 1' => 'Value 1',
'Key 2' => 'Value 2'
},
}
end
end
end

View file

@ -0,0 +1,27 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/sequencer/unit/import/zendesk/object_attribute/attribute_type/base_examples'
RSpec.describe Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Regexp do
let(:regex) { '.+?' }
it_behaves_like Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base do
let(:zendesk_object_field_type) { 'regexp' }
let(:zendesk_object_field_attributes) do
{
regexp_for_validation: regex
}
end
let(:object_attribute_type) { 'input' }
let(:object_attribute_data_option) do
{
null: false,
note: 'Example attribute description',
type: 'text',
maxlength: 255,
regex: regex,
}
end
end
end

View file

@ -0,0 +1,38 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/sequencer/unit/import/zendesk/object_attribute/attribute_type/base_examples'
RSpec.describe Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Tagger do
it_behaves_like Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base do
let(:zendesk_object_field_type) { 'tagger' }
let(:zendesk_object_field_attributes) do
{
custom_field_options: [
{
'id' => 1,
'value' => 'Key 1',
'name' => 'Value 1'
},
{
'id' => 2,
'value' => 'Key 2',
'name' => 'Value 2'
},
]
}
end
let(:object_attribute_type) { 'select' }
let(:object_attribute_data_option) do
{
null: false,
note: 'Example attribute description',
default: '',
options: {
'Key 1' => 'Value 1',
'Key 2' => 'Value 2'
},
}
end
end
end

View file

@ -0,0 +1,8 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/sequencer/unit/import/zendesk/object_attribute/attribute_type/base_examples'
RSpec.describe Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Text do
it_behaves_like Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base
end

View file

@ -0,0 +1,18 @@
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'rails_helper'
require 'lib/sequencer/unit/import/zendesk/object_attribute/attribute_type/base_examples'
RSpec.describe Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Textarea do
it_behaves_like Sequencer::Unit::Import::Zendesk::ObjectAttribute::AttributeType::Base do
let(:object_attribute_type) { 'textarea' }
let(:object_attribute_data_option) do
{
null: false,
note: 'Example attribute description',
type: 'textarea',
maxlength: 255,
}
end
end
end

View file

@ -51,11 +51,12 @@ RSpec.configure do |config|
end
config.around(:each, type: :system) do |example|
use_vcr = example.metadata.fetch(:use_vcr, false)
# WebMock makes it impossible to have persistent http connections to Selenium,
# which may cause overhead and Net::OpenTimeout errors.
WebMock.disable!
WebMock.disable! if !use_vcr
example.run
WebMock.enable!
WebMock.enable! if !use_vcr
end
end

File diff suppressed because one or more lines are too long

View file

@ -2,7 +2,7 @@
http_interactions:
- request:
method: get
uri: "<IMPORT_ZENDESK_ENDPOINT>/users/me"
uri: https://<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>/api/v2/users/me
body:
encoding: US-ASCII
string: ''
@ -21,17 +21,19 @@ http_interactions:
message: OK
headers:
Date:
- Fri, 20 Aug 2021 13:25:35 GMT
- Thu, 21 Apr 2022 06:41:45 GMT
Content-Type:
- application/json; charset=UTF-8
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Zendesk-Api-Version:
- '2022-01-01'
X-Zendesk-Api-Version:
- v2
X-Zendesk-Application-Version:
- v9449
- v12002
X-Frame-Options:
- SAMEORIGIN
Access-Control-Expose-Headers:
@ -45,16 +47,25 @@ http_interactions:
Strict-Transport-Security:
- max-age=31536000;
Etag:
- W/"f78a8c8899c1d69692fccbc4fb2c11b8"
- W/"a879f316d63433c0a31a29daedcd718f"
Cache-Control:
- max-age=0, private, must-revalidate
X-Zendesk-Origin-Server:
- classic-app-server-5d8ffc66d-hngbj
- classic-app-server-5fd77bc484-c5gmk
Set-Cookie:
- __cfruid=68e3fb499ca0b828f6cb2f72125a6706d848e8d4-1650523305; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- _zendesk_cookie=BAhJIhl7ImRldmljZV90b2tlbnMiOnt9fQY6BkVU--459ed01949a36415c1716b5711271c3d08918307;
path=/; expires=Fri, 21 Apr 2023 05:11:11 GMT; secure; HttpOnly; SameSite=None
X-Request-Id:
- 681bf2d18a85dfbb-FRA
- 681bf2d18a85dfbb-FRA
- 6ff422c22dd16931-FRA
- 6ff422c22dd16931-FRA
X-Runtime:
- '0.066324'
- '0.053442'
X-Envoy-Upstream-Service-Time:
- '55'
X-Envoy-Decorator-Operation:
- classic.classic.svc.cluster.local:80/*
X-Zendesk-Zorg:
- 'yes'
X-Content-Type-Options:
@ -64,23 +75,20 @@ http_interactions:
Expect-Ct:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Report-To:
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=vQfoszvrH3gqC%2BwX1TPZPuDzuJGbgeu%2F%2BAa0GOdil%2BJ%2B7OfktRqE65Es5HoX00AO56wvj8JgiJhEPT%2FVcZ47AfyAz3Nl7fRjLcW6qB9wqwqmO656mXQW6R%2BsnBWXjCebrh8Vlx%2FgHA%3D%3D"}],"group":"cf-nel","max_age":604800}'
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=LYNjzMxiKhE9x5iMehF6JmqlJy3X5W8B%2FCeJdbYhVYXOhZmq%2BrDZergCQezmOTiNVzZTyXeaTs36lMt5v2iJi8Ji%2Fwaow1p2t4FBk%2Fkiih9nCP7d2LWQtFeSFsyc%2FJEDmcP6sWOKrA%3D%3D"}],"group":"cf-nel","max_age":604800}'
Nel:
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
Set-Cookie:
- __cfruid=5f7114429ea2a90d53065f81323c095ba659763c-1629465935; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
Server:
- cloudflare
Cf-Ray:
- 681bf2d18a85dfbb-FRA
- 6ff422c22dd16931-FRA
body:
encoding: ASCII-8BIT
string: '{"user":{"id":null,"url":null,"name":"Nicht registrierter Benutzer","email":"invalid@example.com","created_at":null,"updated_at":null,"time_zone":"Berlin","iana_time_zone":"Europe/Berlin","phone":null,"shared_phone_number":null,"photo":null,"locale_id":8,"locale":"de","organization_id":null,"role":"end-user","verified":false,"authenticity_token":"lncIvg7hwd/fd8WQInmMbDvQXlG5ZFIe5kiXSSp/evt4PmhR+OqhsSSLT0568tvlpsAzQbglbwddFit52KQWBA=="}}'
recorded_at: Fri, 20 Aug 2021 13:25:35 GMT
string: '{"user":{"id":null,"url":null,"name":"Nicht registrierter Benutzer","email":"invalid@example.com","created_at":null,"updated_at":null,"time_zone":"Berlin","iana_time_zone":"Europe/Berlin","phone":null,"shared_phone_number":null,"photo":null,"locale_id":8,"locale":"de","organization_id":null,"role":"end-user","verified":false,"authenticity_token":"oCfRl/IjWGEavA+qRWliWzGS4ui7lWGvIiKjt+DnHy73Ys8ahoc3puX8oiBrRzoff6/w5jfwYFaXpS+SghS2Jw=="}}'
recorded_at: Thu, 21 Apr 2022 06:41:45 GMT
- request:
method: get
uri: "<IMPORT_ZENDESK_ENDPOINT>/users/me"
uri: https://<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>/api/v2/users/me
body:
encoding: US-ASCII
string: ''
@ -90,7 +98,7 @@ http_interactions:
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
User-Agent:
- ZendeskAPI Ruby 1.32.0
- ZendeskAPI Ruby 1.35.0
Authorization:
- Basic <IMPORT_ZENDESK_ENDPOINT_BASIC_AUTH>
response:
@ -99,17 +107,19 @@ http_interactions:
message: OK
headers:
Date:
- Fri, 20 Aug 2021 13:25:37 GMT
- Thu, 21 Apr 2022 06:41:46 GMT
Content-Type:
- application/json; charset=UTF-8
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Zendesk-Api-Version:
- '2022-01-01'
X-Zendesk-Api-Version:
- v2
X-Zendesk-Application-Version:
- v9449
- v12002
X-Frame-Options:
- SAMEORIGIN
Access-Control-Expose-Headers:
@ -123,16 +133,25 @@ http_interactions:
Strict-Transport-Security:
- max-age=31536000;
Etag:
- W/"9e89bffdaf7d59aacb215983a217e728"
- W/"f48a60e706f7848274c60c8959c7645a"
Cache-Control:
- max-age=0, private, must-revalidate
X-Zendesk-Origin-Server:
- classic-app-server-5d8ffc66d-hcn9g
- classic-app-server-5fd77bc484-wdhd4
Set-Cookie:
- __cfruid=dcd273657337ce3a390aacb3c61bb5e88590fbf9-1650523306; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- _zendesk_cookie=BAhJIhl7ImRldmljZV90b2tlbnMiOnt9fQY6BkVU--459ed01949a36415c1716b5711271c3d08918307;
path=/; expires=Fri, 21 Apr 2023 05:07:45 GMT; secure; HttpOnly; SameSite=None
X-Request-Id:
- 681bf2dc5e4205dc-FRA
- 681bf2dc5e4205dc-FRA
- 6ff422ca0f1d9968-FRA
- 6ff422ca0f1d9968-FRA
X-Runtime:
- '0.193922'
- '0.145123'
X-Envoy-Upstream-Service-Time:
- '147'
X-Envoy-Decorator-Operation:
- classic.classic.svc.cluster.local:80/*
X-Zendesk-Zorg:
- 'yes'
Content-Encoding:
@ -144,19 +163,16 @@ http_interactions:
Expect-Ct:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Report-To:
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=v%2Fi8h0aIQWVfVGv%2BwX6KxG3FGMTtnsvfI2suZQpUwBkhAcswCkqkS0od18KEtx8dSTeqZiuMPjOnce2oWSX%2FGd4AjGRXl5sCftpeC%2FyvSqEn9xkShmfLrxG4hisfxgokGqb1UwVc5w%3D%3D"}],"group":"cf-nel","max_age":604800}'
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=jGvVpfYy7VkMEn6%2F2MldCFRQemg0NHKCiJHL0zg0B75Zc6b8%2B3Lo%2FNI4EsJzGeeNIjs1fyFofTqQ6Zqf80gUkAn4IlGSVGSP31ySpdS%2BROcqQMs28560zq9X1mORRfbTvqdSP8nr4w%3D%3D"}],"group":"cf-nel","max_age":604800}'
Nel:
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
Set-Cookie:
- __cfruid=9d3985522b245e1dcce78514511401e7c9df0689-1629465937; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
Server:
- cloudflare
Cf-Ray:
- 681bf2dc5e4205dc-FRA
- 6ff422ca0f1d9968-FRA
body:
encoding: ASCII-8BIT
string: !binary |-
H4sIAAAAAAAAA21T224aMRT8lcqvBfYCG8hKkUqSKm2aIFFIW6WqLC97WFy89tY+hkCUv+mf9Md6zCVJpUo8sPZ4zsx4/Mi8A8vyRyZLlidJFve7vX43aTFvFcvZArFxeRRttdebBaimswVdglt2ZqaORCOjVRoFChe9HO78dEazFtOiBuI4N8WbSS1xQUtQCxl4C1N0XFh7t2MObLQ7syAQSi6QIGmcZO24305Op2ma9xL63RPGN+VrTJq040E7jadJN0/6eToIGJQ18K3Ru+lglQxqpNCCv955761pIHoGNIv9iThOkl6S9uiMWwhLenY7XPu6CFmh9dBitIaG5dor1WLKzIQCvsvw+EWzQbfvJkRjbCW03AqURu9BWa+fZdkJga1RQaYo653KFVg5l0BE+zHC4wI0ypnEDUezBE3gL1V0fn4zHiyXV5PpFGB0nxXT4tfn629wux7ffp34+d2wmKd4e13iw/rt5ejEDa9Hb2/iy3F01eBgOOpiHY2s+zgYf0r98OLi4rQ6OwsX9IBgtVA7mXtzKCrH8u8sZT9aTCgp6IsRVMxQrkj7Xug+KpbPhXIUzyE5UZH450UlHHJlKqmPV/z/61sbPid2Y3mwz0GLQoVIjtyy0gK9DbmRjhKQSnUQpQ3C4W9IluOmIdjeyMw7NDXfrb/Yq00JVtCwoxMKewnILTi0kjxSlw8ERqsNb6xcUQM5VbYmczTsIOt4IBT4H9vOuya8mhcHJcyFV8gra3yz05L2sqx3Gh6ehcZY5DO3OgoK74tTKVRJwx7ZwUZJ7S3NOvQhpRSUhIKKXjmUoaTsg9fln9/s6enpL3LxpM/kAwAA
recorded_at: Fri, 20 Aug 2021 13:25:37 GMT
recorded_with: VCR 6.0.0
H4sIAAAAAAAAA21T227aQBD9lWpfC/iCDcFSpAY1F6KqESFJm1TVasFjs2W96+zFAaL8Tf+kP9ZZA0kq1fKDPXN25syZs8/EGdAkeyY8J1kUpeGwnwz7UYc4LUhGltbWJguCrXRyswRR97YgczCr3kJVAat50MSBL2GCt8O9X0ZJ0iGSVYA1xmr+YVZxu8QQVIz7unM17xkf+9RW9tUwu9DALOSUWYTEYZR2w2E3Gt3EcZZE+D4gxtX5e0wcd8OkG0c34SDrJ1n/yGMsr4BulWy7gxbcs+FMMvo+c+q0qiF4BdTL3YkwjKIkihM8Y5ZMI582Q6Wr5l6rggkDHYJBq0gmnRAdItSCCaCtiIc/bA6yezvDOkqXTPIts1zJHShNhmmaDhCslfA8WV61NBvQvOCAhax22IY5uwRp+YLbDbVqBRLB0+n65Px0ZFfj5jF4uC/OvoduUs7WwddJMxkrNr19vJ6FZ/DAt8XFxd2i0eefB8NxMfp4f3n1JTk6v4VvJ4PJzeX90+TuaL0tJvbqdHp87De0tqAlEy3N3XCWlYZkP0hMfiIfwRn+EYSyheUNct8R3Wn1Ks9eOlYi+degYMZSoUouDzv+//6eFC2wutLUj09BsrnwkuylN7yUzDrtdUMeOVh01Z6UVBb2n15Zajc1whI0lzNWVbQNtnsahf7px2E6wnSlctAMWx7mQclXYKkGYzXHSdHSez2UFBtaa96gESk6t8IRseWe3OGA9/E/wxtnan953ubIoWBOWFpq5eqWVJykaTLy909DrbSlC9McCPlrRtEaIsdmz4d5cjRxrp68K2LUQnCYo99LY7n3KrlwMv/zm7y8vPwFm1Omh+sDAAA=
recorded_at: Thu, 21 Apr 2022 06:41:46 GMT
recorded_with: VCR 6.1.0

View file

@ -2,7 +2,7 @@
http_interactions:
- request:
method: get
uri: "<IMPORT_ZENDESK_ENDPOINT>/users/me"
uri: https://<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>/api/v2/users/me
body:
encoding: US-ASCII
string: ''
@ -21,17 +21,19 @@ http_interactions:
message: OK
headers:
Date:
- Fri, 20 Aug 2021 13:25:24 GMT
- Thu, 21 Apr 2022 06:41:35 GMT
Content-Type:
- application/json; charset=UTF-8
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Zendesk-Api-Version:
- '2022-01-01'
X-Zendesk-Api-Version:
- v2
X-Zendesk-Application-Version:
- v9449
- v12002
X-Frame-Options:
- SAMEORIGIN
Access-Control-Expose-Headers:
@ -45,16 +47,25 @@ http_interactions:
Strict-Transport-Security:
- max-age=31536000;
Etag:
- W/"749965edc1b2129d5f54e5b512b62501"
- W/"c5753c9a348eb939ae353dc220c5c553"
Cache-Control:
- max-age=0, private, must-revalidate
X-Zendesk-Origin-Server:
- classic-app-server-5d8ffc66d-svgj9
- classic-app-server-5fd77bc484-zhdtl
Set-Cookie:
- __cfruid=f532a197c018135f25fad9b4b461186a9da7bca7-1650523295; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- _zendesk_cookie=BAhJIhl7ImRldmljZV90b2tlbnMiOnt9fQY6BkVU--459ed01949a36415c1716b5711271c3d08918307;
path=/; expires=Fri, 21 Apr 2023 05:10:32 GMT; secure; HttpOnly; SameSite=None
X-Request-Id:
- 681bf28d78e1d729-FRA
- 681bf28d78e1d729-FRA
- 6ff422862f929261-FRA
- 6ff422862f929261-FRA
X-Runtime:
- '0.065455'
- '0.064058'
X-Envoy-Upstream-Service-Time:
- '66'
X-Envoy-Decorator-Operation:
- classic.classic.svc.cluster.local:80/*
X-Zendesk-Zorg:
- 'yes'
X-Content-Type-Options:
@ -64,23 +75,20 @@ http_interactions:
Expect-Ct:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Report-To:
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=JlwvNIAloI78kb6%2B8AEe9aAJRYLLxCv64UJcTvPOt1nfdFn29rsPuEgffb%2BFAAaeAyjJU%2FL%2FP1JCdatvBTdJpJ%2F3G5X992Gi%2F0dZest7pA%2FOCut83zH37Ywdvo3hvNsyOwVViJqvAw%3D%3D"}],"group":"cf-nel","max_age":604800}'
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=dw7vfS6XTdfJoUfApl5QhzTl9s1izHfd6y1sTpqot3BiDbKnIHtPqCHSuT5qHMCkXA9kI%2FlYZp8TGN0PJSDGEEzmezLplOtbCLcZSeDYfEVMurhUyRHyJENxCJs%2BwvAwWrxvntbnjA%3D%3D"}],"group":"cf-nel","max_age":604800}'
Nel:
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
Set-Cookie:
- __cfruid=dc67607203007f704575db608632145c6341b1cc-1629465924; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
Server:
- cloudflare
Cf-Ray:
- 681bf28d78e1d729-FRA
- 6ff422862f929261-FRA
body:
encoding: ASCII-8BIT
string: '{"user":{"id":null,"url":null,"name":"Nicht registrierter Benutzer","email":"invalid@example.com","created_at":null,"updated_at":null,"time_zone":"Berlin","iana_time_zone":"Europe/Berlin","phone":null,"shared_phone_number":null,"photo":null,"locale_id":8,"locale":"de","organization_id":null,"role":"end-user","verified":false,"authenticity_token":"TN2leefc4AefbsIvqwLlDhuW0UKdRLMxFyDfgGg8hegNBnWKzq5bWZ8AIMo0Wm2LpuNbfpTow5s29LuRokFwyg=="}}'
recorded_at: Fri, 20 Aug 2021 13:25:24 GMT
string: '{"user":{"id":null,"url":null,"name":"Nicht registrierter Benutzer","email":"invalid@example.com","created_at":null,"updated_at":null,"time_zone":"Berlin","iana_time_zone":"Europe/Berlin","phone":null,"shared_phone_number":null,"photo":null,"locale_id":8,"locale":"de","organization_id":null,"role":"end-user","verified":false,"authenticity_token":"PSQQL9qR2++8pImX0RvJA28vGYmYLMeJ6oqUTOxMANGqsQl1zjMpqphIrbTh53uqEAYBTkXZv8Dr961KNoZxVA=="}}'
recorded_at: Thu, 21 Apr 2022 06:41:35 GMT
- request:
method: get
uri: "<IMPORT_ZENDESK_ENDPOINT>/users/me"
uri: https://<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>/api/v2/users/me
body:
encoding: US-ASCII
string: ''
@ -90,7 +98,7 @@ http_interactions:
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
User-Agent:
- ZendeskAPI Ruby 1.32.0
- ZendeskAPI Ruby 1.35.0
Authorization:
- Basic Ym9iLnNtaXRoQHpudW55LmNvbS90b2tlbjoxbnY0bDFkVDBLM04=
response:
@ -99,17 +107,19 @@ http_interactions:
message: OK
headers:
Date:
- Fri, 20 Aug 2021 13:25:26 GMT
- Thu, 21 Apr 2022 06:41:37 GMT
Content-Type:
- application/json; charset=UTF-8
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Zendesk-Api-Version:
- '2022-01-01'
X-Zendesk-Api-Version:
- v2
X-Zendesk-Application-Version:
- v9449
- v12002
X-Frame-Options:
- SAMEORIGIN
Access-Control-Expose-Headers:
@ -123,16 +133,25 @@ http_interactions:
Strict-Transport-Security:
- max-age=31536000;
Etag:
- W/"c16a8e7f40dc49f6c7a5779346f3c773"
- W/"2b7969c833b48316e4ac12793049abe7"
Cache-Control:
- max-age=0, private, must-revalidate
X-Zendesk-Origin-Server:
- classic-app-server-5d8ffc66d-pzw6f
- classic-app-server-5fd77bc484-hpfzd
Set-Cookie:
- __cfruid=79adb7c2df41a61aa3e3827f617cf65835f8b1f6-1650523297; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- _zendesk_cookie=BAhJIhl7ImRldmljZV90b2tlbnMiOnt9fQY6BkVU--459ed01949a36415c1716b5711271c3d08918307;
path=/; expires=Fri, 21 Apr 2023 05:07:45 GMT; secure; HttpOnly; SameSite=None
X-Request-Id:
- 681bf2984c344ab6-FRA
- 681bf2984c344ab6-FRA
- 6ff4228e8a48690a-FRA
- 6ff4228e8a48690a-FRA
X-Runtime:
- '0.066590'
- '0.046594'
X-Envoy-Upstream-Service-Time:
- '48'
X-Envoy-Decorator-Operation:
- classic.classic.svc.cluster.local:80/*
X-Zendesk-Zorg:
- 'yes'
Content-Encoding:
@ -144,19 +163,16 @@ http_interactions:
Expect-Ct:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Report-To:
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=cwUvgYEHOGen9rhZ%2BFsLRQZylLWiDDmn1uoAXDaEOX%2BeA3ySRCVYGcsKyQ5n1pSycw62KiJTtcIdzv3gwm7khxw2eg%2F44822OVVF3wvnmjPfqH2R2U5RIlLRzZ80C69NuNo6PsCdOg%3D%3D"}],"group":"cf-nel","max_age":604800}'
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=qdKyzro4oCMEEJSaEwrr7OO469UKyjeir0cEBBcCMuzxBTPaYsTM2zkEEBnvzXrIiydDGKFEz4vAgzMZ1YeSOii3PwZsLSCE%2FDzxy2fZZpFM3L%2FkPj7L0pRG5reotT1SV8HKJ4gbVw%3D%3D"}],"group":"cf-nel","max_age":604800}'
Nel:
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
Set-Cookie:
- __cfruid=7400e1827f504a7a5cfdaa3cdb9f909042030241-1629465926; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
Server:
- cloudflare
Cf-Ray:
- 681bf2984c344ab6-FRA
- 6ff4228e8a48690a-FRA
body:
encoding: ASCII-8BIT
string: !binary |-
H4sIAAAAAAAAA12QW0/CQBCF/wrZ53qPxJKQKApqIFUJWMJLM20HOmUvzbJboIT/7raNxPi2c875cmb2yOwWNesdGaWsJy3nHrOa/z4lCGQ9FlCSmY7GNW2NJtQGdWeA0prKsR5DAeQQRrIETukj7kEUHC8TJZybaASDaQTmXFCk/xRDAqNKybpsgJqTdCCBhOivM7RaFXh1DhRZQ7RbbzPQrqXRImlFXJ/VWk4z6nfgKgGOUX3ug8faybWm6BqVXoOkCgwp2SRaXiteL4YyvWh+y2MlaloRusQK+BY9BtZkKA0lZA6RURuUDtjlOAvnn/7kdpEHi3CyzMvRNI3L+2BUlG/+JA9v8rGYv4ZjOzzA/u76I1geUj9YBbEvqvdNHH8nMz8LDbw8F7vuoqunT92vfp+dTj/YSFq+uAEAAA==
recorded_at: Fri, 20 Aug 2021 13:25:26 GMT
recorded_with: VCR 6.0.0
H4sIAAAAAAAAA12QW2vCQBCF/4rsa9MaFYsIQg0JtpWmouiDL2FNJsnQvYTNrHjB/95NglL6tnPO+Tgze2W2BsOmV4YZmyorhMesEfen4hLYlMWYltQzUGBNBsEQmF4AytLFsR4DydEhDNWRC8ze4MRlJeAl1dK5qQFOkCWcHgVV9k8hlJBctGrKAjAClQORK578dSJrdAX9R6AqW6Lbui65cS2tligrD81ZneU00vdB6JQLSJpzJx7rJteagWvUpuAKL5xQqzbR8UaLZjFQ2XP7Wx47gsEcwSVyLmrwGLdUgiJMkc4J6R9QDtCfcbSN/CGFavC60EHej8faiO1O7evyTN+70A9G7/7yaZQXq4kMP8p9bv1THMZw+DoON/56Md6siC/j03YdnQeb9W4+L2Yzdrv9AgEMJ7u4AQAA
recorded_at: Thu, 21 Apr 2022 06:41:37 GMT
recorded_with: VCR 6.1.0

View file

@ -21,24 +21,30 @@ http_interactions:
message: Not Found
headers:
Date:
- Fri, 20 Aug 2021 13:25:20 GMT
- Thu, 21 Apr 2022 06:41:31 GMT
Content-Type:
- application/json; charset=UTF-8
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Zendesk-Api-Version:
- '2022-01-01'
Strict-Transport-Security:
- max-age=0;
Cache-Control:
- no-cache
X-Zendesk-Origin-Server:
- classic-app-server-687bcbddf6-x7wfr
- classic-app-server-6d4cf7447c-ktj5z
X-Request-Id:
- 681bf2721fb6176e-FRA
- 681bf2721fb6176e-FRA
- 6ff4226ab9ec9a18-FRA
- 6ff4226ab9ec9a18-FRA
X-Runtime:
- '0.010825'
- '0.008914'
X-Envoy-Upstream-Service-Time:
- '10'
X-Envoy-Decorator-Operation:
- classic.classic.svc.cluster.local:80/*
X-Zendesk-Zorg:
- 'yes'
Cf-Cache-Status:
@ -46,19 +52,19 @@ http_interactions:
Expect-Ct:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Set-Cookie:
- __cf_bm=25e43ee2df7527a44ececb61b288b058f3e93618-1629465920-1800-AV0sJMJfHlILXaL3XuAK9Isde5xLN3TIuOcagCSyUKzZUZjl3gq3zXQvk1ZIOlHwNmC7FbC6germXXB+pTmT6Q3w7Fv78hiT4Qxf4huJ5ZeQ;
path=/; expires=Fri, 20-Aug-21 13:55:20 GMT; domain=.zendesk.com; HttpOnly;
- __cf_bm=FWrOgqxG6FGc7l_1Q0RIx31t3Ri1i.SEnZvQSzfNZ6Q-1650523291-0-AR9JBpI7lJDGr/5G4Ij7lkXEZSN41auRmN1uGAD2fjRD9x445OHWQ0l3xChcfDzO8HOVp9Nuws31CiPohMDeaV6cVw2+R6EwSNmmmveGfIYQ;
path=/; expires=Thu, 21-Apr-22 07:11:31 GMT; domain=.zendesk.com; HttpOnly;
Secure; SameSite=None
- __cfruid=a2f5d943a0947fed81d7e574ebc7369eaf3da66d-1629465920; path=/; domain=.zendesk.com;
- __cfruid=cd538244bb8005e025535f93c633690113b796d3-1650523291; path=/; domain=.zendesk.com;
HttpOnly; Secure; SameSite=None
Report-To:
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=BwKWE1NbxNZpR7KP1tzIuOVmCbyQZK60K0SV%2Bu4tgV%2BRss%2BKbUBqjDYc%2B4xypzDLgdaMf9OeP8sHV%2FhllZ36MuApT%2BEzF%2B61XnuZmHgArSDmSQmvbF3RlWXtNclVCuArMq9fWvf2p7SMIpMDHYk%3D"}],"group":"cf-nel","max_age":604800}'
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=%2FjmK2rN5tIzrV7WrgI5n9bZQx%2Fr6tlm6i%2FYBM14gXZD1qKpiS00cusKMqNxgLgeuiVwZRiPm6955ZEpWpZv%2FcZ0AvYP2Gv%2FY0D3IuslacKAqTOvq8rzei8mZlSwdQn7FNUVL7DucNug5Ao7ROPA%3D"}],"group":"cf-nel","max_age":604800}'
Nel:
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
Server:
- cloudflare
Cf-Ray:
- 681bf2721fb6176e-FRA
- 6ff4226ab9ec9a18-FRA
body:
encoding: ASCII-8BIT
string: |
@ -68,5 +74,5 @@ http_interactions:
"message": "There is no help desk configured at this address. This means that the address is available and that you can claim it at http://www.zendesk.com/signup"
}
}
recorded_at: Fri, 20 Aug 2021 13:25:20 GMT
recorded_with: VCR 6.0.0
recorded_at: Thu, 21 Apr 2022 06:41:31 GMT
recorded_with: VCR 6.1.0

View file

@ -2,7 +2,7 @@
http_interactions:
- request:
method: get
uri: "<IMPORT_ZENDESK_ENDPOINT>/users/me"
uri: https://<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>/api/v2/users/me
body:
encoding: US-ASCII
string: ''
@ -21,17 +21,19 @@ http_interactions:
message: OK
headers:
Date:
- Fri, 20 Aug 2021 13:25:32 GMT
- Thu, 21 Apr 2022 06:41:42 GMT
Content-Type:
- application/json; charset=UTF-8
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Zendesk-Api-Version:
- '2022-01-01'
X-Zendesk-Api-Version:
- v2
X-Zendesk-Application-Version:
- v9449
- v12002
X-Frame-Options:
- SAMEORIGIN
Access-Control-Expose-Headers:
@ -45,16 +47,25 @@ http_interactions:
Strict-Transport-Security:
- max-age=31536000;
Etag:
- W/"3c0256d85244a27a8ce7b6f5873ccd20"
- W/"5262879dbab8653d2b708c0695470dae"
Cache-Control:
- max-age=0, private, must-revalidate
X-Zendesk-Origin-Server:
- classic-app-server-5d8ffc66d-4qfvw
- classic-app-server-5fd77bc484-58sd4
Set-Cookie:
- __cfruid=3c9d7ccf2e697016db455aa1d0c0066dd7b78dac-1650523302; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- _zendesk_cookie=BAhJIhl7ImRldmljZV90b2tlbnMiOnt9fQY6BkVU--459ed01949a36415c1716b5711271c3d08918307;
path=/; expires=Fri, 21 Apr 2023 05:10:04 GMT; secure; HttpOnly; SameSite=None
X-Request-Id:
- 681bf2ba78d91456-FRA
- 681bf2ba78d91456-FRA
- 6ff422ae4c06917a-FRA
- 6ff422ae4c06917a-FRA
X-Runtime:
- '0.062649'
- '0.073449'
X-Envoy-Upstream-Service-Time:
- '75'
X-Envoy-Decorator-Operation:
- classic.classic.svc.cluster.local:80/*
X-Zendesk-Zorg:
- 'yes'
X-Content-Type-Options:
@ -64,23 +75,20 @@ http_interactions:
Expect-Ct:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Report-To:
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=zoYPc%2BRXmsDxXz60KgGj6HbcHwUVl2DMdXJDLG7Puadk819LSODyeTWQVmq%2BWNr6dPfLjl%2BbjgadmjuMkEMh3%2FagyesmlXY6%2FmIE7h7ufqhaf3WDEHy54jYUlnSVDOZsFcaoMYbL0w%3D%3D"}],"group":"cf-nel","max_age":604800}'
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=ChTPako7BNzlx1t4o5S%2Bzub5muS2kwPRrLS6ZDtwmWXaiXVGCtMTte0%2Fwho9CJBhh%2BHYbGXoRacit7qKxf2bT%2BfhSpyqhSJikx0My71X6QecFJrEep1tXZ5yvXmaxwfWCxhg3k%2FLqg%3D%3D"}],"group":"cf-nel","max_age":604800}'
Nel:
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
Set-Cookie:
- __cfruid=da46982ffcca5ea958f4e4ca167a32ad2a9f96b7-1629465932; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
Server:
- cloudflare
Cf-Ray:
- 681bf2ba78d91456-FRA
- 6ff422ae4c06917a-FRA
body:
encoding: ASCII-8BIT
string: '{"user":{"id":null,"url":null,"name":"Nicht registrierter Benutzer","email":"invalid@example.com","created_at":null,"updated_at":null,"time_zone":"Berlin","iana_time_zone":"Europe/Berlin","phone":null,"shared_phone_number":null,"photo":null,"locale_id":8,"locale":"de","organization_id":null,"role":"end-user","verified":false,"authenticity_token":"K4wyhBU1oaZc51Iy3A0wE4iBxJxbFdcdiGbGTfCiML1zJpFFy6QhSMHp+lzp2PvYoyUtVqunySi7wRpOtrywzg=="}}'
recorded_at: Fri, 20 Aug 2021 13:25:31 GMT
string: '{"user":{"id":null,"url":null,"name":"Nicht registrierter Benutzer","email":"invalid@example.com","created_at":null,"updated_at":null,"time_zone":"Berlin","iana_time_zone":"Europe/Berlin","phone":null,"shared_phone_number":null,"photo":null,"locale_id":8,"locale":"de","organization_id":null,"role":"end-user","verified":false,"authenticity_token":"YxLq8C5kqK9wlxcPpn7sMg7vz/cebWCx2ad6WSAQSJzfN5/foCWTT1g8wAqSBag9ZvnwXpddicF3vsXOJSRLBA=="}}'
recorded_at: Thu, 21 Apr 2022 06:41:42 GMT
- request:
method: get
uri: "<IMPORT_ZENDESK_ENDPOINT>/users/me"
uri: https://<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>/api/v2/users/me
body:
encoding: US-ASCII
string: ''
@ -90,7 +98,7 @@ http_interactions:
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
User-Agent:
- ZendeskAPI Ruby 1.32.0
- ZendeskAPI Ruby 1.35.0
Authorization:
- Basic <IMPORT_ZENDESK_ENDPOINT_BASIC_AUTH>
response:
@ -99,17 +107,19 @@ http_interactions:
message: OK
headers:
Date:
- Fri, 20 Aug 2021 13:25:33 GMT
- Thu, 21 Apr 2022 06:41:43 GMT
Content-Type:
- application/json; charset=UTF-8
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Zendesk-Api-Version:
- '2022-01-01'
X-Zendesk-Api-Version:
- v2
X-Zendesk-Application-Version:
- v9449
- v12002
X-Frame-Options:
- SAMEORIGIN
Access-Control-Expose-Headers:
@ -123,16 +133,25 @@ http_interactions:
Strict-Transport-Security:
- max-age=31536000;
Etag:
- W/"f14a46f2e02be3ac54793639fc4a2bab"
- W/"0e26f80afd79359c95ef7eb387576889"
Cache-Control:
- max-age=0, private, must-revalidate
X-Zendesk-Origin-Server:
- classic-app-server-5d8ffc66d-tlbz4
- classic-app-server-5fd77bc484-hpl7r
Set-Cookie:
- __cfruid=b43edaabc5d3557e6f0ccf3dce44c9295421c11c-1650523303; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- _zendesk_cookie=BAhJIhl7ImRldmljZV90b2tlbnMiOnt9fQY6BkVU--459ed01949a36415c1716b5711271c3d08918307;
path=/; expires=Fri, 21 Apr 2023 05:34:37 GMT; secure; HttpOnly; SameSite=None
X-Request-Id:
- 681bf2c5282d42f7-FRA
- 681bf2c5282d42f7-FRA
- 6ff422b66ad59110-FRA
- 6ff422b66ad59110-FRA
X-Runtime:
- '0.211401'
- '0.106433'
X-Envoy-Upstream-Service-Time:
- '108'
X-Envoy-Decorator-Operation:
- classic.classic.svc.cluster.local:80/*
X-Zendesk-Zorg:
- 'yes'
Content-Encoding:
@ -144,19 +163,16 @@ http_interactions:
Expect-Ct:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Report-To:
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=lptF1lImDKX46TfzAwSGsGGPe8vCgQJGykBIRA%2B%2B%2F50MYmNlyuNV9bqDghfiMLyqZFABSRwpO57DlW8WMoXvCCLngFo7MyPCmxwsWF9DGqdu0uyoB1hRY9CgaDRzPz1yfiwKO8kfkg%3D%3D"}],"group":"cf-nel","max_age":604800}'
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=RYkOq%2FySJmCFdUJL1K4RhSrL822ORqz7mknBGUgO%2FcISZ9Bea84DtyMcNDdpjKrOBsno2TgicFUnVCzCujrzvIsNK18pn1EviQQcvGtA1FW7YC%2F5sQk7luStiJ%2BK1KUsbswEpR2sBg%3D%3D"}],"group":"cf-nel","max_age":604800}'
Nel:
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
Set-Cookie:
- __cfruid=194b2ee3473a1a1f8f7c192193f8c8d8240c03b8-1629465933; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
Server:
- cloudflare
Cf-Ray:
- 681bf2c5282d42f7-FRA
- 6ff422b66ad59110-FRA
body:
encoding: ASCII-8BIT
string: !binary |-
H4sIAAAAAAAAA21T7WrbMBR9laHfSfxRu0kMhW39WDvYYDSlJWMIxb5x1MiSK125TUrfZm+yF9uVk7QdDPIjlo7OPefo6Jl5B5YVz0xWrEiSPB4fZeOjZMC8VaxgK8TWFVG01V5vVqDa0RZ0BW49Kk0TiVZGXRoFChe9HR7dO6PZgGnRAHF8NosP143EFS1BI2TgXZjFyIW1jz1zYKPd0oJAqLhAgqRxkg/j8TCZztK0yBL6zQnj2+o9Jk2G8WSYxrPkqEjGRToJGJQN8K3R/XSwSgY1UmjB3++ce2taiF4B7Wp3Io6TJEvSjM64lbCkp9/h2jeLkBVaDwNGa2hYob1SA6ZMKRTwPsPDF80GPby5Jhpja6HlVqA0egfKs3Ge58cEtkYFmaJqepUdWLmUQES7McLjCjTKUuKGo1mDJvCpz9cSl8mndn7V2ondCHfTfYmO8wf3/XEVx7fusrs7W2utHlT3sMavAJN6fG9mJoovmqu7bC5vz8q5TKeX02/mdHZxfnd+++PkJFzQE4LVQvUyd+ZQ1I4VP1nKfg2YUFLQFyOoKFF2pH0ndBcVK5ZCOYpnn5yoSfzrohIOuTK11Icr/v/1PRq+JHZjebDPQYuFCpEcuGWtBXobciMdFSCVai9KG4T935Asx01LsJ2R0js0De/X3+w1pgIraNjBCYW9BuQWHFpJHqnLewKj1Ya3VnbUQE6VbcgcDdvLOhwIBf7HtvOuDa/mzUEFS+EV8toa3/Za0izPs2l4eBZaY5GXrjsICu+LUylURcOe2d5GRe2tzGPoQ0opKAkLKnrtUIaSskuvqz+/2cvLy1+xR8KQ5AMAAA==
recorded_at: Fri, 20 Aug 2021 13:25:33 GMT
recorded_with: VCR 6.0.0
H4sIAAAAAAAAA21T227TQBD9FbSvJPG9qS1VAipKqYQq0rRSQWi1tif2Nutds5ekTtW/4U/4MWadpBQJyw/2zNmZM2fOPhFnQJPiifCaFFGUhfMknSfRhDgtSEFaa3tTBMFOOjm0IPrZDmQNZj2rVBewngebOPAlTPD38OzBKEkmRLIOsMYHVb656bhtMQQd475uqcqZ8bF3Y2VfDbOVBmahpswiJA6jbBrOp1G+jOMijfD9hhjX168xcTwN02kcLcOTIkmL5NRjLO+A7pQcu4MW3LPhTDL6OvPRadVD8ALo2/2JMIyiNIpTPGNappHPmKHSdaXXasWEgQnBoFWkkE6ICRGqYgLoKOLxD5uDnN7eYB2lGyb5jlmu5B6UpfMsy04QrJXwPFndjTQ3oPmKAxay2mEb5mwL0vKK24FatQaJ4OTzcnmRJlfN9SLY6U/rt0PDt6eL1NkguBu6225RDvK+clv+OJx3V/laZHf3oskXD6dh9vP6Slx/2eX3t1t5Gbyf64ch7M7bi69nZ35Djxa0ZGKkuR/OssaQ4juJyQ/kIzjDP4JQVlm+Qe57onutXuQ5SMcaJP8SFMxYKlTD5XHH/9/fVtEVVlea+vEpSFYKL8lBesMbyazTXjfkUYNFVx1ISWXh8OmVpXboEZaiuZyxqqNjcNxTHvonicMsx3SnatAMWx7nQcnXYKkGYzXHSdHSBz2UFAPtNd+gESk6t8MRseWB3PGA9/E/wxtnen95/s5Rw4o5YWmjletHUnGaZWnu75+GXmlLK7M5EvLXjKI1RI3Nno7z1GjiWm29K2LUQnAo0e+Nsdx7lVw6Wf/+RZ6fn/8AC1q1LOsDAAA=
recorded_at: Thu, 21 Apr 2022 06:41:43 GMT
recorded_with: VCR 6.1.0

View file

@ -2,7 +2,7 @@
http_interactions:
- request:
method: get
uri: "<IMPORT_ZENDESK_ENDPOINT>/users/me"
uri: https://<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>/api/v2/users/me
body:
encoding: US-ASCII
string: ''
@ -21,17 +21,19 @@ http_interactions:
message: OK
headers:
Date:
- Fri, 20 Aug 2021 13:25:28 GMT
- Thu, 21 Apr 2022 06:41:39 GMT
Content-Type:
- application/json; charset=UTF-8
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Zendesk-Api-Version:
- '2022-01-01'
X-Zendesk-Api-Version:
- v2
X-Zendesk-Application-Version:
- v9449
- v12002
X-Frame-Options:
- SAMEORIGIN
Access-Control-Expose-Headers:
@ -45,16 +47,25 @@ http_interactions:
Strict-Transport-Security:
- max-age=31536000;
Etag:
- W/"8375b55c4a431d8dfb8712262f6e3751"
- W/"681d3e26da91ec1ec3e7adc144a3f491"
Cache-Control:
- max-age=0, private, must-revalidate
X-Zendesk-Origin-Server:
- classic-app-server-5d8ffc66d-zdfqv
- classic-app-server-5fd77bc484-k6qv7
Set-Cookie:
- __cfruid=f5aac50801f61e2f1269a27eeca01b5e93639828-1650523299; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- _zendesk_cookie=BAhJIhl7ImRldmljZV90b2tlbnMiOnt9fQY6BkVU--459ed01949a36415c1716b5711271c3d08918307;
path=/; expires=Fri, 21 Apr 2023 05:12:03 GMT; secure; HttpOnly; SameSite=None
X-Request-Id:
- 681bf2a41cd942e1-FRA
- 681bf2a41cd942e1-FRA
- 6ff4229a4e229be2-FRA
- 6ff4229a4e229be2-FRA
X-Runtime:
- '0.063942'
- '0.052510'
X-Envoy-Upstream-Service-Time:
- '54'
X-Envoy-Decorator-Operation:
- classic.classic.svc.cluster.local:80/*
X-Zendesk-Zorg:
- 'yes'
X-Content-Type-Options:
@ -64,23 +75,20 @@ http_interactions:
Expect-Ct:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Report-To:
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=0adRYvUqj6DLw53lysn1c4fdAfplJ9hZLGI9u43zLUexARu6T0reARX2x1XO9KniTTM54OzlS3ViC3jlmu3iwTUzxq2%2BrAos0l6bY1sLYEcPvwgdUUW%2Fu8luaL2vx2k5MVgogIw89Q%3D%3D"}],"group":"cf-nel","max_age":604800}'
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=eS0Ikmx6N5lecS35yXPRjBvNhkhBX3VYvGwDNEJAZhNOoz0gtKggbBtMHsDkLTI%2Fkw%2BmTRgGCt19QxsdEIToASFxW1YOJZNbTYe5fgN0hPTLll9%2FdEnITqSsZl1orTwQ9zu71rbdiA%3D%3D"}],"group":"cf-nel","max_age":604800}'
Nel:
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
Set-Cookie:
- __cfruid=d91ca7754792696e2e55df017a943bfcba44da63-1629465928; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
Server:
- cloudflare
Cf-Ray:
- 681bf2a41cd942e1-FRA
- 6ff4229a4e229be2-FRA
body:
encoding: ASCII-8BIT
string: '{"user":{"id":null,"url":null,"name":"Nicht registrierter Benutzer","email":"invalid@example.com","created_at":null,"updated_at":null,"time_zone":"Berlin","iana_time_zone":"Europe/Berlin","phone":null,"shared_phone_number":null,"photo":null,"locale_id":8,"locale":"de","organization_id":null,"role":"end-user","verified":false,"authenticity_token":"iN4i2T1LrOEa1Sstda+gU2F9ARv5ICRoTRVuKOiX01BCr29ys5aHk+ANDErHOy9TluEfw9fySXlsnTXG6MetGg=="}}'
recorded_at: Fri, 20 Aug 2021 13:25:28 GMT
string: '{"user":{"id":null,"url":null,"name":"Nicht registrierter Benutzer","email":"invalid@example.com","created_at":null,"updated_at":null,"time_zone":"Berlin","iana_time_zone":"Europe/Berlin","phone":null,"shared_phone_number":null,"photo":null,"locale_id":8,"locale":"de","organization_id":null,"role":"end-user","verified":false,"authenticity_token":"6mTyHmp0u+ZL2SB8tJn/pLJU6HQg4A3pl+rBVJurfrTLAPr7EvwfsEyXpTUV1ymYOJHeT2h1MBQ+Wdb6BBqoBQ=="}}'
recorded_at: Thu, 21 Apr 2022 06:41:39 GMT
- request:
method: get
uri: "<IMPORT_ZENDESK_ENDPOINT>/users/me"
uri: https://<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>/api/v2/users/me
body:
encoding: US-ASCII
string: ''
@ -90,7 +98,7 @@ http_interactions:
Accept-Encoding:
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
User-Agent:
- ZendeskAPI Ruby 1.32.0
- ZendeskAPI Ruby 1.35.0
Authorization:
- Basic Ym9iLnNtaXRoQHpudW55LmNvbS90b2tlbjoxbnY0bDFkVDBLM04=
response:
@ -99,17 +107,19 @@ http_interactions:
message: OK
headers:
Date:
- Fri, 20 Aug 2021 13:25:30 GMT
- Thu, 21 Apr 2022 06:41:40 GMT
Content-Type:
- application/json; charset=UTF-8
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Zendesk-Api-Version:
- '2022-01-01'
X-Zendesk-Api-Version:
- v2
X-Zendesk-Application-Version:
- v9449
- v12002
X-Frame-Options:
- SAMEORIGIN
Access-Control-Expose-Headers:
@ -123,16 +133,25 @@ http_interactions:
Strict-Transport-Security:
- max-age=31536000;
Etag:
- W/"3a3354af8bec0d0ee73e1dfe8f2afe57"
- W/"afe75741108474e98b4b5f9207017b01"
Cache-Control:
- max-age=0, private, must-revalidate
X-Zendesk-Origin-Server:
- classic-app-server-5d8ffc66d-gcvf7
- classic-app-server-5fd77bc484-blnb7
Set-Cookie:
- __cfruid=e1b5fda03f1d6a9efdd616432821006b8eb08151-1650523300; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- _zendesk_cookie=BAhJIhl7ImRldmljZV90b2tlbnMiOnt9fQY6BkVU--459ed01949a36415c1716b5711271c3d08918307;
path=/; expires=Fri, 21 Apr 2023 05:11:27 GMT; secure; HttpOnly; SameSite=None
X-Request-Id:
- 681bf2aebcae4ec8-FRA
- 681bf2aebcae4ec8-FRA
- 6ff422a21e446901-FRA
- 6ff422a21e446901-FRA
X-Runtime:
- '0.070674'
- '0.051355'
X-Envoy-Upstream-Service-Time:
- '54'
X-Envoy-Decorator-Operation:
- classic.classic.svc.cluster.local:80/*
X-Zendesk-Zorg:
- 'yes'
Content-Encoding:
@ -144,19 +163,16 @@ http_interactions:
Expect-Ct:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Report-To:
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=3EKqvaJktbKP3J3zBer88hwW1KsiD5eyi6EFc7sUE8Ymynx%2FtRpMMTjeO2kTzweHgePS3b5NPJB12t%2BCcWp9f2yTQtlp2VRmWJknJeUEiog%2B4NcuBmjyah4bgObY7yQGJaFxWYbxEw%3D%3D"}],"group":"cf-nel","max_age":604800}'
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=z0hCFNZdqve4l9brdI1slN6LtqQIToaBk1UgNInq9XGTw3cNpm7MeVelN3a%2Faypwt6jUlU3bdjG1EzVc6sDBKUurkBrDtOU6TRKVtlf3PpVblYyKQLojP1Jcr45HHe6kch%2B1hnSIrw%3D%3D"}],"group":"cf-nel","max_age":604800}'
Nel:
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
Set-Cookie:
- __cfruid=cde6c6306e84619802437e5b4c76a238af75f3fe-1629465930; path=/; domain=.<IMPORT_ZENDESK_ENDPOINT_HOSTNAME>;
HttpOnly; Secure; SameSite=None
- '{"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}'
Server:
- cloudflare
Cf-Ray:
- 681bf2aebcae4ec8-FRA
- 6ff422a21e446901-FRA
body:
encoding: ASCII-8BIT
string: !binary |-
H4sIAAAAAAAAA12QUWvCQBCE/4rcq2mDpVQRhKpYGsSUKqboSziTjVm87MXLRjTif+8lQSl9u52Zj9m9qygLMGJ4FRiLIZVKOaI06v4kmYEYCh+jlDsG9liwQTAMpjMBKrmyrCMgk2gRgXSSCuN3OMssV/Ac6cy6kQHJEIeSHwV5/E9hzCCsNNVlEzAKyYIoSYZ/nVlpdA7uI5CnDdFuXaTS2JZGC6nMdvVZrWU11vdB6UgqCOtzB45oJ9sag23UZi8JK8moqUm0vNGqXgwofmp+yxEnMJgg2EQiVQGOkCWnQIwR8iVkfQCyAA+662A3Xv+8fCTb1cGf+6/eFOfH8bG3WC9mF7psvMpbVm+9ioLg01vwWX1/9fPYTQ7bLpz6Ew91Nl8N/G3X9frLab5xe/vRSNxuv0GxQ424AQAA
recorded_at: Fri, 20 Aug 2021 13:25:30 GMT
recorded_with: VCR 6.0.0
H4sIAAAAAAAAA12QUW+CQBCE/4q5Z1pT00ZrYlKp1tQaU5X6ShZYZfW4w+VAqvG/e0A0Td9uZ+bL7N5Z5Bmy6J8FRaKvcikdkbO8PRUkKPpiTmFsWoxbygwTskFuuahyc7KsIzABsoggVYCk6A1LSFKJj6FOrBsygsHIB3MvSKN/iqEE/ZNWVZmLLElZkECB/9cZ56xTbN8DaVwTzdZZDGxbas1XeRJUZzWW1Yy+DVKHINGvzu05oplsa4S2UfMWFJ3AkFZ1ouFZy2oxVNFD/VuOKJBpQ2gTG5AZOgJyE6MyFJL59Y3eo7JAj8Hz5Kic6ex7uFgextn8vXjpjNZY4GuxcqeBt1oPSzwevrpA5Ux6z17yEwfhVK4/drtJ8NleTo68OUyH+17adTtPo91sMRiIy+UKxPOwHbgBAAA=
recorded_at: Thu, 21 Apr 2022 06:41:40 GMT
recorded_with: VCR 6.1.0

View file

@ -21,24 +21,30 @@ http_interactions:
message: Not Found
headers:
Date:
- Fri, 20 Aug 2021 13:25:22 GMT
- Thu, 21 Apr 2022 06:41:33 GMT
Content-Type:
- application/json; charset=UTF-8
Transfer-Encoding:
- chunked
Connection:
- keep-alive
Zendesk-Api-Version:
- '2022-01-01'
Strict-Transport-Security:
- max-age=0;
Cache-Control:
- no-cache
X-Zendesk-Origin-Server:
- classic-app-server-687bcbddf6-thrh8
- classic-app-server-6d4cf7447c-xg5pq
X-Request-Id:
- 681bf27f9911dfe3-FRA
- 681bf27f9911dfe3-FRA
- 6ff42278bce768ec-FRA
- 6ff42278bce768ec-FRA
X-Runtime:
- '0.013831'
- '0.011231'
X-Envoy-Upstream-Service-Time:
- '12'
X-Envoy-Decorator-Operation:
- classic.classic.svc.cluster.local:80/*
X-Zendesk-Zorg:
- 'yes'
Cf-Cache-Status:
@ -46,19 +52,19 @@ http_interactions:
Expect-Ct:
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Set-Cookie:
- __cf_bm=a7f835bb234b38bfc60b856171221a38404366dc-1629465922-1800-AXfdmkG4tiWbLv6YOmgNJw0zp7sMKZurLIa0h/dPedp8qQd+5exVovRZO25rrHNZXnxm8LVadLpPxLYGO5WCXzrwoqVimHeyNRwLvV1AGcDN;
path=/; expires=Fri, 20-Aug-21 13:55:22 GMT; domain=.zendesk.com; HttpOnly;
- __cf_bm=bE56W0w56GUFHqxTkvSrFU.fX8F48AMZ1oroZJZwtuA-1650523293-0-AY+ps4kQ+Qr5d1JazKTI3tYVb94Gzce7QXKhTGIGhTZYedaETompkjcLlX2al7o1m36FcQaFtdpreRvFQFuXf9HY0lRCwKpXbRDAqc+E6t2z;
path=/; expires=Thu, 21-Apr-22 07:11:33 GMT; domain=.zendesk.com; HttpOnly;
Secure; SameSite=None
- __cfruid=adb8a84aaa2e97ae23ba7001b3ed6d3f495e8165-1629465922; path=/; domain=.zendesk.com;
- __cfruid=bd6d8ffcf4725c1722cf4b55e8054e3809031aab-1650523293; path=/; domain=.zendesk.com;
HttpOnly; Secure; SameSite=None
Report-To:
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=LNVzHYTBH8fWiM2jiWF7B4mIqaHP3B2OeB8AhB6FhS7c0rN%2BA%2B9DAhJ%2FqDdKQ2t0Xk%2B%2FGwhkIsKvBGk1JKqU3ZamMtlqgp9qKbqAwTiCOcX1fenrU2jXHIeILZjl%2BDUhboztaA4agu9IiQauN88%3D"}],"group":"cf-nel","max_age":604800}'
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=I1eBI7bQDQUG%2BadcjaG4Tu%2FljLV9IMjfEzO387O9f%2F4OjpQZZ4A2uR9on%2B9SHnQbsJJ1Q27gKShvn3NpGj9O6fNo9qivsfDLjbqvsMtqL83FP8%2Bxnk53FT%2FbM5mYDOM8e0eRfLicLBzGjcqi8Pg%3D"}],"group":"cf-nel","max_age":604800}'
Nel:
- '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
Server:
- cloudflare
Cf-Ray:
- 681bf27f9911dfe3-FRA
- 6ff42278bce768ec-FRA
body:
encoding: ASCII-8BIT
string: |
@ -68,5 +74,5 @@ http_interactions:
"message": "There is no help desk configured at this address. This means that the address is available and that you can claim it at http://www.zendesk.com/signup"
}
}
recorded_at: Fri, 20 Aug 2021 13:25:22 GMT
recorded_with: VCR 6.0.0
recorded_at: Thu, 21 Apr 2022 06:41:33 GMT
recorded_with: VCR 6.1.0

File diff suppressed because one or more lines are too long