uptrends_extended 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,191 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe UptrendsExtended::Client do
4
+ let(:username) { ENV['UPTRENDS_USERNAME'] }
5
+ let(:password) { ENV['UPTRENDS_PASSWORD'] }
6
+
7
+ describe 'Setting up testing' do
8
+ it 'should have a username defined in an env varible: UPTRENDS_USERNAME' do
9
+ username.wont_be_nil
10
+ end
11
+
12
+ it 'should have a password defined in an env varible: UPTRENDS_PASSWORD' do
13
+ password.wont_be_nil
14
+ end
15
+ end
16
+
17
+ it 'must be an instance of UptrendsExtended::Client' do
18
+ UptrendsExtended::Client.new(username: username, password: password).must_be_instance_of UptrendsExtended::Client
19
+ end
20
+
21
+ describe 'Initializing with a username and password is required' do
22
+ it 'should raise RuntimeError when username is not provided.' do
23
+ proc { UptrendsExtended::Client.new(password: password) }.must_raise RuntimeError
24
+ end
25
+
26
+ it 'should raise RuntimeError when password is not provided.' do
27
+ proc { UptrendsExtended::Client.new(username: username) }.must_raise RuntimeError
28
+ end
29
+ end
30
+
31
+ describe 'default attributes' do
32
+ it 'must include httparty methods' do
33
+ UptrendsExtended::Client.must_include HTTParty
34
+ end
35
+
36
+ it 'must have the base url set to the UptrendsExtended API endpoint' do
37
+ UptrendsExtended::Client.base_uri.must_equal 'https://api.uptrends.com/v3'
38
+ end
39
+
40
+ it 'must have the format set to json' do
41
+ UptrendsExtended::Client.format.must_equal :json
42
+ end
43
+ end
44
+
45
+ describe 'When initializing a new UptrendsExtended::Client with a username and password' do
46
+ let(:uc) { UptrendsExtended::Client.new(username: username, password: password) }
47
+
48
+ it 'auth[:username] should match the username provided' do
49
+ uc.class.default_options[:basic_auth][:username].must_equal username
50
+ end
51
+
52
+ it 'auth[:password] should match the password provided' do
53
+ uc.class.default_options[:basic_auth][:password].must_equal password
54
+ end
55
+
56
+ it 'default_params[:format] should be set to json' do
57
+ uc.class.default_params[:format].must_equal 'json'
58
+ end
59
+
60
+ it 'headers should be set to application/json' do
61
+ uc.class.headers.must_equal({'Content-Type' => 'application/json', 'Accept' => 'application/json'})
62
+ end
63
+ end
64
+
65
+ describe 'After UptrendsExtended::Client is initialized' do
66
+ let(:uc) { UptrendsExtended::Client.new(username: username, password: password) }
67
+
68
+ it 'should have a #username method' do
69
+ uc.must_respond_to :username
70
+ end
71
+
72
+ it 'should have a #probe method' do
73
+ uc.must_respond_to :probe
74
+ end
75
+
76
+ it 'should have a #probe_group method' do
77
+ uc.must_respond_to :probe_group
78
+ end
79
+
80
+ it 'should have a #probes method' do
81
+ uc.must_respond_to :probes
82
+ end
83
+
84
+ it 'should have a #checkpoints method' do
85
+ uc.must_respond_to :checkpoints
86
+ end
87
+
88
+ it 'should have a #probe_groups method' do
89
+ uc.must_respond_to :probe_groups
90
+ end
91
+
92
+ it 'should have a #add_probe method' do
93
+ uc.must_respond_to :add_probe
94
+ end
95
+
96
+ it 'should have a #add_probe_group method' do
97
+ uc.must_respond_to :add_probe_group
98
+ end
99
+ end
100
+
101
+ describe 'Querying UptrendsExtended' do
102
+ let(:uc) { UptrendsExtended::Client.new(username: username, password: password) }
103
+
104
+ describe '#probe' do
105
+ before do
106
+ VCR.insert_cassette('GET Probe', :record => :new_episodes, match_requests_on: [:method, :body, :headers, :query, :path])
107
+ #Did you mean one of :method, :uri, :body, :headers, :host, :path, :query, :body_as_json?
108
+ end
109
+
110
+ after do
111
+ VCR.eject_cassette
112
+ end
113
+
114
+ it 'should return a single UptrendsExtended::Probe object' do
115
+ probe = uc.probe('bbfc88d4-8f71-1234-ae02-00c7f479cc90')
116
+ probe.class.must_equal UptrendsExtended::Probe
117
+ end
118
+ end
119
+
120
+ describe '#probes' do
121
+ before do
122
+ VCR.insert_cassette('GET Probes', :record => :new_episodes, match_requests_on: [:method, :body, :headers, :query, :path])
123
+ #Did you mean one of :method, :uri, :body, :headers, :host, :path, :query, :body_as_json?
124
+ end
125
+
126
+ after do
127
+ VCR.eject_cassette
128
+ end
129
+
130
+ it 'should return an array of UptrendsExtended::Probe objects' do
131
+ probes = uc.probes
132
+ probes.each do |probe|
133
+ probe.class.must_equal UptrendsExtended::Probe
134
+ end
135
+ end
136
+ end
137
+
138
+ describe '#probe_group' do
139
+ before do
140
+ VCR.insert_cassette('GET Probe Group', :record => :new_episodes, match_requests_on: [:method, :body, :headers, :query, :path])
141
+ #Did you mean one of :method, :uri, :body, :headers, :host, :path, :query, :body_as_json?
142
+ end
143
+
144
+ after do
145
+ VCR.eject_cassette
146
+ end
147
+
148
+ it 'should return a single UptrendsExtended::ProbeGroup object' do
149
+ probe = uc.probe_group('819ddc84-a4f2-1234-a046-4e40559fde07')
150
+ probe.class.must_equal UptrendsExtended::ProbeGroup
151
+ end
152
+ end
153
+
154
+ describe '#probe_groups' do
155
+ before do
156
+ VCR.insert_cassette('GET Probe Groups', :record => :new_episodes, match_requests_on: [:method, :body, :headers, :query, :path])
157
+ #Did you mean one of :method, :uri, :body, :headers, :host, :path, :query, :body_as_json?
158
+ end
159
+
160
+ after do
161
+ VCR.eject_cassette
162
+ end
163
+
164
+ it 'should return an array of UptrendsExtended::ProbeGroup objects' do
165
+ probe_groups = uc.probe_groups
166
+ probe_groups.each do |probe_group|
167
+ probe_group.class.must_equal UptrendsExtended::ProbeGroup
168
+ end
169
+ end
170
+ end
171
+
172
+ describe '#checkpoints' do
173
+ before do
174
+ VCR.insert_cassette('GET Checkpoints', :record => :new_episodes, match_requests_on: [:method, :body, :headers, :query, :path])
175
+ #Did you mean one of :method, :uri, :body, :headers, :host, :path, :query, :body_as_json?
176
+ end
177
+
178
+ after do
179
+ VCR.eject_cassette
180
+ end
181
+
182
+ it 'should return an array of UptrendsExtended::Checkpoint objects' do
183
+ checkpoints = uc.checkpoints
184
+ checkpoints.each do |checkpoint|
185
+ checkpoint.class.must_equal UptrendsExtended::Checkpoint
186
+ end
187
+ end
188
+ end
189
+
190
+ end
191
+ end
@@ -0,0 +1,43 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe UptrendsExtended::ProbeGroup do
4
+ let(:username) { ENV['UPTRENDS_USERNAME'] }
5
+ let(:password) { ENV['UPTRENDS_PASSWORD'] }
6
+ let(:uc) { UptrendsExtended::Client.new(username: username, password: password) }
7
+ let(:up) { UptrendsExtended::ProbeGroup.new(uc, nil, {'Guid' => 'myguid', 'Name' => 'myvalue', 'other' => 'thing'}) }
8
+
9
+ it '#guid' do
10
+ up.must_respond_to :guid
11
+ up.guid.must_equal 'myguid'
12
+ end
13
+
14
+ it '#guid= must NOT exist' do
15
+ up.wont_respond_to :guid=
16
+ end
17
+
18
+ it '#name' do
19
+ up.must_respond_to :name
20
+ up.name.must_equal 'myvalue'
21
+ end
22
+
23
+ it '#name=' do
24
+ up.must_respond_to :name=
25
+ up.name = 'updates to hello_you='
26
+ up.name.must_equal 'updates to hello_you='
27
+ end
28
+
29
+ it '#other' do
30
+ up.must_respond_to :other
31
+ up.other.must_equal 'thing'
32
+ end
33
+
34
+ it '#other=' do
35
+ up.must_respond_to :other=
36
+ up.other = 'updates to other'
37
+ up.other.must_equal 'updates to other'
38
+ end
39
+
40
+ it '#to_s' do
41
+ up.to_s.must_equal "guid: myguid\nname: myvalue\nother: thing"
42
+ end
43
+ end
@@ -0,0 +1,47 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe UptrendsExtended::Probe do
4
+ let(:username) { ENV['UPTRENDS_USERNAME'] }
5
+ let(:password) { ENV['UPTRENDS_PASSWORD'] }
6
+ let(:uc) { UptrendsExtended::Client.new(username: username, password: password) }
7
+ let(:up) { UptrendsExtended::Probe.new(uc, nil, {'Guid' => 'myguid', 'HelloYou' => 'myvalue', 'other' => 'thing'}) }
8
+
9
+ it '#guid' do
10
+ up.must_respond_to :guid
11
+ up.guid.must_equal 'myguid'
12
+ end
13
+
14
+ it '#guid= must NOT exist' do
15
+ up.wont_respond_to :guid=
16
+ end
17
+
18
+ it '#hello_you' do
19
+ up.must_respond_to :hello_you
20
+ up.hello_you.must_equal 'myvalue'
21
+ end
22
+
23
+ it '#hello_you=' do
24
+ up.must_respond_to :hello_you=
25
+ up.hello_you = 'updates to hello_you='
26
+ up.hello_you.must_equal 'updates to hello_you='
27
+ end
28
+
29
+ it '#other' do
30
+ up.must_respond_to :other
31
+ up.other.must_equal 'thing'
32
+ end
33
+
34
+ it '#other=' do
35
+ up.must_respond_to :other=
36
+ up.other = 'updates to other'
37
+ up.other.must_equal 'updates to other'
38
+ end
39
+
40
+ it '#to_s' do
41
+ up.to_s.must_equal "guid: myguid\nhello_you: myvalue\nother: thing"
42
+ end
43
+
44
+ it '#api_url (private)' do
45
+ up.send(:api_url).must_equal '/probes'
46
+ end
47
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'uptrends_extended/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'uptrends_extended'
8
+ spec.version = UptrendsExtended::VERSION
9
+ spec.authors = ['Jason Barnett', 'René Schultz Madsen']
10
+ spec.email = %w(J@sonBarnett.com rm@microting.com)
11
+ spec.summary = %q{Ruby wrapper around the Uptrends API, http://www.uptrends.com/}
12
+ spec.description = %Q{This is a ruby wrapper around the Uptrends API. Uptrends is a monitoring service that let's you monitor Web pages, Web services, Mail servers, Database servers, DNS, SSL certificates, FTP and more.\n\nNOTE: This is a 3rd party gem and not an official product from Uptrends.}
13
+ spec.homepage = 'https://github.com/microting/uptrends-gem'
14
+ spec.license = 'MIT'
15
+
16
+ spec.required_ruby_version = '>= 1.9.3'
17
+
18
+ spec.files = `git ls-files -z`.split("\x0")
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
+ spec.require_paths = ['lib']
22
+
23
+ spec.add_dependency 'httparty', '~> 0.13'
24
+ spec.add_dependency 'activesupport', '~> 3.2'
25
+ end
metadata ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: uptrends_extended
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.0
5
+ platform: ruby
6
+ authors:
7
+ - Jason Barnett
8
+ - René Schultz Madsen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-05-07 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: '0.13'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: '0.13'
28
+ - !ruby/object:Gem::Dependency
29
+ name: activesupport
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: '3.2'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '3.2'
42
+ description: ! 'This is a ruby wrapper around the Uptrends API. Uptrends is a monitoring
43
+ service that let''s you monitor Web pages, Web services, Mail servers, Database
44
+ servers, DNS, SSL certificates, FTP and more.
45
+
46
+
47
+ NOTE: This is a 3rd party gem and not an official product from Uptrends.'
48
+ email:
49
+ - J@sonBarnett.com
50
+ - rm@microting.com
51
+ executables: []
52
+ extensions: []
53
+ extra_rdoc_files: []
54
+ files:
55
+ - .gitignore
56
+ - .travis.yml
57
+ - CHANGELOG.md
58
+ - Gemfile
59
+ - LICENSE.txt
60
+ - README.md
61
+ - Rakefile
62
+ - examples/add_new_probes.rb
63
+ - examples/add_probes_to_probe_group.rb
64
+ - examples/get_checkpoint_ips.rb
65
+ - examples/update_all_probe_attributes.rb
66
+ - lib/uptrends_extended.rb
67
+ - lib/uptrends_extended/api_error.rb
68
+ - lib/uptrends_extended/base.rb
69
+ - lib/uptrends_extended/checkpoint.rb
70
+ - lib/uptrends_extended/client.rb
71
+ - lib/uptrends_extended/probe.rb
72
+ - lib/uptrends_extended/probe_group.rb
73
+ - lib/uptrends_extended/version.rb
74
+ - spec/fixtures/vcr_cassettes/GET_Checkpoints.yml
75
+ - spec/fixtures/vcr_cassettes/GET_Probe.yml
76
+ - spec/fixtures/vcr_cassettes/GET_Probe_Group.yml
77
+ - spec/fixtures/vcr_cassettes/GET_Probe_Groups.yml
78
+ - spec/fixtures/vcr_cassettes/GET_Probes.yml
79
+ - spec/spec_helper.rb
80
+ - spec/uptrends_extended/client_spec.rb
81
+ - spec/uptrends_extended/probe_group_spec.rb
82
+ - spec/uptrends_extended/probe_spec.rb
83
+ - uptrends_extended.gemspec
84
+ homepage: https://github.com/microting/uptrends-gem
85
+ licenses:
86
+ - MIT
87
+ metadata: {}
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: 1.9.3
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project:
104
+ rubygems_version: 2.4.6
105
+ signing_key:
106
+ specification_version: 4
107
+ summary: Ruby wrapper around the Uptrends API, http://www.uptrends.com/
108
+ test_files:
109
+ - spec/fixtures/vcr_cassettes/GET_Checkpoints.yml
110
+ - spec/fixtures/vcr_cassettes/GET_Probe.yml
111
+ - spec/fixtures/vcr_cassettes/GET_Probe_Group.yml
112
+ - spec/fixtures/vcr_cassettes/GET_Probe_Groups.yml
113
+ - spec/fixtures/vcr_cassettes/GET_Probes.yml
114
+ - spec/spec_helper.rb
115
+ - spec/uptrends_extended/client_spec.rb
116
+ - spec/uptrends_extended/probe_group_spec.rb
117
+ - spec/uptrends_extended/probe_spec.rb
118
+ has_rdoc: