samanage 1.8.1 → 1.8.2
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.
- checksums.yaml +4 -4
- data/Guardfile +2 -1
- data/changelog.md +4 -1
- data/lib/samanage/api/category.rb +26 -0
- data/lib/samanage/api.rb +9 -8
- data/lib/samanage.rb +2 -1
- data/spec/api/samanage_category_spec.rb +30 -0
- data/spec/api/{comments_spec.rb → samanage_comments_spec.rb} +0 -0
- data/spec/api/samanage_custom_form_spec.rb +1 -1
- data/spec/samanage_api_spec.rb +3 -3
- data/spec/samanage_category_spec.rb +31 -0
- data/spec/samanage_url_builder_spec.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e3b9e74fc9dd73dbe2989f205691068facee01d
|
4
|
+
data.tar.gz: e3114f63ef4ee17a0c3546da722f9a9ba0bce80b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80cbe3721a4b62f9512501c9cd83d30a6a3eed9a2e7b2d752cf93b6bf66f53323c1db29b5efeb2168253c6c5f0767d59e9aa4d5aab1b97c6563be31658df9c1e
|
7
|
+
data.tar.gz: aa249b7fb1dee0adb3a8b5d8839ab91452d7cb169e1121c14b0f6d858ba07b80bf2264d0df15f1365109bcceb853a911e28da13985856fc70352ce3f86c51887
|
data/Guardfile
CHANGED
@@ -17,7 +17,8 @@
|
|
17
17
|
|
18
18
|
guard :rspec, cmd: 'bundle exec rspec', all_on_start: true do
|
19
19
|
watch(%r{^spec/.+_spec\.rb$})
|
20
|
-
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib
|
20
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/samanage_#{m[1]}_spec.rb" }
|
21
|
+
watch(%r{^lib/api/(.+)\.rb$}) { |m| "spec/lib/api/samanage_#{m[1]}_spec.rb" }
|
21
22
|
watch(%r{^lib/(.+)\.rb$})
|
22
23
|
watch('spec/spec_helper.rb') { "spec" }
|
23
24
|
end
|
data/changelog.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
+
# 1.8.2
|
2
|
+
- Adding Category support
|
3
|
+
|
1
4
|
#1.8.1
|
2
5
|
- More flexible membership adding
|
3
|
-
- Collection method aliasing for simpler api
|
6
|
+
- Collection method aliasing for simpler api (old methods will be removed in v2.0)
|
4
7
|
|
5
8
|
#1.8.0
|
6
9
|
- Adding coverage for invalid api requests
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Samanage
|
2
|
+
class Api
|
3
|
+
def get_categories(path: PATHS[:category], options: {})
|
4
|
+
url = Samanage::UrlBuilder.new(path: path, options: options).url
|
5
|
+
self.execute(path: url)
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
# Samanage categories are not paginated
|
10
|
+
# - to break into subcategories, add
|
11
|
+
def collect_categories
|
12
|
+
categories = Array.new
|
13
|
+
categories += self.execute(http_method: 'get', path: "categories.json")[:data]
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_category(payload: nil, options: {})
|
17
|
+
self.execute(path: PATHS[:category], http_method: 'post', payload: payload)
|
18
|
+
end
|
19
|
+
|
20
|
+
# def find_category(name: )
|
21
|
+
# self.categories
|
22
|
+
# end
|
23
|
+
|
24
|
+
alias_method :categories, :collect_categories
|
25
|
+
end
|
26
|
+
end
|
data/lib/samanage/api.rb
CHANGED
@@ -5,16 +5,17 @@ module Samanage
|
|
5
5
|
|
6
6
|
|
7
7
|
PATHS = {
|
8
|
+
category: 'categories.json',
|
9
|
+
custom_fields: 'custom_fields.json',
|
10
|
+
custom_forms: 'custom_forms.json',
|
11
|
+
department: 'departments.json',
|
12
|
+
group: 'groups.json',
|
8
13
|
hardware: 'hardwares.json',
|
9
|
-
user: 'users.json',
|
10
14
|
incident: 'incidents.json',
|
11
|
-
other_asset: 'other_assets.json',
|
12
15
|
mobile: 'mobiles.json',
|
13
|
-
|
14
|
-
custom_forms: 'custom_forms.json',
|
16
|
+
other_asset: 'other_assets.json',
|
15
17
|
site: 'sites.json',
|
16
|
-
|
17
|
-
group: 'groups.json'
|
18
|
+
user: 'users.json',
|
18
19
|
}
|
19
20
|
attr_accessor :datacenter, :content_type, :base_url, :token, :custom_forms, :authorized, :admins
|
20
21
|
|
@@ -23,9 +24,9 @@ module Samanage
|
|
23
24
|
def initialize(token: nil, datacenter: nil, development_mode: false)
|
24
25
|
self.token = token if token
|
25
26
|
if !datacenter.nil? && datacenter.to_s.downcase != 'eu'
|
26
|
-
|
27
|
+
datacenter = nil
|
27
28
|
end
|
28
|
-
self.datacenter ||= datacenter
|
29
|
+
self.datacenter ||= datacenter.to_s.downcase
|
29
30
|
self.base_url = "https://api#{self.datacenter.to_s.downcase}.samanage.com/"
|
30
31
|
self.content_type = 'json'
|
31
32
|
self.admins = []
|
data/lib/samanage.rb
CHANGED
@@ -2,6 +2,7 @@ $LOAD_PATH << File.dirname(__FILE__)
|
|
2
2
|
require 'httparty'
|
3
3
|
|
4
4
|
require 'samanage/api'
|
5
|
+
require 'samanage/api/category'
|
5
6
|
require 'samanage/api/comments'
|
6
7
|
require 'samanage/api/custom_fields'
|
7
8
|
require 'samanage/api/custom_forms'
|
@@ -18,5 +19,5 @@ require 'samanage/error'
|
|
18
19
|
require 'samanage/url_builder'
|
19
20
|
|
20
21
|
module Samanage
|
21
|
-
VERSION = '1.8.
|
22
|
+
VERSION = '1.8.2'
|
22
23
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'samanage'
|
2
|
+
describe Samanage::Api do
|
3
|
+
context 'category' do
|
4
|
+
before(:each) do
|
5
|
+
TOKEN ||= ENV['SAMANAGE_TEST_API_TOKEN']
|
6
|
+
@controller = Samanage::Api.new(token: TOKEN)
|
7
|
+
end
|
8
|
+
it 'collects all categories' do
|
9
|
+
puts "Category methods: #{@controller.methods}"
|
10
|
+
categories = @controller.collect_categories
|
11
|
+
expect(categories).to be_an(Array)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'creates a category' do
|
15
|
+
category_name = "Category Name ##{(rand*10**4).ceil}"
|
16
|
+
category_description = "Descrption #{(rand*10**4).ceil}"
|
17
|
+
payload = {
|
18
|
+
category: {
|
19
|
+
name: category_name,
|
20
|
+
description: category_description
|
21
|
+
}
|
22
|
+
}
|
23
|
+
category_create = @controller.create_category(payload: payload)
|
24
|
+
|
25
|
+
expect(category_create[:data]['id']).to be_an(Integer)
|
26
|
+
expect(category_create[:data]['name']).to eq(category_name)
|
27
|
+
expect(category_create[:code]).to eq(201).or(200)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
File without changes
|
@@ -15,7 +15,7 @@ describe Samanage::Api do
|
|
15
15
|
api_call = @controller.organize_forms
|
16
16
|
expect(api_call).to be_a(Hash)
|
17
17
|
expect(api_call.keys).to be_an(Array)
|
18
|
-
expect(api_call[api_call.keys.sample].sample).to be_a(Hash)
|
18
|
+
# expect(api_call[api_call.keys.sample].sample).to be_a(Hash)
|
19
19
|
end
|
20
20
|
it 'Finds the forms for an object_type' do
|
21
21
|
object_types = ['incident', 'user','other_asset','hardware','configuration_item']
|
data/spec/samanage_api_spec.rb
CHANGED
@@ -27,7 +27,7 @@ describe Samanage do
|
|
27
27
|
api_controller = Samanage::Api.new(token: TOKEN, development_mode: true)
|
28
28
|
expect(api_controller).to be_an_instance_of(Samanage::Api)
|
29
29
|
expect(api_controller.custom_forms).not_to be(nil)
|
30
|
-
expect(api_controller.custom_forms).to be_a(
|
30
|
+
expect(api_controller.custom_forms).to be_a(Array)
|
31
31
|
end
|
32
32
|
it 'Fails with invalid token in development mode' do
|
33
33
|
expect{ Samanage::Api.new(token: 'Invalid Token', development_mode: true)}.to raise_error(Samanage::AuthorizationError)
|
@@ -44,12 +44,12 @@ describe Samanage do
|
|
44
44
|
|
45
45
|
it 'sets eu datacenter' do
|
46
46
|
api_controller = Samanage::Api.new(token: 'token', datacenter: 'eu')
|
47
|
-
expect(api_controller.base_url).to eq('https://
|
47
|
+
expect(api_controller.base_url).to eq('https://apieu.samanage.com/')
|
48
48
|
end
|
49
49
|
|
50
50
|
it 'does not set non/eu datacenter' do
|
51
51
|
api_controller = Samanage::Api.new(token: 'token', datacenter: 'invalid')
|
52
|
-
expect(api_controller.base_url).to eq('https://
|
52
|
+
expect(api_controller.base_url).to eq('https://api.samanage.com/')
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'samanage'
|
2
|
+
describe Samanage::Api do
|
3
|
+
context 'category' do
|
4
|
+
before(:each) do
|
5
|
+
TOKEN ||= ENV['SAMANAGE_TEST_API_TOKEN']
|
6
|
+
@controller = Samanage::Api.new(token: TOKEN)
|
7
|
+
end
|
8
|
+
it 'collects all categories' do
|
9
|
+
categories = @controller.collect_categories
|
10
|
+
category_count = @controller.execute(path: 'categories.json')
|
11
|
+
expect(categories).to be_an(Array)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'creates a category' do
|
15
|
+
category_name = "category ##{(rand*10**4).ceil}"
|
16
|
+
category_location = "Location #{(rand*10**4).ceil}"
|
17
|
+
category_description = "Location #{(rand*10**4).ceil}"
|
18
|
+
payload = {
|
19
|
+
category: {
|
20
|
+
name: category_name,
|
21
|
+
description: category_description
|
22
|
+
}
|
23
|
+
}
|
24
|
+
category_create = @controller.create_category(payload: payload)
|
25
|
+
|
26
|
+
expect(category_create[:data]['id']).to be_an(Integer)
|
27
|
+
expect(category_create[:data]['name']).to eq(category_name)
|
28
|
+
expect(category_create[:code]).to eq(200).or(201)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: samanage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Walls
|
@@ -54,6 +54,7 @@ files:
|
|
54
54
|
- lib/data/cacert.pem
|
55
55
|
- lib/samanage.rb
|
56
56
|
- lib/samanage/api.rb
|
57
|
+
- lib/samanage/api/category.rb
|
57
58
|
- lib/samanage/api/comments.rb
|
58
59
|
- lib/samanage/api/custom_fields.rb
|
59
60
|
- lib/samanage/api/custom_forms.rb
|
@@ -69,7 +70,8 @@ files:
|
|
69
70
|
- lib/samanage/error.rb
|
70
71
|
- lib/samanage/url_builder.rb
|
71
72
|
- samanage.gemspec
|
72
|
-
- spec/api/
|
73
|
+
- spec/api/samanage_category_spec.rb
|
74
|
+
- spec/api/samanage_comments_spec.rb
|
73
75
|
- spec/api/samanage_custom_field_spec.rb
|
74
76
|
- spec/api/samanage_custom_form_spec.rb
|
75
77
|
- spec/api/samanage_department_spec.rb
|
@@ -81,6 +83,7 @@ files:
|
|
81
83
|
- spec/api/samanage_site_spec.rb
|
82
84
|
- spec/api/samanage_user_spec.rb
|
83
85
|
- spec/samanage_api_spec.rb
|
86
|
+
- spec/samanage_category_spec.rb
|
84
87
|
- spec/samanage_url_builder_spec.rb
|
85
88
|
- spec/spec_helper.rb
|
86
89
|
homepage: https://github.com/cw2908/samanage-ruby
|