uaeds 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 360c26e4e040f658fcb0bdc374c0a75aa231e571
4
- data.tar.gz: 77b9e3273861c6eba3765e8492394151b9c4fb1c
3
+ metadata.gz: 907aacaa9c34bac89def7ce8bed17e01de91c23b
4
+ data.tar.gz: 984fe8b2eb8d1d5961cde7edc9b934eb460309a0
5
5
  SHA512:
6
- metadata.gz: faa6d09b2927831efcb6c39cc27d3ec4247fdb26280314dbff86d7091a547793894570aae2b808dcf29800f373e429c084fd975e51aa33833678478bd0e85ade
7
- data.tar.gz: 5053b713ee6cce2ee4949841064aad2aa0a1cf706e5cbfbd786bb960206b7175ff0b6d66219e0960abf9e4699cdb6e893f8c36f8cdb03fa347cf46e6b9f71233
6
+ metadata.gz: 95457717f6e416447c9a8ca814eb7dbb8a1982ed000eedb69f040906c8240746c3392b2bd5bc12ad353cca67cdac82c54f48a0eb859a6eafbecd3a5d6ef0cff1
7
+ data.tar.gz: 64bc13bf634d303ebed6126d84b90fd989131f7df28a4baf02561df4f9eb4611a5442fecadb37fba3ea1140bb6d011989dd8c883c595de91675a794f8f280162
@@ -10,7 +10,9 @@ module Uaeds
10
10
 
11
11
  def get_value(prop_name)
12
12
  data = get_xml_attr(prop_name)
13
- if data.length == 0
13
+ if data.is_a? String
14
+ return data
15
+ elsif data.length == 0
14
16
  return nil
15
17
  elsif data.length == 1
16
18
  return data[0].content
@@ -52,6 +52,18 @@ module Uaeds
52
52
  lookup_value(:emplId)
53
53
  end
54
54
 
55
+ def surname
56
+ lookup_value(:sn)
57
+ end
58
+
59
+ def given_name
60
+ lookup_value(:givenName)
61
+ end
62
+
63
+ def first_name
64
+ given_name
65
+ end
66
+
55
67
  def name
56
68
  cn
57
69
  end
@@ -64,6 +76,14 @@ module Uaeds
64
76
  lookup_value(:cn)
65
77
  end
66
78
 
79
+ def email
80
+ mail
81
+ end
82
+
83
+ def mail
84
+ lookup_value(:mail)
85
+ end
86
+
67
87
  def person_type
68
88
  edu_person_primary_affiliation
69
89
  end
@@ -0,0 +1,65 @@
1
+ require 'date'
2
+ require 'uaeds/eds'
3
+ require 'uaeds/eds_dsml'
4
+ require 'uaeds/dsml'
5
+ require 'uaeds/dsml_person'
6
+
7
+ # Provided to ease testing of applications using DSML
8
+ module Uaeds
9
+ class MockEdsDSML < EdsDSML
10
+
11
+
12
+ def initialize
13
+ @mock_overrides = {}
14
+ end
15
+
16
+ def self.eds_endpoint=(endpoint=nil)
17
+ end
18
+
19
+ def self.eds_endpoint
20
+ end
21
+
22
+ def set_mock_overrides(dict)
23
+ @mock_overrides = dict
24
+ end
25
+
26
+ private
27
+
28
+ def open_person(identifier)
29
+ MockDSMLPerson.new(generate_attributes(identifier))
30
+ end
31
+
32
+ def generate_attributes(identifier)
33
+ # I'm sure there's a more elegant way to write this, but it's already written.
34
+ return {
35
+ :uid => @mock_overrides[:uid] || "mockuser#{identifier}", # netid
36
+ :uaId => @mock_overrides[:uaId] || ('%012i' % identifier), # 12 digits
37
+ :isoNumber => @mock_overrides[:isoNumber] || ('%016i' % identifier), # cat card, 16 digits
38
+ :emplId => @mock_overrides[:emplid] || ('%08i' % identifier), # also SID, 8 digit
39
+ :cn => @mock_overrides[:cn] || "mock user #{identifier}", # complete name
40
+ :givenName => @mock_overrides[:givenName] || "mock", # First + initial
41
+ :sn => @mock_overrides[:sn] || "user #{identifier}", # surname/last name
42
+ :mail => @mock_overrides[:mail] || "mockuser#{identifier}@example.com", # email
43
+ :eduPersonPrimaryAffiliation => @mock_overrides[:eduPersonPrimaryAffiliation] || "staff", # staff, student, member, etc.
44
+ :employeeTitle => @mock_overrides[:employeeTitle] || "Test Robot",
45
+ :employeePrimaryDept => @mock_overrides[:employeePrimaryDept] || "0000",
46
+ :employeePrimaryDeptName => @mock_overrides[:employeePrimaryDeptName] || "Robot Wing"
47
+ }
48
+ end
49
+
50
+ end
51
+
52
+ class MockDSMLPerson < DSMLPerson
53
+
54
+ def initialize(data={})
55
+ @xml = data
56
+ @value_h = {}
57
+ end
58
+
59
+ def get_xml_attr(attr)
60
+ return @xml[attr]
61
+ end
62
+ end
63
+
64
+ end
65
+
@@ -1,3 +1,3 @@
1
1
  module Uaeds
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,46 @@
1
+ require 'uaeds/mock_eds'
2
+
3
+
4
+ module Uaeds
5
+
6
+ describe MockEdsDSML, MockDSMLPerson do
7
+
8
+ describe 'MockEdsDSML' do
9
+ let(:eds){ MockEdsDSML.instance }
10
+
11
+ it 'provides an mock instance' do
12
+ expect(eds).to be_an_instance_of MockEdsDSML
13
+ end
14
+ end
15
+
16
+ describe 'MockEdsDSML can retrieve a mock person' do
17
+ before{
18
+ @test_id = 1
19
+ }
20
+ let(:person){ MockEdsDSML.instance.person_by_uaid(@test_id) }
21
+
22
+ it 'provides a mock person' do
23
+ expect(person).to be_an_instance_of MockDSMLPerson
24
+ expect(person.uaid).to eq('%012i' % @test_id)
25
+ expect(person.first_name).to eq('mock')
26
+ end
27
+ end
28
+
29
+ describe 'can override default mock values' do
30
+ before{
31
+ @test_id = 1
32
+ MockEdsDSML.instance.set_mock_overrides({:givenName => 'Larry'})
33
+ }
34
+ let(:person){ MockEdsDSML.instance.person_by_uaid(@test_id) }
35
+
36
+ it 'overrode property' do
37
+ expect(person).to be_an_instance_of MockDSMLPerson
38
+ expect(person.uaid).to eq('%012i' % @test_id)
39
+ expect(person.first_name).to eq('Larry')
40
+ end
41
+ end
42
+
43
+ end
44
+ end
45
+
46
+
@@ -19,10 +19,10 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency 'bundler', "~> 1.3"
22
- spec.add_development_dependency 'rake'
22
+ spec.add_development_dependency 'rake', "~> 10.1"
23
23
  spec.add_development_dependency 'rspec', "~> 2.6"
24
- spec.add_development_dependency 'highline'
25
- spec.add_runtime_dependency 'nokogiri'
26
- spec.add_runtime_dependency 'json'
24
+ spec.add_development_dependency 'highline', "~> 1.6"
25
+ spec.add_runtime_dependency 'nokogiri', "~> 1.6"
26
+ spec.add_runtime_dependency 'json', "~> 1.8"
27
27
 
28
28
  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.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - dgsan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-14 00:00:00.000000000 Z
11
+ date: 2014-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '10.1'
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: '0'
40
+ version: '10.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -56,44 +56,44 @@ dependencies:
56
56
  name: highline
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '1.6'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '1.6'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: nokogiri
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '1.6'
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: '0'
82
+ version: '1.6'
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: '0'
89
+ version: '1.8'
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: '0'
96
+ version: '1.8'
97
97
  description: Tool for working with UA's 'Enterprise Directory Service,' an XML-based
98
98
  (DSML) (or JSON-based) lookup service.
99
99
  email:
@@ -115,7 +115,9 @@ files:
115
115
  - lib/uaeds/eds_dsml.rb
116
116
  - lib/uaeds/eds_json.rb
117
117
  - lib/uaeds/json_person.rb
118
+ - lib/uaeds/mock_eds.rb
118
119
  - lib/uaeds/version.rb
120
+ - spec/mock_uaeds_spec.rb
119
121
  - spec/spec_helper.rb
120
122
  - spec/uaeds_spec.rb
121
123
  - uaeds.gemspec
@@ -144,5 +146,6 @@ signing_key:
144
146
  specification_version: 4
145
147
  summary: Tool for working with UA EDS
146
148
  test_files:
149
+ - spec/mock_uaeds_spec.rb
147
150
  - spec/spec_helper.rb
148
151
  - spec/uaeds_spec.rb