uaeds 0.0.7 → 0.0.8

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: 510a5eadadf27d9a168ff820e233666e28fec424
4
- data.tar.gz: b34c8c4c0bad37c7405bd142153e7bd7e3c0dd1e
3
+ metadata.gz: 321e76f2448db246c261c1f57973ea639f78da6b
4
+ data.tar.gz: 86aa1597823bca7f937509ffb8ee5105043223be
5
5
  SHA512:
6
- metadata.gz: '0646084b81b0ab5be6f982af7240f860af2b7616eaf56157f0c5da3d55a8345bd8f0d02755b9f9ed552abac3cae68a98b0a59ca964cf04b4cd5194c30aa12d18'
7
- data.tar.gz: fa1d7cde23aebfe1a4db020cecd5cf2ec206f6c448994a5cd8779b3eb5696935bec5b852ddf606c0415104dcd23eed239a8db2e11016f81087354cf82f86efda
6
+ metadata.gz: f303b5f4a6bb386017b9a712e60e9ee86d6888573e06e817361fc70670d1f212675f25c7424898508b8a35cc101c1f48da4a2e7d73469898e78edd13694e9533
7
+ data.tar.gz: b94ef1920eef55878691f16bfa8610841a02c7d178f44f390cc99a170abdcaf28d5021b100a0688ff5729a5b1ef81bdecb6dcb96d25f6fa90df8ae990d4ef5e9
@@ -1,7 +1,7 @@
1
1
  module Uaeds
2
2
  class DSMLPerson < DSML
3
3
  def date_of_birth
4
- if(@value_h.key? :dateOfBirth)
4
+ if (@value_h.key? :dateOfBirth)
5
5
  @value_h[:dateOfBirth]
6
6
  else
7
7
  dob = get_value(:dateOfBirth)
@@ -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(@user && @password)
20
- DSMLPerson.new(Nokogiri::XML(open(@url + "/people/#{identifier}", :http_basic_authentication=>[@user, @password])))
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
@@ -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=(endpoint=nil)
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
- return {
29
- :uid => @mock_overrides[:uid] || "mockuser#{identifier}", # netid
30
- :uaId => @mock_overrides[:uaId] || ('%012i' % identifier), # 12 digits
31
- :isoNumber => @mock_overrides[:isoNumber] || ('%016i' % identifier), # cat card, 16 digits
32
- :emplId => @mock_overrides[:emplid] || ('%08i' % identifier), # also SID, 8 digit
33
- :cn => @mock_overrides[:cn] || "mock user #{identifier}", # complete name
34
- :givenName => @mock_overrides[:givenName] || "mock", # First + initial
35
- :sn => @mock_overrides[:sn] || "user #{identifier}", # surname/last name
36
- :mail => @mock_overrides[:mail] || "mockuser#{identifier}@example.com", # email
37
- :eduPersonPrimaryAffiliation => @mock_overrides[:eduPersonPrimaryAffiliation] || "staff", # staff, student, member, etc.
38
- :employeeTitle => @mock_overrides[:employeeTitle] || "Test Robot",
39
- :employeePrimaryDept => @mock_overrides[:employeePrimaryDept] || "0000",
40
- :employeePrimaryDeptName => @mock_overrides[:employeePrimaryDeptName] || "Robot Wing"
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
- def initialize(data={})
49
- @xml = data
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
- return @xml[attr]
50
+ @xml[attr]
55
51
  end
56
52
  end
57
-
58
53
  end
data/lib/uaeds/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Uaeds
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
@@ -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({:givenName => 'Larry'})
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 = "uaeds"
7
+ spec.name = 'uaeds'
8
8
  spec.version = Uaeds::VERSION
9
- spec.authors = ["dgsan"]
10
- spec.email = ["dgsan@gmx.com"]
11
- spec.description = "Tool for working with UA's 'Enterprise Directory Service,' an XML-based (DSML) (or JSON-based) lookup service."
12
- spec.summary = 'Tool for working with UA EDS'
13
- spec.homepage = "https://github.com/dgsan/uaeds"
14
- spec.license = "MIT"
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 = ["lib"]
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.7
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: 2017-12-12 00:00:00.000000000 Z
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.3'
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.3'
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: '10.1'
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: '10.1'
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.6'
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.6'
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.6'
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.6'
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.8'
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.8'
97
- description: Tool for working with UA's 'Enterprise Directory Service,' an XML-based
98
- (DSML) (or JSON-based) lookup service.
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 UA EDS
147
+ summary: Tool for working with EDS
148
148
  test_files:
149
149
  - spec/mock_uaeds_spec.rb
150
150
  - spec/spec_helper.rb