trabajo-afectivo/test/integration/elasticsearch_test.rb

276 lines
8.3 KiB
Ruby
Raw Normal View History

2015-02-25 23:44:29 +00:00
# encoding: utf-8
require 'integration_test_helper'
2015-02-26 00:12:12 +00:00
class ElasticsearchTest < ActiveSupport::TestCase
2015-02-25 23:44:29 +00:00
2015-02-26 00:12:12 +00:00
#Setting.set('es_url', 'http://172.0.0.1:9200')
Setting.set('es_url', 'http://10.240.2.11:9200')
2015-02-25 23:44:29 +00:00
Setting.set('es_index', 'estest.local_zammad')
#Setting.set('es_user', 'elasticsearch')
#Setting.set('es_password', 'zammad')
2015-04-05 23:05:33 +00:00
# set max attachment size
# set attachment types
2015-02-25 23:44:29 +00:00
# drop/create indexes
2015-02-26 00:12:12 +00:00
#Rake::Task["searchindex:drop"].execute
#Rake::Task["searchindex:create"].execute
system('rake searchindex:rebuild')
2015-02-25 23:44:29 +00:00
groups = Group.where( :name => 'Users' )
roles = Role.where( :name => 'Agent' )
agent = User.create_or_update(
:login => 'es-agent@example.com',
:firstname => 'E',
:lastname => 'S',
:email => 'es-agent@example.com',
:password => 'agentpw',
:active => true,
:roles => roles,
:groups => groups,
:updated_by_id => 1,
:created_by_id => 1,
)
group_without_access = Group.create_if_not_exists(
:name => 'WithoutAccess',
:note => 'Test for not access check.',
:updated_by_id => 1,
:created_by_id => 1
)
2015-04-05 23:05:33 +00:00
roles = Role.where( :name => 'Customer' )
organization1 = Organization.create_if_not_exists(
:name => 'Customer Organization Update',
:updated_by_id => 1,
:created_by_id => 1,
)
customer1 = User.create_or_update(
:login => 'es-customer1@example.com',
:firstname => 'ES',
:lastname => 'Customer1',
:email => 'es-customer1@example.com',
:password => 'customerpw',
:active => true,
:organization_id => organization1.id,
:roles => roles,
:updated_by_id => 1,
:created_by_id => 1,
)
customer2 = User.create_or_update(
2015-04-05 23:28:52 +00:00
:login => 'es-customer2@example.com',
2015-04-05 23:05:33 +00:00
:firstname => 'ES',
2015-04-05 23:28:52 +00:00
:lastname => 'Customer2',
:email => 'es-customer2@example.com',
2015-04-05 23:05:33 +00:00
:password => 'customerpw',
:active => true,
:organization_id => organization1.id,
:roles => roles,
:updated_by_id => 1,
:created_by_id => 1,
)
customer3 = User.create_or_update(
:login => 'es-customer3@example.com',
:firstname => 'ES',
:lastname => 'Customer3',
:email => 'es-customer3@example.com',
:password => 'customerpw',
:active => true,
:roles => roles,
:updated_by_id => 1,
:created_by_id => 1,
)
2015-02-25 23:44:29 +00:00
# check tickets and search it
2015-04-05 23:05:33 +00:00
test 'a - tickets' do
2015-02-25 23:44:29 +00:00
ticket1 = Ticket.create(
:title => "some title\n äöüß",
:group => Group.lookup( :name => 'Users'),
2015-04-05 23:05:33 +00:00
:customer_id => customer1.id,
2015-02-25 23:44:29 +00:00
:state => Ticket::State.lookup( :name => 'new' ),
:priority => Ticket::Priority.lookup( :name => '2 normal' ),
:updated_by_id => 1,
:created_by_id => 1,
)
article = Ticket::Article.create(
:ticket_id => ticket1.id,
:from => 'some_sender@example.com',
:to => 'some_recipient@example.com',
:subject => 'some subject',
:message_id => 'some@id',
:body => 'some message',
:internal => false,
:sender => Ticket::Article::Sender.where(:name => 'Customer').first,
:type => Ticket::Article::Type.where(:name => 'email').first,
:updated_by_id => 1,
:created_by_id => 1,
)
ticket1.search_index_update_backend
ticket2 = Ticket.create(
:title => "something else",
:group => Group.lookup( :name => 'Users'),
2015-04-05 23:05:33 +00:00
:customer_id => customer2.id,
2015-02-25 23:44:29 +00:00
:state => Ticket::State.lookup( :name => 'open' ),
:priority => Ticket::Priority.lookup( :name => '2 normal' ),
:updated_by_id => 1,
:created_by_id => 1,
)
article = Ticket::Article.create(
:ticket_id => ticket2.id,
:from => 'some_sender@example.org',
:to => 'some_recipient@example.org',
2015-02-26 00:12:12 +00:00
:subject => 'some subject2 / autobahn what else?',
2015-02-25 23:44:29 +00:00
:message_id => 'some@id',
2015-04-05 23:05:33 +00:00
:body => 'some other message <b>with s<u>t</u>rong text<b>',
:content_type => 'text/html',
2015-02-25 23:44:29 +00:00
:internal => false,
:sender => Ticket::Article::Sender.where(:name => 'Customer').first,
:type => Ticket::Article::Type.where(:name => 'email').first,
:updated_by_id => 1,
:created_by_id => 1,
)
2015-04-05 23:05:33 +00:00
# add attachments which should get index
# add attachments which should not get index
# add to big attachment which should not get index
2015-02-25 23:44:29 +00:00
ticket2.search_index_update_backend
ticket3 = Ticket.create(
:title => "something else",
2015-02-26 00:12:12 +00:00
:group => Group.lookup( :name => 'WithoutAccess'),
2015-04-05 23:05:33 +00:00
:customer_id => customer3.id,
2015-02-25 23:44:29 +00:00
:state => Ticket::State.lookup( :name => 'open' ),
:priority => Ticket::Priority.lookup( :name => '2 normal' ),
:updated_by_id => 1,
:created_by_id => 1,
)
article = Ticket::Article.create(
:ticket_id => ticket3.id,
:from => 'some_sender@example.org',
:to => 'some_recipient@example.org',
:subject => 'some subject3',
:message_id => 'some@id',
2015-02-26 00:12:12 +00:00
:body => 'some other message 3 / kindergarden what else?',
2015-02-25 23:44:29 +00:00
:internal => false,
:sender => Ticket::Article::Sender.where(:name => 'Customer').first,
:type => Ticket::Article::Type.where(:name => 'email').first,
:updated_by_id => 1,
:created_by_id => 1,
)
ticket3.search_index_update_backend
2015-04-05 23:05:33 +00:00
sleep 4
# search as agent
2015-02-25 23:44:29 +00:00
2015-04-05 23:05:33 +00:00
# search for article data
2015-02-25 23:44:29 +00:00
result = Ticket.search(
:current_user => agent,
2015-02-26 00:12:12 +00:00
:query => 'autobahn',
2015-02-25 23:44:29 +00:00
:limit => 15,
)
2015-02-26 00:12:12 +00:00
2015-04-05 23:05:33 +00:00
assert(!result.empty?, 'result exists not')
2015-02-26 00:12:12 +00:00
assert(result[0], 'record 1')
assert(!result[1], 'record 2')
assert_equal(result[0].id, ticket2.id)
2015-04-05 23:05:33 +00:00
# search for html content
result = Ticket.search(
:current_user => agent,
:query => 'strong',
:limit => 15,
)
assert(!result.empty?, 'result exists not')
assert(result[0], 'record 1')
assert(!result[1], 'record 2')
assert_equal(result[0].id, ticket2.id)
2015-02-26 00:12:12 +00:00
2015-04-05 23:05:33 +00:00
# search for indexed attachment
# search for not indexed attachment
# search for ticket with no permissions
2015-02-26 00:12:12 +00:00
result = Ticket.search(
:current_user => agent,
:query => 'kindergarden',
:limit => 15,
)
assert(result.empty?, 'result should be empty')
assert(!result[0], 'record 1')
2015-02-25 23:44:29 +00:00
2015-04-05 23:05:33 +00:00
# search as customer1
result = Ticket.search(
:current_user => customer1,
:query => 'title OR else',
:limit => 15,
)
assert(!result.empty?, 'result exists not')
assert(result[0], 'record 1')
assert(result[1], 'record 2')
assert(!result[2], 'record 3')
assert_equal(result[0].id, ticket2.id)
assert_equal(result[1].id, ticket1.id)
# search as customer2
result = Ticket.search(
:current_user => customer2,
:query => 'title OR else',
:limit => 15,
)
assert(!result.empty?, 'result exists not')
assert(result[0], 'record 1')
assert(result[1], 'record 2')
assert(!result[2], 'record 3')
assert_equal(result[0].id, ticket2.id)
assert_equal(result[1].id, ticket1.id)
# search as customer3
result = Ticket.search(
:current_user => customer3,
:query => 'title OR else',
:limit => 15,
)
assert(!result.empty?, 'result exists not')
assert(result[0], 'record 1')
assert(!result[1], 'record 2')
assert_equal(result[0].id, ticket3.id)
end
# check users and search it
test 'b - users' do
# search as agent
result = User.search(
:current_user => agent,
:query => 'customer1',
:limit => 15,
)
assert(!result.empty?, 'result should not be empty')
assert(result[0], 'record 1')
assert(!result[0], 'record 2')
assert_equal(result[0].id, customer1.id)
# search as customer1
result = User.search(
:current_user => customer1,
:query => 'customer1',
:limit => 15,
)
assert(result.empty?, 'result should be empty')
assert(!result[0], 'record 1')
2015-02-25 23:44:29 +00:00
end
end