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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0ab1208aa59cadeb2047f640bb87445bdc5f4cf1
4
- data.tar.gz: e007b60853fcfaf54476344234e95ba0ab790942
3
+ metadata.gz: 3e3b9e74fc9dd73dbe2989f205691068facee01d
4
+ data.tar.gz: e3114f63ef4ee17a0c3546da722f9a9ba0bce80b
5
5
  SHA512:
6
- metadata.gz: 0e599dcce813c29db9589801a5b37dff279bf7803e600421ea7e99f9e93d2f0a89a683bb436086b81968fbbf979068f8f16b45a53e1f3bd720991d3e3c7c20aa
7
- data.tar.gz: b5b485f16acfdf1f891e3c686392c80baac640579a1edcdbb0188f767790b4a30f377c963149e9499d82a8e40c64e7ae13f531cdf94e2624b2fa75bd0e836ece
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/#{m[1]}_spec.rb" }
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
- custom_fields: 'custom_fields.json',
14
- custom_forms: 'custom_forms.json',
16
+ other_asset: 'other_assets.json',
15
17
  site: 'sites.json',
16
- department: 'departments.json',
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
- self.datacenter = nil
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.1'
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
@@ -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']
@@ -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(Hash)
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://appeu.samanage.com')
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://app.samanage.com')
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
@@ -9,7 +9,7 @@ describe Samanage::UrlBuilder do
9
9
  {:email => 'abc', :name => 'Joe Doe'},
10
10
  {:site => 0001, :id => 1234}
11
11
  ]
12
- 25.times {
12
+ 5.times {
13
13
  url = Samanage::UrlBuilder.new(path: path.sample, options: options.sample).url
14
14
  expect(url).to be_a(String)
15
15
  }
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.1
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/comments_spec.rb
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