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 +4 -4
- data/changelog.md +3 -0
- data/lib/samanage/api/groups.rb +12 -0
- data/lib/samanage/api/users.rb +17 -1
- data/samanage.gemspec +1 -1
- data/spec/api/samanage_group_spec.rb +17 -1
- data/spec/api/samanage_site_spec.rb +0 -1
- data/spec/api/samanage_user_spec.rb +17 -0
- data/spec/samanage_api_spec.rb +1 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2dcaf45e80af6697cc02ed71271c47f35cafbaba
|
4
|
+
data.tar.gz: adbb18edb16566748da8bd0d10f2659fb1989fb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 253b6ed89aa71a09502d8feb86bb656aec49c9296a67263312778dcb64cf21ecd6573ebe0ed5a5a16f7e882cc8cbe4c8cd4348374e9db5ddd18ca0aa104a36a7
|
7
|
+
data.tar.gz: 8d46136866bb6db7bd66c91ef07dffe589c32693acd01456e40891de62bf1caa1134b6cddfe65501c3220f50ae4348253b3fdb0c42c53c1609c8348fe4881f99
|
data/changelog.md
CHANGED
data/lib/samanage/api/groups.rb
CHANGED
@@ -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}"
|
data/lib/samanage/api/users.rb
CHANGED
@@ -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
|
-
|
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.
|
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
|
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']
|
@@ -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']
|
data/spec/samanage_api_spec.rb
CHANGED
@@ -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
|