nagira 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,12 +3,12 @@ require 'spec_helper'
3
3
  #
4
4
  # Test resonse to /_api GET
5
5
  #
6
- describe Nagira do
6
+ describe Nagira do
7
7
 
8
8
  set :environment, ENV['RACK_ENV'] || :test
9
9
 
10
10
  include Rack::Test::Methods
11
-
11
+
12
12
  def app
13
13
  @app ||= Nagira
14
14
  end
@@ -16,30 +16,30 @@ describe Nagira do
16
16
 
17
17
 
18
18
  context "API data" do
19
- before :all do
19
+ before :all do
20
20
  get "/_api.json"
21
21
  @data = JSON.parse last_response.body
22
22
  end
23
23
 
24
- it "should be array" do
25
- @data.should be_a_kind_of Hash
24
+ it "should be array" do
25
+ expect(@data).to be_a_kind_of Hash
26
26
  end
27
27
 
28
28
  METHODS = %w{ GET PUT POST DELETE}
29
29
 
30
- context "routes" do
31
-
30
+ context "routes" do
31
+
32
32
  METHODS.each do |method|
33
-
34
- context method do
33
+
34
+ context method do
35
35
  it "routes should be an Array" do
36
- @data[method].should be_a_kind_of Array if @data[method]
36
+ expect(@data[method]).to be_a_kind_of Array if @data[method]
37
37
  end
38
-
38
+
39
39
  it "should star with slash" do
40
40
  if @data[method]
41
41
  @data[method].each do |path|
42
- path.should =~ /^\//
42
+ expect(path).to match( /^\//)
43
43
  end
44
44
  end
45
45
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
 
4
- shared_examples_for :comment_data do
4
+ shared_examples_for :comment_data do
5
5
 
6
6
  let(:data) { JSON.parse(last_response.body) }
7
7
 
@@ -14,44 +14,44 @@ shared_examples_for :comment_data do
14
14
  end
15
15
  end
16
16
 
17
- it { should be_a_kind_of Hash }
18
- it { should have_key 'comment_id' }
19
- it { should have_key 'comment_data' }
20
- it { should have_key 'author' }
17
+ it { expect(subject).to be_a_kind_of Hash }
18
+ it { expect(subject).to have_key 'comment_id' }
19
+ it { expect(subject).to have_key 'comment_data' }
20
+ it { expect(subject).to have_key 'author' }
21
21
 
22
22
  end
23
23
 
24
24
 
25
- describe Nagira do
26
-
25
+ describe Nagira do
26
+
27
27
  set :environment, ENV['RACK_ENV'] || :test
28
28
  include Rack::Test::Methods
29
- def app
29
+ def app
30
30
  @app ||= Nagira
31
31
  end
32
-
32
+
33
33
  before :all do
34
34
  get "/_status/_list.json"
35
35
  @host = JSON.parse(last_response.body).first
36
36
  end
37
37
 
38
- context "/_status/:host/_hostcomments" do
38
+ context "/_status/:host/_hostcomments" do
39
39
  before { get "/_status/#{@host}/_hostcomments.json" }
40
- it_should_behave_like :comment_data
40
+ it_should_behave_like :comment_data
41
41
  end
42
42
 
43
43
 
44
- context "/_status/:host/_servicecomments" do
44
+ context "/_status/:host/_servicecomments" do
45
45
  before { get "/_status/#{@host}/_servicecomments.json" }
46
46
 
47
47
  it_should_behave_like :comment_data
48
48
 
49
49
  let (:data) { JSON.parse(last_response.body).values.first.first }
50
- it { data.should have_key 'service_description' }
51
- it { data.should have_key 'host_name' }
50
+ it { expect(data).to have_key 'service_description' }
51
+ it { expect(data).to have_key 'host_name' }
52
52
 
53
53
  end
54
54
 
55
55
 
56
-
56
+
57
57
  end
@@ -4,12 +4,12 @@ require 'spec_helper'
4
4
  # Specs for implemetned API endpoints. Only check response: OK or 404.
5
5
  #
6
6
 
7
- shared_examples_for :fail_on_random_url do |base|
7
+ shared_examples_for :fail_on_random_url do |base|
8
8
  RANDOM.each do |url|
9
9
  ep = "#{base}/#{url}"
10
10
  it "fails on '#{ep}' string" do
11
11
  get ep
12
- last_response.status.should be 404
12
+ expect(last_response.status).to be 404
13
13
  end
14
14
  end
15
15
  end
@@ -22,44 +22,45 @@ shared_examples_for :respond_to_valid_url do |base, urls, custom_regex|
22
22
  ep = "#{base}/#{url}"
23
23
  it "responds to #{ep}" do
24
24
  get ep
25
- last_response.should be_ok
25
+ expect(last_response).to be_ok
26
26
  end
27
27
  end
28
28
  when nil
29
29
  ep = "#{base}"
30
30
  it "responds to #{ep}" do
31
31
  get ep
32
- last_response.should be_ok
32
+ expect(last_response).to be_ok
33
33
  end
34
34
  end
35
35
  end
36
36
 
37
37
  shared_examples_for :fail_on_bad_url do |url|
38
38
  before { get url }
39
- it "fails on #{url}" do
40
- last_response.status.should be 404
39
+ it "fails on #{url}" do
40
+ expect(last_response.status).to eq 404
41
41
  end
42
42
  end
43
43
 
44
- describe Nagira do
45
-
44
+ describe Nagira do
45
+
46
46
  set :environment, :test # This should run only in test mode as it uses hardcoded host names
47
47
  include Rack::Test::Methods
48
- def app
48
+ def app
49
49
  @app ||= Nagira
50
50
  end
51
-
51
+
52
52
  context "API endpoints" do
53
-
54
- host = IMPLEMENTED[:hosts].first
53
+
54
+ host = IMPLEMENTED[:hosts].first
55
+ hostgroup = 'all'
55
56
  spaces = "host%20with%20space"
56
57
 
57
58
 
58
- context :top do
59
+ context :top do
59
60
  it_should_behave_like :respond_to_valid_url, '', IMPLEMENTED[:top]
60
61
  it_should_behave_like :fail_on_random_url, ''
61
62
  end
62
-
63
+
63
64
 
64
65
  context "/_status" do
65
66
  it_should_behave_like :respond_to_valid_url, "/_status", IMPLEMENTED[:hosts]
@@ -81,7 +82,7 @@ describe Nagira do
81
82
  end
82
83
  end # /_status/:host
83
84
 
84
- context "/_status/:host/_services" do
85
+ context "/_status/:host/_services" do
85
86
  it_should_behave_like :respond_to_valid_url, "/_status/#{host}/_services"
86
87
  it_should_behave_like :respond_to_valid_url, "/_status/#{host}/_services", ["SSH", "PING"]
87
88
 
@@ -92,12 +93,26 @@ describe Nagira do
92
93
 
93
94
 
94
95
  context "custom hostname regex - host with spaces" do
95
-
96
- it { pending "Need to figure out how to change hostname regex on the fly" }
96
+
97
+ it { pending "Need to figure out how to change hostname regex on the fly"; fail }
97
98
  #it_should_behave_like :respond_to_valid_url, "/_status/#{spaces}", nil, '\w[(%20)\w\-\.]+'
98
99
  #it_should_behave_like :respond_to_valid_url, "/_status/#{spaces}/_services"
99
100
  end # custom hostname regex
100
-
101
+
102
+ context "Hostgroups" do
103
+
104
+ context "/_status/_hostgroups/:hostgroup" do
105
+ it_should_behave_like :respond_to_valid_url, "/_status/_hostgroup/#{hostgroup}"
106
+ end
107
+
108
+ context "/_status/_hostgroups/:hostgroup/_service" do
109
+ it_should_behave_like :respond_to_valid_url, "/_status/_hostgroup/#{hostgroup}/_service"
110
+ end
111
+ context "/_status/_hostgroups/:hostgroup/_host" do
112
+ it_should_behave_like :respond_to_valid_url, "/_status/_hostgroup/#{hostgroup}/_host"
113
+ end
114
+ end # Hostgroup
115
+
101
116
  end # API endpoints
102
-
117
+
103
118
  end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+ describe Nagira do
3
+
4
+ set :environment, ENV['RACK_ENV'] || :test
5
+ include Rack::Test::Methods
6
+ def app
7
+ @app ||= Nagira
8
+ end
9
+
10
+ before :all do
11
+ get "/_objects/hostgroup/_list.json"
12
+ @hostgroup = JSON.parse(last_response.body).first
13
+
14
+ get "/_objects/host/_list.json"
15
+ @hosts = JSON.parse(last_response.body).sort
16
+
17
+ end
18
+
19
+ context "/_status/_hostgroup/@hostgroup " do
20
+
21
+ before do
22
+ get "/_status/_hostgroup/#{ @hostgroup }"
23
+ @data = JSON.parse(last_response.body)
24
+ end
25
+
26
+ it "returns hostgroup Hash" do
27
+ expect(@data).to be_a_kind_of Hash
28
+ end
29
+
30
+ it "hostgroup Hash should contain all hosts" do
31
+ expect(@data.keys.sort).to eq @hosts
32
+ end
33
+
34
+ it "host data should have both host and service status" do
35
+ expect(@data['viy'].keys).to eq ['hoststatus', 'servicestatus']
36
+ end
37
+
38
+ end
39
+
40
+
41
+ context "/_status/_hostgroup/@hostgroup/_host" do
42
+
43
+ before do
44
+ get "/_status/_hostgroup/#{ @hostgroup }/_host"
45
+ @data = JSON.parse(last_response.body)
46
+ end
47
+
48
+ it "returns Hash" do
49
+ expect(@data).to be_a_kind_of Hash
50
+ end
51
+
52
+ it "host data should have host status attributes" do
53
+ expect(@data['viy'].keys).to include 'host_name', 'check_command' ,'check_interval'
54
+ end
55
+
56
+ end
57
+
58
+ context "/_status/_hostgroup/@hostgroup/_service" do
59
+
60
+ before do
61
+ get "/_status/_hostgroup/#{ @hostgroup }/_service"
62
+ @data = JSON.parse(last_response.body)
63
+ end
64
+
65
+ it "returns Hash" do
66
+ expect(@data).to be_a_kind_of Hash
67
+ end
68
+
69
+ it "service data should contain service names" do
70
+ expect(@data['viy'].keys).to include 'SSH', 'PING'
71
+ end
72
+
73
+ it "service data should contain service attributes" do
74
+ expect(@data['viy']['SSH']).to include 'host_name', 'service_description'
75
+ end
76
+
77
+ end
78
+
79
+ end
@@ -1,29 +1,29 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Nagira do
4
-
3
+ describe Nagira do
4
+
5
5
  set :environment, ENV['RACK_ENV'] || :test
6
6
  include Rack::Test::Methods
7
- def app
7
+ def app
8
8
  @app ||= Nagira
9
9
  end
10
-
11
- context "/_hosts" do
12
10
 
13
- before :each do
11
+ context "/_hosts" do
12
+
13
+ before :each do
14
14
  get "/_status/_list"
15
15
  @data = JSON.parse(last_response.body)
16
16
  end
17
17
 
18
18
  it "return hosts list " do
19
- @data.should be_a_kind_of Array
19
+ expect(@data).to be_a_kind_of Array
20
20
  end
21
21
 
22
- it "hostname is a string" do
23
- @data.first.should be_a_kind_of String
22
+ it "hostname is a string" do
23
+ expect(@data.first).to be_a_kind_of String
24
24
  end
25
25
 
26
26
  end
27
27
 
28
-
28
+
29
29
  end
@@ -4,30 +4,30 @@ require 'spec_helper'
4
4
  #
5
5
  # Endpoint checks (i.e. check HTTP success) are in endpoints_spec.rb
6
6
 
7
- describe Nagira do
8
-
7
+ describe Nagira do
8
+
9
9
  set :environment, ENV['RACK_ENV'] || :test
10
10
  include Rack::Test::Methods
11
- def app
11
+ def app
12
12
  @app ||= Nagira
13
13
  end
14
-
14
+
15
15
  before :all do
16
16
  get "/_status/_list.json"
17
17
  @host = JSON.parse(last_response.body).first
18
18
  end
19
19
 
20
- context "/_hosts/:host/_services" do
20
+ context "/_hosts/:host/_services" do
21
21
 
22
- before :each do
22
+ before :each do
23
23
  get "/_status/#{@host}/_services"
24
24
  @data = JSON.parse(last_response.body)
25
25
  end
26
26
 
27
27
  it "return services list " do
28
- @data.should be_a_kind_of Hash
28
+ expect(@data).to be_a_kind_of Hash
29
29
  end
30
30
  end
31
31
 
32
-
32
+
33
33
  end
@@ -2,25 +2,25 @@ require 'spec_helper'
2
2
  require_relative 'support'
3
3
  require 'pp'
4
4
 
5
- describe Nagira do
6
-
5
+ describe Nagira do
6
+
7
7
  set :environment, :test # This is potentially desctructive test, run only in test mode
8
8
  include Rack::Test::Methods
9
- def app
9
+ def app
10
10
  @app ||= Nagira
11
11
  end
12
12
 
13
- before :all do
13
+ before :all do
14
14
  get "/_status/_list.json"
15
15
  @host = JSON.parse(last_response.body).first
16
16
  end
17
17
 
18
18
  let (:content_type) { {'Content-Type' => 'application/json'} }
19
19
  let (:host) { @host }
20
- let (:input) {
20
+ let (:input) {
21
21
  {
22
- "status_code" => 0,
23
- "plugin_output" => "Plugin said: Bla"
22
+ "status_code" => 0,
23
+ "plugin_output" => "Plugin said: Bla"
24
24
  }
25
25
  }
26
26
 
@@ -29,13 +29,13 @@ describe Nagira do
29
29
  #
30
30
 
31
31
  context "/_status" do
32
- it { pending "Not implemented" }
32
+ it { pending "Not implemented"; fail }
33
33
  end # ----------- "/_status" do
34
34
 
35
35
  context "/_status/:host_name" do
36
36
  let (:url) { "/_status/#{host}"}
37
37
 
38
- before (:each) do
38
+ before (:each) do
39
39
  put url, input.to_json, content_type
40
40
  end
41
41
 
@@ -45,13 +45,13 @@ describe Nagira do
45
45
  input.keys.each do |key|
46
46
  (inp = input.dup).delete key
47
47
  put url, inp.to_json, content_type
48
- last_response.status.should eq 400
48
+ expect(last_response.status).to eq 400
49
49
  end
50
50
  end
51
51
 
52
52
  context "/_host_status/:host_name" do
53
- it { pending "Not implemented" }
54
- end # ----------- "/_host_status/:host_name"
53
+ it { pending "Not implemented" ; fail }
54
+ end # ----------- "/_host_status/:host_name"
55
55
 
56
56
 
57
57
  end # ----------- /_status/:host