rubix 0.4.3 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/VERSION +1 -1
  2. data/bin/zabbix_api +45 -27
  3. data/lib/rubix.rb +17 -0
  4. data/lib/rubix/associations.rb +7 -1
  5. data/lib/rubix/associations/belongs_to_action.rb +31 -0
  6. data/lib/rubix/associations/belongs_to_media_type.rb +33 -0
  7. data/lib/rubix/associations/belongs_to_user.rb +33 -0
  8. data/lib/rubix/associations/belongs_to_user_group.rb +32 -0
  9. data/lib/rubix/associations/has_many_conditions.rb +23 -0
  10. data/lib/rubix/associations/has_many_user_groups.rb +32 -0
  11. data/lib/rubix/associations/has_many_users.rb +32 -0
  12. data/lib/rubix/models.rb +17 -10
  13. data/lib/rubix/models/action.rb +117 -0
  14. data/lib/rubix/models/application.rb +1 -3
  15. data/lib/rubix/models/condition.rb +99 -0
  16. data/lib/rubix/models/host.rb +9 -11
  17. data/lib/rubix/models/host_group.rb +1 -4
  18. data/lib/rubix/models/item.rb +12 -27
  19. data/lib/rubix/models/media_type.rb +19 -21
  20. data/lib/rubix/models/medium.rb +86 -0
  21. data/lib/rubix/models/model.rb +53 -1
  22. data/lib/rubix/models/operation.rb +134 -0
  23. data/lib/rubix/models/script.rb +49 -0
  24. data/lib/rubix/models/template.rb +2 -2
  25. data/lib/rubix/models/trigger.rb +8 -9
  26. data/lib/rubix/models/user.rb +145 -0
  27. data/lib/rubix/models/user_group.rb +94 -0
  28. data/lib/rubix/models/user_macro.rb +10 -20
  29. data/spec/requests/action_request_spec.rb +45 -0
  30. data/spec/requests/connection_request_spec.rb +3 -3
  31. data/spec/requests/media_type_request_spec.rb +8 -8
  32. data/spec/requests/script_request_spec.rb +54 -0
  33. data/spec/requests/user_group_request_spec.rb +97 -0
  34. data/spec/requests/user_request_spec.rb +84 -0
  35. data/spec/support/integration_helper.rb +105 -33
  36. data/spec/test.yml +0 -2
  37. metadata +22 -4
@@ -5,25 +5,24 @@ module Rubix
5
5
  #
6
6
  # == Properties & Finding ==
7
7
  #
8
+
9
+ attr_reader :name
10
+ def set_name n, validate=true
11
+ return if n.nil? || n.empty?
12
+ raise ValidationError.new("Cannot change the name of a UserMacro once it's created.") if validate && @name && (!new_record?)
13
+ @name = n
14
+ end
8
15
 
9
- attr_accessor :value
16
+ zabbix_attr :value, :required => true
10
17
 
11
18
  def initialize properties={}
12
19
  super(properties)
13
- self.name = properties[:name] || self.class.unmacro_name(properties[:macro])
14
- @value = properties[:value]
15
-
20
+ set_name(properties[:name] || self.class.unmacro_name(properties[:macro]), false)
21
+
16
22
  self.host = properties[:host]
17
23
  self.host_id = properties[:host_id]
18
24
  end
19
25
 
20
- attr_reader :name
21
- def name= n
22
- return if n.nil? || n.empty?
23
- raise ValidationError.new("Cannot change the name of a UserMacro once it's created.") if @name && (!new_record?)
24
- @name = n
25
- end
26
-
27
26
  def self.unmacro_name name
28
27
  (name || '').gsub(/^\{\$/, '').gsub(/\}$/, '').upcase
29
28
  end
@@ -50,15 +49,6 @@ module Rubix
50
49
 
51
50
  include Associations::BelongsToHost
52
51
 
53
- #
54
- # == Validation ==
55
- #
56
-
57
- def validate
58
- raise ValidationError.new("A user macro must have both a 'name' and a 'value'") if name.nil? || name.strip.empty? || value.nil? || value.strip.empty?
59
- true
60
- end
61
-
62
52
  #
63
53
  # == Requests ==
64
54
  #
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Actions" do
4
+
5
+ before do
6
+ integration_test
7
+ @user_group = ensure_save(Rubix::UserGroup.new(:name => 'rubix_spec_user_group_1'))
8
+ @user = ensure_save(Rubix::User.new(:username => 'rubix_spec_user_1', :first_name => 'rubix', :last_name => 'user', :password => 'pass'))
9
+ end
10
+
11
+ after do
12
+ truncate_all_tables
13
+ end
14
+
15
+ describe "when not existing" do
16
+
17
+ it "returns nil on find" do
18
+ Rubix::Action.find(:name => 'rubix_spec_action_1').should be_nil
19
+ end
20
+
21
+ it "can be created" do
22
+ a = Rubix::Action.new(:name => 'rubix_spec_action_1', :operations => [{:user_group => @user_group}])
23
+ a.save.should be_true
24
+
25
+ na = Rubix::Action.find(:name => 'rubix_spec_action_1')
26
+ na.should_not be_nil
27
+ na.name.should == 'rubix_spec_action_1'
28
+ na.operations.size.should == 1
29
+ end
30
+
31
+ end
32
+
33
+ describe "when existing" do
34
+ before do
35
+ @action = ensure_save(Rubix::Action.new(:name => 'rubix_spec_action_1', :operations => [{:user_group => @user_group}]))
36
+ end
37
+
38
+ it "can be destroyed" do
39
+ @action.destroy
40
+ Rubix::Action.find(:name => 'rubix_spec_action_1').should be_nil
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -15,7 +15,7 @@ describe Rubix::Connection do
15
15
  response.should_not be_nil
16
16
  response.code.to_i.should == 200
17
17
  response.body.should_not include('guest')
18
- response.body.should include($RUBIX_INTEGRATION_TEST['username'])
18
+ response.body.should include(Rubix::IntegrationHelper::INTEGRATION_USER)
19
19
  end
20
20
 
21
21
  it "can perform an authorized POST request to the homepage" do
@@ -23,7 +23,7 @@ describe Rubix::Connection do
23
23
  response.should_not be_nil
24
24
  response.code.to_i.should == 200
25
25
  response.body.should_not include('guest')
26
- response.body.should include($RUBIX_INTEGRATION_TEST['username'])
26
+ response.body.should include(Rubix::IntegrationHelper::INTEGRATION_USER)
27
27
  end
28
28
 
29
29
  it "can perform an authorized multipart POST request to the homepage" do
@@ -31,7 +31,7 @@ describe Rubix::Connection do
31
31
  response.should_not be_nil
32
32
  response.code.to_i.should == 200
33
33
  response.body.should_not include('guest')
34
- response.body.should include($RUBIX_INTEGRATION_TEST['username'])
34
+ response.body.should include(Rubix::IntegrationHelper::INTEGRATION_USER)
35
35
  end
36
36
 
37
37
  end
@@ -13,11 +13,11 @@ describe "MediaTypes" do
13
13
  describe "when not existing" do
14
14
 
15
15
  it "returns nil on find" do
16
- Rubix::MediaType.find(:description => 'rubix_spec_media_type_1').should be_nil
16
+ Rubix::MediaType.find(:name => 'rubix_spec_media_type_1').should be_nil
17
17
  end
18
18
 
19
19
  it "can be created" do
20
- mt = Rubix::MediaType.new(:description => 'rubix_spec_media_type_1', :path => 'foo')
20
+ mt = Rubix::MediaType.new(:name => 'rubix_spec_media_type_1', :path => 'foo')
21
21
  mt.save.should be_true
22
22
  end
23
23
 
@@ -26,20 +26,20 @@ describe "MediaTypes" do
26
26
  describe "when existing" do
27
27
 
28
28
  before do
29
- @mt = ensure_save(Rubix::MediaType.new(:description => 'rubix_spec_media_type_1', :path => 'foo'))
29
+ @mt = ensure_save(Rubix::MediaType.new(:name => 'rubix_spec_media_type_1', :path => 'foo'))
30
30
  end
31
31
 
32
32
  it "can be found" do
33
- Rubix::MediaType.find(:description => 'rubix_spec_media_type_1').should_not be_nil
33
+ Rubix::MediaType.find(:name => 'rubix_spec_media_type_1').should_not be_nil
34
34
  end
35
35
 
36
36
  it "can have its properties changed" do
37
- @mt.description = 'rubix_spec_media_type_2'
37
+ @mt.name = 'rubix_spec_media_type_2'
38
38
  @mt.type = :sms
39
39
  @mt.modem = '/foo/bar'
40
40
  @mt.save
41
- Rubix::MediaType.find(:description => 'rubix_spec_media_type_1').should be_nil
42
- new_mt = Rubix::MediaType.find(:description => 'rubix_spec_media_type_2')
41
+ Rubix::MediaType.find(:name => 'rubix_spec_media_type_1').should be_nil
42
+ new_mt = Rubix::MediaType.find(:name => 'rubix_spec_media_type_2')
43
43
  new_mt.should_not be_nil
44
44
  new_mt.type.should == :sms
45
45
  new_mt.modem.should == '/foo/bar'
@@ -47,7 +47,7 @@ describe "MediaTypes" do
47
47
 
48
48
  it "can be destroyed" do
49
49
  @mt.destroy
50
- Rubix::MediaType.find(:description => 'rubix_spec_media_type_1').should be_nil
50
+ Rubix::MediaType.find(:name => 'rubix_spec_media_type_1').should be_nil
51
51
  end
52
52
  end
53
53
 
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Scripts" do
4
+
5
+ before do
6
+ integration_test
7
+ end
8
+
9
+ after do
10
+ truncate_all_tables
11
+ end
12
+
13
+ describe "when not existing" do
14
+
15
+ it "returns nil on find" do
16
+ Rubix::Script.find(:name => 'rubix_spec_script_1').should be_nil
17
+ end
18
+
19
+ it "can be created" do
20
+ s = Rubix::Script.new(:name => 'rubix_spec_script_1', :command => 'foo')
21
+ s.save.should be_true
22
+ end
23
+
24
+ end
25
+
26
+ describe "when existing" do
27
+
28
+ before do
29
+ @s = ensure_save(Rubix::Script.new(:name => 'rubix_spec_script_1', :command => 'foo'))
30
+ end
31
+
32
+ it "can be found" do
33
+ Rubix::Script.find(:name => 'rubix_spec_script_1').should_not be_nil
34
+ end
35
+
36
+ it "can have its properties changed" do
37
+ @s.name = 'rubix_spec_script_2'
38
+ @s.command = 'bar'
39
+ @s.access = :write
40
+ @s.save
41
+ Rubix::Script.find(:name => 'rubix_spec_script_1').should be_nil
42
+ new_s = Rubix::Script.find(:name => 'rubix_spec_script_2')
43
+ new_s.should_not be_nil
44
+ new_s.command.should == 'bar'
45
+ new_s.access.should == :write
46
+ end
47
+
48
+ it "can be destroyed" do
49
+ @s.destroy
50
+ Rubix::Script.find(:name => 'rubix_spec_script_1').should be_nil
51
+ end
52
+ end
53
+
54
+ end
@@ -0,0 +1,97 @@
1
+ require 'spec_helper'
2
+
3
+ describe "UserGroups" do
4
+
5
+ before do
6
+ integration_test
7
+ end
8
+
9
+ after do
10
+ truncate_all_tables
11
+ end
12
+
13
+ describe "when not existing" do
14
+
15
+ it "returns nil on find" do
16
+ Rubix::UserGroup.find(:name => 'rubix_spec_user_group_1').should be_nil
17
+ end
18
+
19
+ it "can be created" do
20
+ ug = Rubix::UserGroup.new(:name => 'rubix_spec_user_group_1')
21
+ ug.save.should be_true
22
+ end
23
+
24
+ end
25
+
26
+ describe "when existing" do
27
+
28
+ before do
29
+ @ug = ensure_save(Rubix::UserGroup.new(:name => 'rubix_spec_user_group_1'))
30
+ end
31
+
32
+ it "can be found" do
33
+ Rubix::UserGroup.find(:name => 'rubix_spec_user_group_1').should_not be_nil
34
+ end
35
+
36
+ it "can have its name and settings changed" do
37
+ @ug.name = 'rubix_spec_user_group_2'
38
+ @ug.banned = true
39
+ @ug.api_access = true
40
+ @ug.debug_mode = true
41
+ @ug.gui_access = :disabled
42
+ @ug.save
43
+ Rubix::UserGroup.find(:name => 'rubix_spec_user_group_1').should be_nil
44
+ nug = Rubix::UserGroup.find(:name => 'rubix_spec_user_group_2')
45
+ nug.should_not be_nil
46
+ nug.name.should == 'rubix_spec_user_group_2'
47
+ nug.banned.should == true
48
+ nug.api_access.should == true
49
+ nug.gui_access.should == :disabled
50
+ nug.debug_mode.should == true
51
+ end
52
+
53
+ it "can be destroyed" do
54
+ @ug.destroy
55
+ Rubix::UserGroup.find(:name => 'rubix_spec_user_group_1').should be_nil
56
+ end
57
+ end
58
+
59
+ describe "linking users to user groups" do
60
+
61
+ before do
62
+ @u1 = ensure_save(Rubix::User.new(:username => 'rubix_spec_user_1', :first_name => 'rubix1', :last_name => 'user1', :password => 'pass1'))
63
+ @u2 = ensure_save(Rubix::User.new(:username => 'rubix_spec_user_2', :first_name => 'rubix2', :last_name => 'user2', :password => 'pass2'))
64
+ @u3 = ensure_save(Rubix::User.new(:username => 'rubix_spec_user_3', :first_name => 'rubix3', :last_name => 'user3', :password => 'pass3'))
65
+ end
66
+
67
+ it "can add users on create" do
68
+ ug = Rubix::UserGroup.new(:name => 'rubix_spec_user_group_1', :users => [@u1, @u2, @u3])
69
+ ug.save
70
+ nug = Rubix::UserGroup.find(:name => 'rubix_spec_user_group_1')
71
+ nug.users.map(&:username).should include(*[@u1, @u2, @u3].map(&:username))
72
+ end
73
+
74
+ describe "with existing users" do
75
+
76
+ before do
77
+ Rubix::UserGroup.new(:name => 'rubix_spec_user_group_1', :users => [@u1, @u2]).save
78
+ @ug = Rubix::UserGroup.find(:name => 'rubix_spec_user_group_1')
79
+ end
80
+
81
+ it "can will not mess with existing users if it doesn't need to" do
82
+ @ug.name = 'rubix_spec_user_group_2'
83
+ @ug.save
84
+ nug = Rubix::UserGroup.find(:name => 'rubix_spec_user_group_2')
85
+ nug.users.map(&:username).should include(*[@u1, @u2].map(&:username))
86
+ end
87
+
88
+ it "will replace users" do
89
+ @ug.users = [@u2, @u3]
90
+ @ug.save
91
+ nug = Rubix::UserGroup.find(:name => 'rubix_spec_user_group_1')
92
+ nug.users.map(&:username).should include(*[@u2, @u3].map(&:username))
93
+ end
94
+
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,84 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Users" do
4
+
5
+ before do
6
+ integration_test
7
+ end
8
+
9
+ after do
10
+ truncate_all_tables
11
+ end
12
+
13
+ describe "when not existing" do
14
+
15
+ it "returns nil on find" do
16
+ Rubix::User.find(:username => 'rubix_spec_user_1', :first_name => 'rubix1', :last_name => 'user1').should be_nil
17
+ end
18
+
19
+ it "can be created" do
20
+ hg = Rubix::User.new(:username => 'rubix_spec_user_1', :first_name => 'rubix1', :last_name => 'user1', :password => 'pass1')
21
+ hg.save.should be_true
22
+ end
23
+
24
+ end
25
+
26
+ describe "when existing" do
27
+
28
+ before do
29
+ @u = ensure_save(Rubix::User.new(:username => 'rubix_spec_user_1', :first_name => 'rubix1', :last_name => 'user1', :password => 'pass1'))
30
+ end
31
+
32
+ it "can be found" do
33
+ Rubix::User.find(:username => 'rubix_spec_user_1').should_not be_nil
34
+ end
35
+
36
+ it "can have its name and settings changed" do
37
+ @u.username = 'rubix_spec_user_2'
38
+ @u.first_name = 'rubix2'
39
+ @u.last_name = 'user2'
40
+ @u.url = 'http://foobar.com'
41
+ @u.auto_login = true
42
+ @u.type = :super_admin
43
+ @u.lang = 'fo_ba'
44
+ @u.theme = 'foo.css'
45
+ @u.refresh_period = 10
46
+ @u.rows_per_page = 10
47
+ @u.password = 'pass2'
48
+ @u.save
49
+ Rubix::User.find(:username => 'rubix_spec_user_1').should be_nil
50
+ nu = Rubix::User.find(:username => 'rubix_spec_user_2')
51
+ nu.should_not be_nil
52
+ nu.username.should == 'rubix_spec_user_2'
53
+ nu.first_name.should == 'rubix2'
54
+ nu.last_name.should == 'user2'
55
+ nu.url.should == 'http://foobar.com'
56
+ nu.auto_login.should == true
57
+ nu.type.should == :super_admin
58
+ nu.lang.should == 'fo_ba'
59
+ nu.theme.should == 'foo.css'
60
+ nu.refresh_period.should == 10
61
+ nu.rows_per_page.should == 10
62
+ end
63
+
64
+ it "can be destroyed" do
65
+ @u.destroy
66
+ Rubix::User.find(:username => 'rubix_spec_user_1').should be_nil
67
+ end
68
+ end
69
+
70
+ describe "handling media" do
71
+
72
+ before do
73
+ @media_type = ensure_save(Rubix::MediaType.new(:name => 'rubix_spec_media_type_1'))
74
+ @media_params = [{:media_type_id => @media_type.id, :address => "XXX"}]
75
+ end
76
+
77
+ it "can add media to a user when creating" do
78
+ Rubix::User.new(:username => 'rubix_spec_user_1', :first_name => 'rubix1', :last_name => 'user1', :password => 'pass1', :media => @media_params).save.should be_true
79
+ # FIXME no facility to fetch media!!
80
+ end
81
+
82
+
83
+ end
84
+ end
@@ -1,9 +1,108 @@
1
+ require 'digest/md5'
2
+
1
3
  module Rubix
2
4
  module IntegrationHelper
3
5
 
6
+ INTEGRATION_USER = 'rubix_spec_user'
7
+ INTEGRATION_GROUP = 'rubix_spec_group'
8
+ INTEGRATION_PASSWORD = 'rubix'
9
+
10
+ # Parse the information we need to find the database and Zabbix
11
+ # server we're going to need for any integration tests. Also set
12
+ # a global variable for easy use of this information when testing.
13
+ def self.setup_integration_tests test_yml_path
14
+ unless parse_integration_settings(test_yml_path)
15
+ puts "Could not parse integration settings in #{test_yml_path}. Integration tests will be skipped."
16
+ return
17
+ end
18
+ unless connect_to_database
19
+ puts "Could not connect to a MySQL database using: #{$RUBIX_MYSQL_CREDENTIALS.inspect}. Integration tests will be skipped."
20
+ return
21
+ end
22
+ unless truncate_all_tables
23
+ puts "Could not truncate tables. Integration tests will be skipped."
24
+ return
25
+ end
26
+ unless create_integration_test_user_and_group
27
+ puts "Could not create integration test user #{INTEGRATION_USER} or group #{INTEGRATION_GROUP}. Integration tests will be skipped."
28
+ return
29
+ end
30
+ unless connect_to_api
31
+ puts "Could not connect to Zabbix API using: #{$RUBIX_API_CREDENTIALS.inspect}. Integration tests will be skipped."
32
+ return
33
+ end
34
+ $RUBIX_INTEGRATION = true
35
+ end
36
+
37
+ def self.parse_integration_settings test_yml_path
38
+ return unless File.exist?(test_yml_path)
39
+
40
+ require 'yaml'
41
+ test_data = YAML.load(open(test_yml_path))
42
+ return if test_data['disable_integration_tests']
43
+
44
+ $RUBIX_API_CREDENTIALS = test_data['api']
45
+ $RUBIX_MYSQL_CREDENTIALS = test_data['mysql']
46
+ end
47
+
48
+ def self.connect_to_database
49
+ begin
50
+ require 'mysql2'
51
+ $RUBIX_MYSQL = Mysql2::Client.new(:host => $RUBIX_MYSQL_CREDENTIALS['host'], :username => $RUBIX_MYSQL_CREDENTIALS['username'], :password => $RUBIX_MYSQL_CREDENTIALS['password'], :database => $RUBIX_MYSQL_CREDENTIALS['database'])
52
+ rescue => e
53
+ puts "Could not connect to MySQL database: #{e.class} -- #{e.message}"
54
+ puts e.backtrace
55
+ false
56
+ end
57
+ end
58
+
59
+ # These are the tables we'll truncate in the database.
60
+ RUBIX_TABLES_TO_TRUNCATE = %w[actions conditions operations opconditions opmediatypes applications groups hostmacro hosts hosts_groups hosts_profiles hosts_profiles_ext hosts_templates items items_applications profiles triggers trigger_depends history sessions media_type scripts users usrgrp users_groups]
61
+
62
+ def self.truncate_all_tables
63
+ return unless $RUBIX_MYSQL
64
+ begin
65
+ RUBIX_TABLES_TO_TRUNCATE.each { |table| $RUBIX_MYSQL.query("TRUNCATE TABLE #{table}") }
66
+ true
67
+ rescue => e
68
+ puts "Could not truncate tables in MySQL: #{e.class} -- #{e.message}"
69
+ puts e.backtrace
70
+ false
71
+ end
72
+ end
73
+
74
+ def self.create_integration_test_user_and_group
75
+ return unless $RUBIX_MYSQL
76
+ begin
77
+ $RUBIX_MYSQL.query(%Q{INSERT INTO users (`alias`, `name`, surname, passwd, type) VALUES ("#{INTEGRATION_USER}", "Rubix", "Spec User", "#{Digest::MD5.hexdigest('rubix')}", 3)})
78
+ $RUBIX_MYSQL.query(%Q{INSERT INTO usrgrp (`name`, api_access) VALUES ("#{INTEGRATION_GROUP}", 1)})
79
+ $RUBIX_MYSQL.query(%Q{INSERT INTO users_groups (usrgrpid, userid) SELECT users.userid, usrgrp.usrgrpid FROM users, usrgrp WHERE users.alias = '#{INTEGRATION_USER}' AND usrgrp.name = '#{INTEGRATION_GROUP}'})
80
+ true
81
+ rescue => e
82
+ puts "Could not create integraiton user or group: #{e.class} -- #{e.message}"
83
+ puts e.backtrace
84
+ false
85
+ end
86
+ end
87
+
88
+ def self.connect_to_api
89
+ return unless $RUBIX_API_CREDENTIALS
90
+ begin
91
+ $RUBIX_API = Rubix::Connection.new($RUBIX_API_CREDENTIALS['url'], INTEGRATION_USER, INTEGRATION_PASSWORD)
92
+ $RUBIX_API.authorize!
93
+ Rubix.connection = $RUBIX_API
94
+ rescue => e
95
+ puts "Could not connect to Zabbix API: #{e.class} -- #{e.message}"
96
+ puts e.backtrace
97
+ false
98
+ end
99
+ end
100
+
4
101
  def integration_test
5
- if $RUBIX_INTEGRATION_TEST
6
- Rubix.connect($RUBIX_INTEGRATION_TEST['url'], $RUBIX_INTEGRATION_TEST['username'], $RUBIX_INTEGRATION_TEST['password'])
102
+ if $RUBIX_INTEGRATION
103
+ raise Rubix::Error.new("Could not truncate tables in MySQL.") unless IntegrationHelper.truncate_all_tables
104
+ raise Rubix::Error.new("Could not create integration user or group.") unless IntegrationHelper.create_integration_test_user_and_group
105
+ raise Rubix::Error.new("Could not connect to Zabbixi API.") unless IntegrationHelper.connect_to_api
7
106
  else
8
107
  pending("A live Zabbix API to test against")
9
108
  end
@@ -11,7 +110,7 @@ module Rubix
11
110
 
12
111
  def ensure_save(obj)
13
112
  begin
14
- raise Rubix::Error.new(Rubix.connection.last_response.error_message) unless obj.save
113
+ raise Rubix::Error.new(Rubix.connection.last_response.body) unless obj.save
15
114
  obj
16
115
  rescue => e
17
116
  puts "#{e.class} -- #{e.message}"
@@ -27,7 +126,7 @@ module Rubix
27
126
  else
28
127
  errors = []
29
128
  objs.each do |obj|
30
- errors << Rubix.connection.last_response.error_message unless obj.destroy
129
+ errors << Rubix.connection.last_response.body unless obj.destroy
31
130
  end
32
131
  raise Rubix::Error.new(errors.join("\n")) if errors.size > 0
33
132
  end
@@ -48,41 +147,14 @@ module Rubix
48
147
  end
49
148
 
50
149
  def create_history item
150
+ raise Rubix::Error.new("Not connected to MySQL") unless $RUBIX_MYSQL
51
151
  (1..10).to_a.collect do |i|
52
152
  history = { "itemid" => item.id.to_s, "clock" => (Time.now.to_i - 5*i).to_s, "value" => rand(100).to_s }
53
- $RUBIX_MYSQL_CLIENT.query("INSERT INTO history_uint (#{history.keys.join(', ')}) VALUES (#{history.values.join(', ')})")
153
+ $RUBIX_MYSQL.query("INSERT INTO history_uint (#{history.keys.join(', ')}) VALUES (#{history.values.join(', ')})")
54
154
  history
55
155
  end
56
156
  end
57
157
 
58
- def self.setup_integration_tests test_yml_path
59
- return unless File.exist?(test_yml_path)
60
-
61
- require 'yaml'
62
- test_data = YAML.load(open(test_yml_path))
63
- return if test_data['disable_integration_tests']
64
-
65
- api_connection = test_data['api']
66
- mysql_connection = test_data['mysql']
67
- return unless api_connection && mysql_connection
68
-
69
- Rubix.connect(api_connection['url'], api_connection['username'], api_connection['password'])
70
-
71
- require 'mysql2'
72
- $RUBIX_MYSQL_CLIENT = Mysql2::Client.new(:host => mysql_connection['host'], :username => mysql_connection['username'], :password => mysql_connection['password'], :database => mysql_connection['database'])
73
-
74
- truncate_all_tables
75
-
76
- $RUBIX_INTEGRATION_TEST = api_connection
77
- end
78
-
79
- RUBIX_TABLES_TO_TRUNCATE = %w[applications groups hostmacro hosts hosts_groups hosts_profiles hosts_profiles_ext hosts_templates items items_applications profiles triggers trigger_depends history sessions media_type]
80
-
81
- def self.truncate_all_tables
82
- return unless $RUBIX_INTEGRATION_TEST
83
- RUBIX_TABLES_TO_TRUNCATE.each { |table| $RUBIX_MYSQL_CLIENT.query("TRUNCATE TABLE #{table}") }
84
- end
85
-
86
158
  def truncate_all_tables
87
159
  IntegrationHelper.truncate_all_tables
88
160
  end