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 +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
|