123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540 |
- # encoding: utf-8
- require 'test_helper'
- class AssetsTest < ActiveSupport::TestCase
- test 'user' do
- roles = Role.where(name: %w(Agent Admin))
- groups = Group.all
- org = Organization.create_or_update(
- name: 'some user org',
- updated_by_id: 1,
- created_by_id: 1,
- )
- user1 = User.create_or_update(
- login: 'assets1@example.org',
- firstname: 'assets1',
- lastname: 'assets1',
- email: 'assets1@example.org',
- password: 'some_pass',
- active: true,
- updated_by_id: 1,
- created_by_id: 1,
- organization_id: org.id,
- roles: roles,
- groups: groups,
- )
- user2 = User.create_or_update(
- login: 'assets2@example.org',
- firstname: 'assets2',
- lastname: 'assets2',
- email: 'assets2@example.org',
- password: 'some_pass',
- active: true,
- updated_by_id: 1,
- created_by_id: 1,
- roles: roles,
- groups: groups,
- )
- user3 = User.create_or_update(
- login: 'assets3@example.org',
- firstname: 'assets3',
- lastname: 'assets3',
- email: 'assets3@example.org',
- password: 'some_pass',
- active: true,
- updated_by_id: user1.id,
- created_by_id: user2.id,
- roles: roles,
- groups: groups,
- )
- user3 = User.find(user3.id)
- assets = user3.assets({})
- org = Organization.find(org.id)
- attributes = org.attributes_with_associations
- attributes.delete('user_ids')
- assert( diff(attributes, assets[:Organization][org.id]), 'check assets')
- user1 = User.find(user1.id)
- attributes = user1.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( diff(attributes, assets[:User][user1.id]), 'check assets' )
- user2 = User.find(user2.id)
- attributes = user2.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( diff(attributes, assets[:User][user2.id]), 'check assets' )
- user3 = User.find(user3.id)
- attributes = user3.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( diff(attributes, assets[:User][user3.id]), 'check assets' )
- # touch org, check if user1 has changed
- sleep 2
- org2 = Organization.find(org.id)
- org2.note = "some note...#{rand(9_999_999_999_999)}"
- org2.save
- attributes = org2.attributes_with_associations
- attributes.delete('user_ids')
- assert( !diff(attributes, assets[:Organization][org2.id]), 'check assets' )
- user1_new = User.find(user1.id)
- attributes = user1_new.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( !diff(attributes, assets[:User][user1_new.id]), 'check assets' )
- # check new assets lookup
- assets = user3.assets({})
- attributes = org2.attributes_with_associations
- attributes.delete('user_ids')
- assert( diff(attributes, assets[:Organization][org.id]), 'check assets')
- user1 = User.find(user1.id)
- attributes = user1.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( diff(attributes, assets[:User][user1.id]), 'check assets' )
- user2 = User.find(user2.id)
- attributes = user2.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( diff(attributes, assets[:User][user2.id]), 'check assets' )
- user3 = User.find(user3.id)
- attributes = user3.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( diff(attributes, assets[:User][user3.id]), 'check assets' )
- end
- test 'organization' do
- roles = Role.where( name: %w(Agent Admin) )
- admin1 = User.create_or_update(
- login: 'admin1@example.org',
- firstname: 'admin1',
- lastname: 'admin1',
- email: 'admin1@example.org',
- password: 'some_pass',
- active: true,
- updated_by_id: 1,
- created_by_id: 1,
- roles: roles,
- )
- roles = Role.where( name: %w(Customer) )
- org = Organization.create_or_update(
- name: 'some customer org',
- updated_by_id: admin1.id,
- created_by_id: 1,
- )
- user1 = User.create_or_update(
- login: 'assets1@example.org',
- firstname: 'assets1',
- lastname: 'assets1',
- email: 'assets1@example.org',
- password: 'some_pass',
- active: true,
- updated_by_id: 1,
- created_by_id: 1,
- organization_id: org.id,
- roles: roles,
- )
- user2 = User.create_or_update(
- login: 'assets2@example.org',
- firstname: 'assets2',
- lastname: 'assets2',
- email: 'assets2@example.org',
- password: 'some_pass',
- active: true,
- updated_by_id: 1,
- created_by_id: 1,
- organization_id: org.id,
- roles: roles,
- )
- user3 = User.create_or_update(
- login: 'assets3@example.org',
- firstname: 'assets3',
- lastname: 'assets3',
- email: 'assets3@example.org',
- password: 'some_pass',
- active: true,
- updated_by_id: user1.id,
- created_by_id: user2.id,
- roles: roles,
- )
- org = Organization.find(org.id)
- assets = org.assets({})
- attributes = org.attributes_with_associations
- attributes.delete('user_ids')
- assert( diff(attributes, assets[:Organization][org.id]), 'check assets' )
- admin1 = User.find(admin1.id)
- attributes = admin1.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( diff(attributes, assets[:User][admin1.id]), 'check assets' )
- user1 = User.find(user1.id)
- attributes = user1.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( diff(attributes, assets[:User][user1.id]), 'check assets' )
- user2 = User.find(user2.id)
- attributes = user2.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( diff(attributes, assets[:User][user2.id]), 'check assets' )
- user3 = User.find(user3.id)
- attributes = user3.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert_nil( assets[:User][user3.id], 'check assets' )
- # touch user 2, check if org has changed
- sleep 2
- user_new_2 = User.find(user2.id)
- user_new_2.lastname = 'assets2'
- user_new_2.save
- org_new = Organization.find(org.id)
- attributes = org_new.attributes_with_associations
- attributes.delete('user_ids')
- assert( !diff(attributes, assets[:Organization][org_new.id]), 'check assets' )
- attributes = user_new_2.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( diff(attributes, assets[:User][user_new_2.id]), 'check assets' )
- # check new assets lookup
- assets = org_new.assets({})
- attributes = org_new.attributes_with_associations
- attributes.delete('user_ids')
- assert( diff(attributes, assets[:Organization][org_new.id]), 'check assets' )
- attributes = user_new_2.attributes_with_associations
- attributes['accounts'] = {}
- attributes['password'] = ''
- attributes.delete('token_ids')
- attributes.delete('authorization_ids')
- assert( diff(attributes, assets[:User][user_new_2.id]), 'check assets' )
- end
- def diff(o1, o2)
- return true if o1 == o2
- %w(updated_at created_at).each {|item|
- if o1[item]
- o1[item] = o1[item].to_s
- end
- if o2[item]
- o2[item] = o2[item].to_s
- end
- }
- return true if (o1.to_a - o2.to_a).empty?
- #puts "ERROR: difference \n1: #{o1.inspect}\n2: #{o2.inspect}\ndiff: #{(o1.to_a - o2.to_a).inspect}"
- false
- end
- test 'overview' do
- UserInfo.current_user_id = 1
- roles = Role.where(name: %w(Customer))
- user1 = User.create_or_update(
- login: 'assets_overview1@example.org',
- firstname: 'assets_overview1',
- lastname: 'assets_overview1',
- email: 'assets_overview1@example.org',
- password: 'some_pass',
- active: true,
- roles: roles,
- )
- user2 = User.create_or_update(
- login: 'assets_overview2@example.org',
- firstname: 'assets_overview2',
- lastname: 'assets_overview2',
- email: 'assets_overview2@example.org',
- password: 'some_pass',
- active: true,
- roles: roles,
- )
- user3 = User.create_or_update(
- login: 'assets_overview3@example.org',
- firstname: 'assets_overview3',
- lastname: 'assets_overview3',
- email: 'assets_overview3@example.org',
- password: 'some_pass',
- active: true,
- roles: roles,
- )
- user4 = User.create_or_update(
- login: 'assets_overview4@example.org',
- firstname: 'assets_overview4',
- lastname: 'assets_overview4',
- email: 'assets_overview4@example.org',
- password: 'some_pass',
- active: true,
- roles: roles,
- )
- user5 = User.create_or_update(
- login: 'assets_overview5@example.org',
- firstname: 'assets_overview5',
- lastname: 'assets_overview5',
- email: 'assets_overview5@example.org',
- password: 'some_pass',
- active: true,
- roles: roles,
- )
- ticket_state1 = Ticket::State.find_by(name: 'new')
- ticket_state2 = Ticket::State.find_by(name: 'open')
- overview_role = Role.find_by(name: 'Agent')
- overview = Overview.create_or_update(
- name: 'my asset test',
- link: 'my_asset_test',
- prio: 1000,
- role_id: overview_role.id,
- user_ids: [ user4.id, user5.id ],
- condition: {
- 'ticket.state_id' => {
- operator: 'is',
- value: [ ticket_state1.id, ticket_state2.id ],
- },
- 'ticket.owner_id' => {
- operator: 'is',
- pre_condition: 'specific',
- value: user1.id,
- value_completion: 'John Smith <john.smith@example.com>'
- },
- },
- order: {
- by: 'created_at',
- direction: 'ASC',
- },
- view: {
- d: %w(title customer group created_at),
- s: %w(title customer group created_at),
- m: %w(number title customer group created_at),
- view_mode_default: 's',
- },
- )
- assets = overview.assets({})
- assert(assets[:User][user1.id], 'check assets')
- assert_not(assets[:User][user2.id], 'check assets')
- assert_not(assets[:User][user3.id], 'check assets')
- assert(assets[:User][user4.id], 'check assets')
- assert(assets[:User][user5.id], 'check assets')
- assert(assets[:TicketState][ticket_state1.id], 'check assets')
- assert(assets[:TicketState][ticket_state2.id], 'check assets')
- overview = Overview.create_or_update(
- name: 'my asset test',
- link: 'my_asset_test',
- prio: 1000,
- role_id: overview_role.id,
- user_ids: [ user4.id ],
- condition: {
- 'ticket.state_id' => {
- operator: 'is',
- value: ticket_state1.id,
- },
- 'ticket.owner_id' => {
- operator: 'is',
- pre_condition: 'specific',
- value: [user1.id, user2.id],
- },
- },
- order: {
- by: 'created_at',
- direction: 'ASC',
- },
- view: {
- d: %w(title customer group created_at),
- s: %w(title customer group created_at),
- m: %w(number title customer group created_at),
- view_mode_default: 's',
- },
- )
- assets = overview.assets({})
- assert(assets[:User][user1.id], 'check assets')
- assert(assets[:User][user2.id], 'check assets')
- assert_not(assets[:User][user3.id], 'check assets')
- assert(assets[:User][user4.id], 'check assets')
- assert_not(assets[:User][user5.id], 'check assets')
- assert(assets[:TicketState][ticket_state1.id], 'check assets')
- assert_not(assets[:TicketState][ticket_state2.id], 'check assets')
- end
- test 'sla' do
- UserInfo.current_user_id = 1
- roles = Role.where(name: %w(Customer))
- user1 = User.create_or_update(
- login: 'assets_sla1@example.org',
- firstname: 'assets_sla1',
- lastname: 'assets_sla1',
- email: 'assets_sla1@example.org',
- password: 'some_pass',
- active: true,
- roles: roles,
- )
- user2 = User.create_or_update(
- login: 'assets_sla2@example.org',
- firstname: 'assets_sla2',
- lastname: 'assets_sla2',
- email: 'assets_sla2@example.org',
- password: 'some_pass',
- active: true,
- roles: roles,
- )
- calendar1 = Calendar.first
- ticket_state1 = Ticket::State.find_by(name: 'new')
- ticket_state2 = Ticket::State.find_by(name: 'open')
- sla = Sla.create_or_update(
- name: 'my asset test',
- calendar_id: calendar1.id,
- condition: {
- 'ticket.state_id' => {
- operator: 'is',
- value: [ ticket_state1.id, ticket_state2.id ],
- },
- 'ticket.owner_id' => {
- operator: 'is',
- pre_condition: 'specific',
- value: user1.id,
- value_completion: 'John Smith <john.smith@example.com>'
- },
- },
- )
- assets = sla.assets({})
- assert(assets[:User][user1.id], 'check assets')
- assert_not(assets[:User][user2.id], 'check assets')
- assert(assets[:TicketState][ticket_state1.id], 'check assets')
- assert(assets[:TicketState][ticket_state2.id], 'check assets')
- assert(assets[:Calendar][calendar1.id], 'check assets')
- end
- test 'job' do
- UserInfo.current_user_id = 1
- roles = Role.where(name: %w(Customer))
- user1 = User.create_or_update(
- login: 'assets_job1@example.org',
- firstname: 'assets_job1',
- lastname: 'assets_job1',
- email: 'assets_job1@example.org',
- password: 'some_pass',
- active: true,
- roles: roles,
- )
- user2 = User.create_or_update(
- login: 'assets_job2@example.org',
- firstname: 'assets_job2',
- lastname: 'assets_job2',
- email: 'assets_job2@example.org',
- password: 'some_pass',
- active: true,
- roles: roles,
- )
- user3 = User.create_or_update(
- login: 'assets_job3@example.org',
- firstname: 'assets_job3',
- lastname: 'assets_job3',
- email: 'assets_job3@example.org',
- password: 'some_pass',
- active: true,
- roles: roles,
- )
- ticket_state1 = Ticket::State.find_by(name: 'new')
- ticket_state2 = Ticket::State.find_by(name: 'open')
- ticket_priority2 = Ticket::Priority.find_by(name: '2 normal')
- job = Job.create_or_update(
- name: 'my job',
- timeplan: {
- mon: true,
- },
- condition: {
- 'ticket.state_id' => {
- operator: 'is',
- value: [ ticket_state1.id, ticket_state2.id ],
- },
- 'ticket.owner_id' => {
- operator: 'is',
- pre_condition: 'specific',
- value: user1.id,
- value_completion: 'John Smith <john.smith@example.com>'
- },
- },
- perform: {
- 'ticket.priority_id' => {
- value: ticket_priority2.id,
- },
- 'ticket.owner_id' => {
- pre_condition: 'specific',
- value: user2.id,
- value_completion: 'metest123@znuny.com <metest123@znuny.com>'
- },
- },
- disable_notification: true,
- )
- assets = job.assets({})
- assert(assets[:User][user1.id], 'check assets')
- assert(assets[:User][user2.id], 'check assets')
- assert_not(assets[:User][user3.id], 'check assets')
- assert(assets[:TicketState][ticket_state1.id], 'check assets')
- assert(assets[:TicketState][ticket_state2.id], 'check assets')
- assert(assets[:TicketPriority][ticket_priority2.id], 'check assets')
- end
- end
|