uaeds 0.0.7 → 0.0.8
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/lib/uaeds/dsml_person.rb +1 -1
- data/lib/uaeds/eds_dsml.rb +3 -3
- data/lib/uaeds/mock_eds.rb +21 -26
- data/lib/uaeds/version.rb +1 -1
- data/spec/mock_uaeds_spec.rb +7 -16
- data/spec/uaeds_spec.rb +21 -35
- data/uaeds.gemspec +14 -15
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 321e76f2448db246c261c1f57973ea639f78da6b
|
4
|
+
data.tar.gz: 86aa1597823bca7f937509ffb8ee5105043223be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f303b5f4a6bb386017b9a712e60e9ee86d6888573e06e817361fc70670d1f212675f25c7424898508b8a35cc101c1f48da4a2e7d73469898e78edd13694e9533
|
7
|
+
data.tar.gz: b94ef1920eef55878691f16bfa8610841a02c7d178f44f390cc99a170abdcaf28d5021b100a0688ff5729a5b1ef81bdecb6dcb96d25f6fa90df8ae990d4ef5e9
|
data/lib/uaeds/dsml_person.rb
CHANGED
data/lib/uaeds/eds_dsml.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module Uaeds
|
2
2
|
class EdsDSML < Eds
|
3
3
|
include Singleton
|
4
|
-
|
5
4
|
@@eds_dsml_endpoint = nil
|
6
5
|
|
7
6
|
def self.eds_endpoint=(endpoint=nil)
|
@@ -16,8 +15,9 @@ module Uaeds
|
|
16
15
|
|
17
16
|
def open_person(identifier)
|
18
17
|
# This might be improved with some more handling here and in DSML init.
|
19
|
-
if
|
20
|
-
DSMLPerson.new(Nokogiri::XML(open(@url + "/people/#{identifier}",
|
18
|
+
if @user && @password
|
19
|
+
DSMLPerson.new(Nokogiri::XML(open(@url + "/people/#{identifier}",
|
20
|
+
http_basic_authentication: [@user, @password])))
|
21
21
|
else
|
22
22
|
DSMLPerson.new(Nokogiri::XML(open(@url + "/people/#{identifier}")))
|
23
23
|
end
|
data/lib/uaeds/mock_eds.rb
CHANGED
@@ -1,17 +1,13 @@
|
|
1
1
|
# Provided to ease testing of applications using DSML
|
2
2
|
module Uaeds
|
3
3
|
class MockEdsDSML < EdsDSML
|
4
|
-
|
5
|
-
|
6
4
|
def initialize
|
7
5
|
@mock_overrides = {}
|
8
6
|
end
|
9
7
|
|
10
|
-
def self.eds_endpoint=(
|
11
|
-
end
|
8
|
+
def self.eds_endpoint=(_endpoint = nil) end
|
12
9
|
|
13
|
-
def self.eds_endpoint
|
14
|
-
end
|
10
|
+
def self.eds_endpoint() end
|
15
11
|
|
16
12
|
def set_mock_overrides(dict)
|
17
13
|
@mock_overrides = dict
|
@@ -25,34 +21,33 @@ module Uaeds
|
|
25
21
|
|
26
22
|
def generate_attributes(identifier)
|
27
23
|
# I'm sure there's a more elegant way to write this, but it's already written.
|
28
|
-
|
29
|
-
:
|
30
|
-
:
|
31
|
-
:
|
32
|
-
:
|
33
|
-
:
|
34
|
-
:
|
35
|
-
:
|
36
|
-
:
|
37
|
-
:
|
38
|
-
|
39
|
-
:
|
40
|
-
:
|
24
|
+
{
|
25
|
+
uid: @mock_overrides[:uid] || "mockuser#{identifier}", # netid
|
26
|
+
uaId: @mock_overrides[:uaId] || ('%012i' % identifier), # 12 digits
|
27
|
+
isoNumber: @mock_overrides[:isoNumber] || ('%016i' % identifier), # cat card, 16 digits
|
28
|
+
emplId: @mock_overrides[:emplid] || ('%08i' % identifier), # also SID, 8 digit
|
29
|
+
cn: @mock_overrides[:cn] || "mock user #{identifier}", # complete name
|
30
|
+
givenName: @mock_overrides[:givenName] || 'mock j', # First + initial
|
31
|
+
preferredGivenname: @mock_overrides[:preferredGivenname] || 'mock',
|
32
|
+
sn: @mock_overrides[:sn] || "user #{identifier}", # surname/last name
|
33
|
+
mail: @mock_overrides[:mail] || "mockuser#{identifier}@example.com", # email
|
34
|
+
# staff, student, member, etc.
|
35
|
+
eduPersonPrimaryAffiliation: @mock_overrides[:eduPersonPrimaryAffiliation] || 'staff',
|
36
|
+
employeeTitle: @mock_overrides[:employeeTitle] || 'Test Robot',
|
37
|
+
employeePrimaryDept: @mock_overrides[:employeePrimaryDept] || '0000',
|
38
|
+
employeePrimaryDeptName: @mock_overrides[:employeePrimaryDeptName] || 'Robot Wing'
|
41
39
|
}
|
42
40
|
end
|
43
|
-
|
44
41
|
end
|
45
42
|
|
46
43
|
class MockDSMLPerson < DSMLPerson
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
@value_h = {}
|
44
|
+
def initialize(data = {})
|
45
|
+
@xml = data
|
46
|
+
@value_h = {}
|
51
47
|
end
|
52
48
|
|
53
49
|
def get_xml_attr(attr)
|
54
|
-
|
50
|
+
@xml[attr]
|
55
51
|
end
|
56
52
|
end
|
57
|
-
|
58
53
|
end
|
data/lib/uaeds/version.rb
CHANGED
data/spec/mock_uaeds_spec.rb
CHANGED
@@ -1,24 +1,19 @@
|
|
1
|
+
require 'uaeds'
|
1
2
|
require 'uaeds/mock_eds'
|
2
|
-
|
3
|
-
|
4
3
|
module Uaeds
|
5
|
-
|
6
4
|
describe MockEdsDSML, MockDSMLPerson do
|
7
|
-
|
8
5
|
describe 'MockEdsDSML' do
|
9
|
-
let(:eds){ MockEdsDSML.instance }
|
10
|
-
|
6
|
+
let(:eds) { MockEdsDSML.instance }
|
11
7
|
it 'provides an mock instance' do
|
12
8
|
expect(eds).to be_an_instance_of MockEdsDSML
|
13
9
|
end
|
14
10
|
end
|
15
11
|
|
16
12
|
describe 'MockEdsDSML can retrieve a mock person' do
|
17
|
-
before{
|
13
|
+
before {
|
18
14
|
@test_id = 1
|
19
15
|
}
|
20
|
-
let(:person){ MockEdsDSML.instance.person_by_uaid(@test_id) }
|
21
|
-
|
16
|
+
let(:person) { MockEdsDSML.instance.person_by_uaid(@test_id) }
|
22
17
|
it 'provides a mock person' do
|
23
18
|
expect(person).to be_an_instance_of MockDSMLPerson
|
24
19
|
expect(person.uaid).to eq('%012i' % @test_id)
|
@@ -27,20 +22,16 @@ module Uaeds
|
|
27
22
|
end
|
28
23
|
|
29
24
|
describe 'can override default mock values' do
|
30
|
-
before{
|
25
|
+
before {
|
31
26
|
@test_id = 1
|
32
|
-
MockEdsDSML.instance.set_mock_overrides(
|
27
|
+
MockEdsDSML.instance.set_mock_overrides(preferredGivenname: 'Larry')
|
33
28
|
}
|
34
|
-
let(:person){ MockEdsDSML.instance.person_by_uaid(@test_id) }
|
35
|
-
|
29
|
+
let(:person) { MockEdsDSML.instance.person_by_uaid(@test_id) }
|
36
30
|
it 'overrode property' do
|
37
31
|
expect(person).to be_an_instance_of MockDSMLPerson
|
38
32
|
expect(person.uaid).to eq('%012i' % @test_id)
|
39
33
|
expect(person.first_name).to eq('Larry')
|
40
34
|
end
|
41
35
|
end
|
42
|
-
|
43
36
|
end
|
44
37
|
end
|
45
|
-
|
46
|
-
|
data/spec/uaeds_spec.rb
CHANGED
@@ -3,12 +3,11 @@ require 'uaeds/eds_dsml'
|
|
3
3
|
require 'uaeds/eds_json'
|
4
4
|
require 'highline/import'
|
5
5
|
|
6
|
-
def color(a,b)
|
7
|
-
HighLine.color(a,b)
|
6
|
+
def color(a, b)
|
7
|
+
HighLine.color(a, b)
|
8
8
|
end
|
9
9
|
|
10
10
|
module Uaeds
|
11
|
-
|
12
11
|
describe EdsDSML, EdsJSON do
|
13
12
|
eds_user = nil
|
14
13
|
eds_key = nil
|
@@ -19,94 +18,89 @@ module Uaeds
|
|
19
18
|
person_0 = nil
|
20
19
|
person_1 = nil
|
21
20
|
eds_test_user_netid = nil
|
22
|
-
|
21
|
+
|
23
22
|
describe 'Get access credentials for testing' do
|
24
23
|
info_color = [:yellow, :bold]
|
25
24
|
question_color = [:green]
|
26
25
|
error_color = [:red, :bold]
|
27
|
-
|
26
|
+
|
28
27
|
say(color("To test this library access to an EDS system is required.", info_color))
|
29
28
|
say(color("Please provide access credentials and endpoints for", info_color))
|
30
29
|
say(color("testing as prompted.\n", info_color))
|
31
|
-
|
30
|
+
|
32
31
|
eds_user = ask(color("EDS user name?", question_color)) do |input|
|
33
32
|
input.validate = /.+/
|
34
33
|
input.responses[:not_valid] = color("Please provide an EDS user name.", error_color)
|
35
34
|
input.responses[:ask_on_error] = ""
|
36
35
|
end
|
37
|
-
|
36
|
+
|
38
37
|
eds_key = ask(color("EDS key?", question_color)) do |input|
|
39
38
|
input.echo = "*"
|
40
39
|
input.validate = /.+/
|
41
40
|
input.responses[:not_valid] = color("Please provide an EDS key.", error_color)
|
42
41
|
input.responses[:ask_on_error] = ""
|
43
42
|
end
|
44
|
-
|
43
|
+
|
45
44
|
eds_dsml_ep = ask(color("DSML endpoint?", question_color)) do |input|
|
46
45
|
input.validate = /.+/
|
47
46
|
input.responses[:not_valid] = color("Please provide a DSML service endpoint.", error_color)
|
48
47
|
input.responses[:ask_on_error] = ""
|
49
48
|
end
|
50
|
-
|
49
|
+
|
51
50
|
eds_json_ep = ask(color("JSON endpoint?", question_color)) do |input|
|
52
51
|
input.validate = /.+/
|
53
52
|
input.responses[:not_valid] = color("Please provide a JSON service endpoint.", error_color)
|
54
53
|
input.responses[:ask_on_error] = ""
|
55
54
|
end
|
56
|
-
|
55
|
+
|
57
56
|
eds_test_user_netid = ask(color("Please provide a NetID for testing.", question_color)) do |input|
|
58
57
|
input.validate = /^\s*[a-zA-Z0-9]{3,16}\s*$/
|
59
58
|
input.responses[:not_valid] = color("Please provide a NetID for testing.", error_color)
|
60
59
|
input.responses[:ask_on_error] = ""
|
61
60
|
end
|
62
|
-
|
61
|
+
|
63
62
|
eds_user.strip!
|
64
63
|
eds_key.strip!
|
65
64
|
eds_dsml_ep.strip!
|
66
65
|
eds_json_ep.strip!
|
67
66
|
eds_test_user_netid.strip!
|
68
|
-
|
67
|
+
|
69
68
|
puts(color("\nStarting tests...\n++++++++++++++\n", [:blue, :bold]))
|
70
|
-
|
69
|
+
|
71
70
|
it 'Should have test credentials' do
|
72
71
|
expect(eds_user).not_to be_empty
|
73
72
|
expect(eds_key).not_to be_empty
|
74
73
|
expect(eds_dsml_ep).not_to be_empty
|
75
74
|
expect(eds_json_ep).not_to be_empty
|
76
75
|
end
|
77
|
-
|
76
|
+
|
78
77
|
Eds.eds_user = eds_user
|
79
78
|
Eds.eds_key = eds_key
|
80
79
|
EdsDSML.eds_endpoint = "https://#{eds_dsml_ep}"
|
81
80
|
EdsJSON.eds_endpoint = "https://#{eds_json_ep}"
|
82
|
-
|
83
81
|
end
|
84
|
-
|
85
|
-
|
82
|
+
|
83
|
+
|
86
84
|
describe 'EdsDSML and EdsJSON retrieve the same results' do
|
87
|
-
|
88
85
|
eds0 = EdsDSML.instance
|
89
86
|
eds1 = EdsJSON.instance
|
90
|
-
|
91
87
|
describe 'EdsDSML and EdsJSON should match when retrieved by NetId' do
|
92
|
-
|
93
88
|
person_0 = eds0.person_by_netid(eds_test_user_netid)
|
94
89
|
person_1 = eds1.person_by_netid(eds_test_user_netid)
|
95
|
-
|
96
90
|
it 'retrieved a DSML person' do
|
97
91
|
expect(person_0).to_not be_nil
|
98
92
|
expect(person_0).to be_an_instance_of(DSMLPerson)
|
99
93
|
end
|
100
|
-
|
94
|
+
|
101
95
|
it 'retrieved a JSON person' do
|
102
96
|
expect(person_1).to_not be_nil
|
103
97
|
expect(person_1).to be_an_instance_of(JSONPerson)
|
104
98
|
end
|
105
|
-
|
99
|
+
|
106
100
|
it 'has the sanem netid' do
|
107
101
|
expect(person_1.netid).to eq(person_0.netid)
|
108
102
|
end
|
109
|
-
|
103
|
+
|
110
104
|
it 'has the same name' do
|
111
105
|
expect(person_0.name).to eq(person_1.name)
|
112
106
|
end
|
@@ -117,18 +111,13 @@ module Uaeds
|
|
117
111
|
# probably nil
|
118
112
|
expect(person_1.emplid).to eq(person_0.emplid)
|
119
113
|
end
|
120
|
-
|
121
114
|
end
|
122
115
|
|
123
|
-
|
124
116
|
describe 'EdsDSML and EdsJSON should match when retrieved by uaid' do
|
125
|
-
|
126
117
|
person_1 = eds1.person_by_uaid(person_0.uaid)
|
127
|
-
|
128
118
|
# Currently uiad's starting with a letter
|
129
119
|
# can not be retrieved by the DSML API.
|
130
120
|
# person_0 = eds0.person_by_uaid(person_1.uaid)
|
131
|
-
|
132
121
|
it 'has the same netid' do
|
133
122
|
expect(person_1.netid).to eq(person_0.netid)
|
134
123
|
end
|
@@ -141,7 +130,6 @@ module Uaeds
|
|
141
130
|
it 'has the same emplid' do
|
142
131
|
expect(person_1.emplid).to eq(person_0.emplid)
|
143
132
|
end
|
144
|
-
|
145
133
|
end
|
146
134
|
|
147
135
|
describe 'EdsDSML and EdsJSON both retrieve the proper user' do
|
@@ -149,16 +137,15 @@ module Uaeds
|
|
149
137
|
expect(person_1.netid).to eq(eds_test_user_netid)
|
150
138
|
expect(person_0.netid).to eq(eds_test_user_netid)
|
151
139
|
end
|
152
|
-
|
153
140
|
end
|
154
|
-
|
141
|
+
|
155
142
|
describe 'EdsDSML and EdsJSON return nil for undefined attributes' do
|
156
143
|
it 'returns nil' do
|
157
144
|
expect(person_0.lookup_value('robotDinosaur')).to be_nil
|
158
145
|
expect(person_1.lookup_value('robotDinosaur')).to be_nil
|
159
146
|
end
|
160
147
|
end
|
161
|
-
|
148
|
+
|
162
149
|
describe 'EdsDSML returns nils for all values when blank entry is found' do
|
163
150
|
person_2 = eds0.person_by_uaid('T0T0T0T0T0T0T0T0T0T0T0T0')
|
164
151
|
it 'has nils' do
|
@@ -168,6 +155,5 @@ module Uaeds
|
|
168
155
|
end
|
169
156
|
end
|
170
157
|
end
|
171
|
-
|
172
158
|
end
|
173
|
-
end
|
159
|
+
end
|
data/uaeds.gemspec
CHANGED
@@ -4,25 +4,24 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'uaeds/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'uaeds'
|
8
8
|
spec.version = Uaeds::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.description = "Tool for working with
|
12
|
-
spec.summary = 'Tool for working with
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
9
|
+
spec.authors = ['dgsan']
|
10
|
+
spec.email = ['dgsan@gmx.com']
|
11
|
+
spec.description = "Tool for working with 'Enterprise Directory Service,' an XML-based (DSML) (or JSON-based) lookup service."
|
12
|
+
spec.summary = 'Tool for working with EDS'
|
13
|
+
spec.homepage = 'https://github.com/dgsan/uaeds'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
20
|
-
|
21
|
-
spec.add_development_dependency 'bundler', "~> 1.3"
|
22
|
-
spec.add_development_dependency 'rake', "~> 10.1"
|
23
|
-
spec.add_development_dependency 'rspec', "~> 2.6"
|
24
|
-
spec.add_development_dependency 'highline', "~> 1.6"
|
25
|
-
spec.add_runtime_dependency 'nokogiri', "~> 1.6"
|
26
|
-
spec.add_runtime_dependency 'json', "~> 1.8"
|
19
|
+
spec.require_paths = ['lib']
|
27
20
|
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
22
|
+
spec.add_development_dependency 'rake', '~> 12.3'
|
23
|
+
spec.add_development_dependency 'rspec', '~> 3.2'
|
24
|
+
spec.add_development_dependency 'highline', '~> 1.6'
|
25
|
+
spec.add_runtime_dependency 'nokogiri', '~> 1.8'
|
26
|
+
spec.add_runtime_dependency 'json', '~> 2.1'
|
28
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uaeds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dgsan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.16'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.16'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '12.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '12.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '2
|
47
|
+
version: '3.2'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '2
|
54
|
+
version: '3.2'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: highline
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,30 +72,30 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '1.
|
75
|
+
version: '1.8'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '1.
|
82
|
+
version: '1.8'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: json
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '1
|
89
|
+
version: '2.1'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '1
|
97
|
-
description: Tool for working with
|
98
|
-
(
|
96
|
+
version: '2.1'
|
97
|
+
description: Tool for working with 'Enterprise Directory Service,' an XML-based (DSML)
|
98
|
+
(or JSON-based) lookup service.
|
99
99
|
email:
|
100
100
|
- dgsan@gmx.com
|
101
101
|
executables: []
|
@@ -144,7 +144,7 @@ rubyforge_project:
|
|
144
144
|
rubygems_version: 2.5.2
|
145
145
|
signing_key:
|
146
146
|
specification_version: 4
|
147
|
-
summary: Tool for working with
|
147
|
+
summary: Tool for working with EDS
|
148
148
|
test_files:
|
149
149
|
- spec/mock_uaeds_spec.rb
|
150
150
|
- spec/spec_helper.rb
|