samanage 1.7.5 → 1.7.6

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: 830811e5f34c766e6daf4366e1367a5d1a25bb2e
4
- data.tar.gz: 0d0d2823495fefb862cde5acc354a44f733491e0
3
+ metadata.gz: 2dcaf45e80af6697cc02ed71271c47f35cafbaba
4
+ data.tar.gz: adbb18edb16566748da8bd0d10f2659fb1989fb8
5
5
  SHA512:
6
- metadata.gz: 431ad262a4afbf8423f0f5f6250e6090b1f60c1f959374e5a1356bcb58932c2d49242fb97cb8c0fbd95eac78280a905369de93ae39a88389c365abeb18669a3e
7
- data.tar.gz: 913374957d83cebed467421d8d488f1375a347943e92c72cc6a663a9ede29fbb627e8a513723d9534af2a4139ad9351e09c64c8d2909660d8f978411ee39f84c
6
+ metadata.gz: 253b6ed89aa71a09502d8feb86bb656aec49c9296a67263312778dcb64cf21ecd6573ebe0ed5a5a16f7e882cc8cbe4c8cd4348374e9db5ddd18ca0aa104a36a7
7
+ data.tar.gz: 8d46136866bb6db7bd66c91ef07dffe589c32693acd01456e40891de62bf1caa1134b6cddfe65501c3220f50ae4348253b3fdb0c42c53c1609c8348fe4881f99
data/changelog.md CHANGED
@@ -1,3 +1,6 @@
1
+ #1.7.6
2
+ - Adding group_id find methods for group name and user email
3
+
1
4
  #1.7.5
2
5
  - Adding site, department, group creation
3
6
 
@@ -21,6 +21,18 @@ module Samanage
21
21
  self.execute(path: PATHS[:group], http_method: 'post', payload: payload)
22
22
  end
23
23
 
24
+ def find_group_id_by_name(group: nil)
25
+ group_api = self.execute(path: "groups.json?name=#{group}")
26
+ if group_api[:data].size == 1 && group.to_s.downcase == group_api[:data].first['name'].to_s.downcase
27
+ return group_api[:data].first['id']
28
+ end
29
+ end
30
+
31
+ def find_group(id: nil)
32
+ path = "groups/#{id}.json"
33
+ self.execute(path: path)
34
+ end
35
+
24
36
  def add_member_to_group(email: nil, group_id: nil)
25
37
  user_id = self.find_user_id_by_email(email: email)
26
38
  member_path = "memberships.json?group_id=#{group_id}.json&user_ids=#{user_id}"
@@ -6,7 +6,7 @@ module Samanage
6
6
  def get_users(path: PATHS[:user], options: {})
7
7
  url = Samanage::UrlBuilder.new(path: path, options: options).url
8
8
  self.execute(path: url)
9
- end
9
+ end
10
10
 
11
11
  # Returns all users in the account
12
12
  def collect_users
@@ -37,8 +37,24 @@ module Samanage
37
37
  api_call.dig(:data).first.to_h.dig('email').to_s.downcase == email.to_s.downcase ? api_call.dig(:data).first.dig('id') : nil
38
38
  end
39
39
 
40
+ # Returns nil if no matching group_id
41
+ def find_user_group_id_by_email(email: nil)
42
+ user = self.check_user(value: email)
43
+ group_ids = user[:data].select{|u| u['email'] == email}.first['group_ids']
44
+ group_ids.each do |group_id|
45
+ group = self.find_group(id: group_id)
46
+ if group[:data]['is_user'] && email == group[:data]['email']
47
+ return group_id
48
+ end
49
+ end
50
+ return
51
+ end
52
+
40
53
  # Check for user by field (ex: users.json?field=value)
41
54
  def check_user(field: 'email', value: nil)
55
+ if field.to_s.downcase == 'email'
56
+ value = value.gsub("+",'%2B')
57
+ end
42
58
  url = "users.json?#{field}=#{value}"
43
59
  self.execute(path: url)
44
60
  end
data/samanage.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  $:.push File.expand_path("../lib", __FILE__)
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'samanage'
4
- s.version = '1.7.5'
4
+ s.version = '1.7.6'
5
5
  s.date = Date.today.strftime("%Y-%m-%d")
6
6
  s.summary = "Samanage Ruby Gem"
7
7
  s.description = "Connect to Samanage using Ruby!"
@@ -19,8 +19,15 @@ describe Samanage::Api do
19
19
  expect(groups).to be_an(Array)
20
20
  expect(groups.size).to eq(group_count)
21
21
  end
22
+ it 'find_group: returns a group card by known id' do
23
+ groups = @controller.collect_groups
24
+ sample_id = groups.sample['id']
25
+ group = @controller.find_group(id: sample_id)
26
+ expect(group[:data]['id']).to eq(sample_id) # id should match found group
27
+ expect(group[:data]).to have_key('name')
28
+ end
22
29
  it 'creates a group' do
23
- group_name = "Group Name ##{(rand*10**4).ceil}"
30
+ group_name = "Group Name #{(rand*10**4).ceil}"
24
31
  group_description = "Description #{(rand*10**4).ceil}"
25
32
  payload = {
26
33
  group: {
@@ -34,6 +41,15 @@ describe Samanage::Api do
34
41
  expect(group_create[:data]['name']).to eq(group_name)
35
42
  expect(group_create[:code]).to eq(200).or(201)
36
43
  end
44
+
45
+ it 'finds a group by name' do
46
+ group = @controller.collect_groups.sample
47
+ group_name = group['name']
48
+ group_id = group['id']
49
+ found_group_id = @controller.find_group_id_by_name(group: group_name)
50
+
51
+ expect(group_id).to eq(found_group_id)
52
+ end
37
53
  it 'adds member to group' do
38
54
  random_group_id = @controller.collect_groups.sample['id']
39
55
  random_user_email = @controller.collect_users.sample['email']
@@ -29,7 +29,6 @@ describe Samanage::Api do
29
29
  description: site_description
30
30
  }
31
31
  }
32
- puts "Payload: #{payload.inspect}"
33
32
  site_create = @controller.create_site(payload: payload)
34
33
 
35
34
  expect(site_create[:data]['id']).to be_an(Integer)
@@ -69,6 +69,23 @@ describe Samanage::Api do
69
69
  expect(sample_id).to eq(found_id)
70
70
  end
71
71
 
72
+ it 'finds group_id for user' do
73
+ users = @controller.collect_users
74
+ sample_user = users.select{|u| u['role']['name'] == 'Administrator'}.sample
75
+ sample_user_email = sample_user['email']
76
+ group_ids = sample_user['group_ids']
77
+ found_id = nil
78
+
79
+ group_ids.each do |group_id|
80
+ group = @controller.find_group(id: group_id)
81
+ if group[:data]['is_user'] && sample_user_email == group[:data]['email']
82
+ found_id ||= group_id
83
+ end
84
+ end
85
+ function_id = @controller.find_user_group_id_by_email(email: sample_user_email)
86
+
87
+ expect(function_id).to eq(found_id)
88
+ end
72
89
  it 'update_user: update_user by id' do
73
90
  users = @controller.collect_users
74
91
  sample_id = users.sample['id']
@@ -6,7 +6,7 @@ describe Samanage do
6
6
  end
7
7
  context 'on creation' do
8
8
  it 'Requires Email & Token' do
9
- expect{
9
+ expect{
10
10
  api_controller = Samanage::Api.new(token: "invalid token")
11
11
  api_controller.authorize
12
12
  }.to raise_error(Samanage::AuthorizationError)
@@ -37,9 +37,7 @@ describe Samanage do
37
37
  it 'Finds Admins' do
38
38
  api_controller = Samanage::Api.new(token: TOKEN, development_mode: true)
39
39
  admins = api_controller.list_admins
40
- puts "Admins were; #{admins}"
41
40
  admin_email = admins.sample.gsub('+',"%2B")
42
- puts "Sampled Admin: #{admin_email}"
43
41
  samanage_admin = api_controller.execute(path: "users.json?email=#{admin_email}")
44
42
  expect(samanage_admin[:data].first['role']['name']).to eq('Administrator')
45
43
  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.7.5
4
+ version: 1.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Walls