samanage 1.7.5 → 1.7.6

Sign up to get free protection for your applications and to get access to all the features.
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