jgrouper 0.0.1 → 0.0.2
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.
- data/.gitignore +1 -0
- data/README.rdoc +24 -1
- data/Rakefile +6 -0
- data/TODO.md +37 -9
- data/jgrouper.gemspec +4 -0
- data/lib/jgrouper/group_type.rb +101 -0
- data/lib/jgrouper/stem.rb +43 -16
- data/lib/jgrouper/subject.rb +48 -21
- data/lib/jgrouper/version.rb +1 -1
- data/lib/jgrouper.rb +35 -5
- data/test/helper.rb +16 -0
- data/test/test_group_type.rb +92 -0
- data/test/test_stem.rb +49 -0
- data/test/test_subject.rb +51 -0
- metadata +60 -9
data/.gitignore
CHANGED
data/README.rdoc
CHANGED
@@ -7,6 +7,8 @@
|
|
7
7
|
# Set path to your Grouper API installation
|
8
8
|
JGrouper.home = '/path/to/your/grouper/api/installation/directory'
|
9
9
|
|
10
|
+
=== Subjects
|
11
|
+
|
10
12
|
# Find root subject
|
11
13
|
JGrouper::Subject.root_subject do |subject|
|
12
14
|
subject.id # Subject identifier
|
@@ -15,6 +17,8 @@
|
|
15
17
|
subject.type # Subject type name
|
16
18
|
end
|
17
19
|
|
20
|
+
=== Stems
|
21
|
+
|
18
22
|
# Find root stem
|
19
23
|
JGrouper::Stem.root_stem do |stem|
|
20
24
|
stem.display_name # Stem display name
|
@@ -22,6 +26,25 @@
|
|
22
26
|
stem.uuid # Stem UUID
|
23
27
|
end
|
24
28
|
|
29
|
+
=== Group Types
|
30
|
+
|
31
|
+
# Create group type
|
32
|
+
JGrouper::GroupType.create(name) do |group_type|
|
33
|
+
group_type.name # Group type name
|
34
|
+
group_type.uuid # Group type uuid
|
35
|
+
end
|
36
|
+
|
37
|
+
# Find all group types
|
38
|
+
group_types = JGrouper::GroupType.all do |group_type|
|
39
|
+
...
|
40
|
+
end
|
41
|
+
|
42
|
+
# Find group type
|
43
|
+
JGrouper::GroupType.find(name)
|
44
|
+
|
45
|
+
# Delete group type
|
46
|
+
JGrouper::GroupType.find(name).delete
|
47
|
+
|
25
48
|
== Installation
|
26
49
|
|
27
50
|
Add this line to your application's Gemfile:
|
@@ -54,5 +77,5 @@ https://github.com/blairc/jgrouper
|
|
54
77
|
|
55
78
|
== See Also
|
56
79
|
|
57
|
-
http://grouper.internet2.edu
|
80
|
+
https://github.com/blairc/jgrouper-server, http://grouper.internet2.edu
|
58
81
|
|
data/Rakefile
CHANGED
@@ -10,6 +10,12 @@ require 'rdoc/task'
|
|
10
10
|
|
11
11
|
task :default => :test
|
12
12
|
|
13
|
+
Rake::TestTask.new do |t|
|
14
|
+
t.libs << 'test'
|
15
|
+
t.test_files = FileList['test/test*.rb']
|
16
|
+
t.verbose = true
|
17
|
+
end
|
18
|
+
|
13
19
|
RDoc::Readme::RakeTask.new 'lib/jgrouper.rb', 'README.rdoc'
|
14
20
|
|
15
21
|
RDoc::Task.new do |rdoc|
|
data/TODO.md
CHANGED
@@ -1,33 +1,61 @@
|
|
1
1
|
JGrouper To Do
|
2
2
|
==============
|
3
3
|
|
4
|
-
JGrouper v0.0.
|
4
|
+
JGrouper v0.0.3
|
5
|
+
---------------
|
6
|
+
* Implement *JGrouper::Subject.sources* (using *edu.internet2.middleware.subject.provider.SourceManager*)
|
7
|
+
* Implement *JGrouper::Subject.source(id)* (using *edu.internet2.middleware.subject.provider.SourceManager*)
|
8
|
+
* Implement *JGrouper::Subject::Source#to_json* (for "jgrouper-server")
|
9
|
+
|
10
|
+
|
11
|
+
JJGrouper v0.0.4
|
5
12
|
---------------
|
6
13
|
* Add child stem
|
7
14
|
* Get child stems
|
8
15
|
* Delete child stem
|
9
|
-
*
|
10
|
-
* Get stem privileges
|
11
|
-
* Revoke stem privileges
|
12
|
-
* Document
|
13
|
-
* Release v0.0.2
|
16
|
+
* Update *JGrouper::Stem#to_json* as appropriate
|
14
17
|
|
15
|
-
|
18
|
+
|
19
|
+
JGrouper v0.0.5
|
16
20
|
---------------
|
17
21
|
* Add child group
|
18
22
|
* Get child groups
|
19
23
|
* Delete child group
|
24
|
+
* Update *JGrouper::Group#to_json* as appropriate
|
25
|
+
|
26
|
+
|
27
|
+
JGrouper v0.0.6
|
28
|
+
---------------
|
20
29
|
* Add group member
|
21
30
|
* Get group members
|
22
31
|
* Remove group member
|
32
|
+
* Update *JGrouper::Group#to_json* as appropriate
|
33
|
+
|
34
|
+
|
35
|
+
JGrouper v0.0.7
|
36
|
+
---------------
|
37
|
+
* Grant stem privileges
|
38
|
+
* Get stem privileges
|
39
|
+
* Revoke stem privileges
|
40
|
+
* Update *JGrouper::Stem#to_json* as appropriate
|
41
|
+
|
42
|
+
|
43
|
+
JGrouper v0.0.8
|
44
|
+
---------------
|
23
45
|
* Grant group privileges
|
24
46
|
* Get group privileges
|
25
47
|
* Revoke group privileges
|
26
|
-
*
|
27
|
-
|
48
|
+
* Update *JGrouper::Group#to_json* as appropriate
|
49
|
+
|
28
50
|
|
29
51
|
Future
|
30
52
|
------
|
53
|
+
* Create command line executable (and remove embedded code from *lib/jgrouper.rb*)
|
31
54
|
* Add privilege to stem and all children
|
32
55
|
* Add privilege to all groups beneath a stem
|
56
|
+
* JGrouper::TestCase
|
57
|
+
* JGrouper::Subject::TestCase
|
58
|
+
* JGrouper::Subject::TestCase
|
59
|
+
|
60
|
+
# vim: syntax=markdown textwidth=0
|
33
61
|
|
data/jgrouper.gemspec
CHANGED
@@ -15,8 +15,12 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ['lib']
|
16
16
|
gem.version = JGrouper::VERSION
|
17
17
|
|
18
|
+
gem.add_dependency 'json'
|
19
|
+
|
20
|
+
gem.add_development_dependency 'mocha'
|
18
21
|
gem.add_development_dependency 'rake'
|
19
22
|
gem.add_development_dependency 'rdoc'
|
20
23
|
gem.add_development_dependency 'rdoc-readme', '~> 0.1.2'
|
24
|
+
gem.add_development_dependency 'simplecov'
|
21
25
|
end
|
22
26
|
|
@@ -0,0 +1,101 @@
|
|
1
|
+
module JGrouper # :nodoc:
|
2
|
+
#
|
3
|
+
# = JGrouper::GroupType - A Grouper group type
|
4
|
+
#
|
5
|
+
class GroupType
|
6
|
+
|
7
|
+
attr_accessor :name, :uuid
|
8
|
+
attr_reader :error
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@grouper_group_type = nil
|
12
|
+
yield self if block_given?
|
13
|
+
self
|
14
|
+
end
|
15
|
+
|
16
|
+
#
|
17
|
+
# Find all group types.
|
18
|
+
#
|
19
|
+
def self.all
|
20
|
+
group_types = Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.findAll.collect { |gt| from_grouper gt }
|
21
|
+
group_types.each { |_| yield _ } if block_given?
|
22
|
+
group_types
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# Create group type.
|
27
|
+
#
|
28
|
+
# group_type = JGrouper::GroupType.create name
|
29
|
+
#
|
30
|
+
def self.create(name)
|
31
|
+
group_type = from_grouper Java::EduInternet2MiddlewareGrouper::GroupType.createType( GrouperSession.startRootSession, name )
|
32
|
+
yield group_type if block_given?
|
33
|
+
group_type
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
# Delete group type. Sets +error+ and returns +false+ on failure.
|
38
|
+
#
|
39
|
+
def delete
|
40
|
+
begin
|
41
|
+
@grouper_group_type.delete GrouperSession.startRootSession # XXX How to handle sessions?
|
42
|
+
return true
|
43
|
+
rescue Exception => e
|
44
|
+
@error = e
|
45
|
+
end
|
46
|
+
false
|
47
|
+
end
|
48
|
+
|
49
|
+
#
|
50
|
+
# Find a group type by name.
|
51
|
+
#
|
52
|
+
def self.find(name)
|
53
|
+
group_type = from_grouper Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.find(name, false)
|
54
|
+
yield group_type if block_given?
|
55
|
+
group_type
|
56
|
+
end
|
57
|
+
|
58
|
+
#
|
59
|
+
# Generate JGrouper::GroupType instance from JSON by calling +JSON.parse(json_string)+
|
60
|
+
#
|
61
|
+
def self.json_create(json)
|
62
|
+
new do |group_type|
|
63
|
+
group_type.name = json['name']
|
64
|
+
group_type.uuid = json['uuid']
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
#
|
69
|
+
# Return JSON representation of JGrouper::GroupType instance.
|
70
|
+
#
|
71
|
+
def to_json
|
72
|
+
{
|
73
|
+
:json_class => self.class.name,
|
74
|
+
:name => self.name,
|
75
|
+
:uuid => self.uuid
|
76
|
+
}.to_json
|
77
|
+
end
|
78
|
+
|
79
|
+
#
|
80
|
+
# Return String representation of JGrouper::GroupType instance.
|
81
|
+
#
|
82
|
+
def to_s
|
83
|
+
%w( name uuid ).collect { |k| "#{k}=#{ self.send(k) }" }.join(' | ')
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
private
|
88
|
+
|
89
|
+
def self.from_grouper(grouper)
|
90
|
+
return nil if grouper.nil?
|
91
|
+
new do |group_type|
|
92
|
+
group_type.instance_variable_set :@grouper_group_type, grouper # XXX Is this even needed?
|
93
|
+
|
94
|
+
group_type.name = grouper.getName
|
95
|
+
group_type.uuid = grouper.getUuid
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
data/lib/jgrouper/stem.rb
CHANGED
@@ -1,43 +1,70 @@
|
|
1
|
-
|
2
1
|
module JGrouper # :nodoc:
|
3
2
|
#
|
4
3
|
# = JGrouper::Stem - A Grouper stem
|
5
4
|
#
|
6
5
|
class Stem
|
7
6
|
|
8
|
-
|
9
|
-
|
7
|
+
attr_accessor :display_name, :name, :uuid
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@grouper_stem = nil
|
10
11
|
yield self if block_given?
|
11
12
|
self
|
12
13
|
end
|
13
14
|
|
15
|
+
#
|
16
|
+
# Generate JGrouper::Stem instance from JSON by calling +JSON.parse(json_string)+
|
17
|
+
#
|
18
|
+
def self.json_create(json)
|
19
|
+
new do |stem|
|
20
|
+
stem.display_name = json['display_name']
|
21
|
+
stem.name = json['name']
|
22
|
+
stem.uuid = json['uuid']
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
14
26
|
#
|
15
27
|
# Return root stem.
|
16
28
|
#
|
17
29
|
# root_stem = JGrouper::Stem.root_stem
|
18
30
|
#
|
19
31
|
def self.root_stem
|
20
|
-
stem =
|
32
|
+
stem = from_grouper StemFinder.findRootStem( GrouperSession.startRootSession ) # XXX How to handle sessions?
|
21
33
|
yield stem if block_given?
|
22
34
|
stem
|
23
35
|
end
|
24
36
|
|
25
|
-
def to_s
|
26
|
-
%w( name display_name uuid ).collect { |k| "#{k}=#{ self.send(k) }" }.join(' | ')
|
27
|
-
end
|
28
|
-
|
29
|
-
#
|
30
|
-
# Stem display name getter.
|
31
|
-
#
|
32
|
-
def display_name; @stem.getDisplayName; end
|
33
37
|
#
|
34
|
-
# Stem
|
38
|
+
# Return JSON representation of JGrouper::Stem instance.
|
35
39
|
#
|
36
|
-
def
|
40
|
+
def to_json
|
41
|
+
{
|
42
|
+
:json_class => self.class.name,
|
43
|
+
:display_name => self.display_name,
|
44
|
+
:name => self.name,
|
45
|
+
:uuid => self.uuid
|
46
|
+
}.to_json
|
47
|
+
end
|
48
|
+
|
37
49
|
#
|
38
|
-
# Stem
|
50
|
+
# Return String representation of JGrouper::Stem instance.
|
39
51
|
#
|
40
|
-
def
|
52
|
+
def to_s
|
53
|
+
%w( name display_name uuid ).collect { |k| "#{k}=#{ self.send(k) }" }.join(' | ')
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def self.from_grouper(grouper)
|
60
|
+
new do |stem|
|
61
|
+
stem.instance_variable_set :@grouper_stem, grouper # XXX Is this even needed?
|
62
|
+
|
63
|
+
stem.display_name = grouper.getDisplayName
|
64
|
+
stem.name = grouper.getName
|
65
|
+
stem.uuid = grouper.getUuid
|
66
|
+
end
|
67
|
+
end
|
41
68
|
|
42
69
|
end
|
43
70
|
end
|
data/lib/jgrouper/subject.rb
CHANGED
@@ -4,43 +4,70 @@ module JGrouper #: :nodoc:
|
|
4
4
|
#
|
5
5
|
class Subject
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
attr_accessor :id, :name, :source, :type
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@grouper_subject = nil
|
9
11
|
yield self if block_given?
|
10
12
|
self
|
11
13
|
end
|
12
14
|
|
15
|
+
#
|
16
|
+
# Generate JGrouper::Subject instance from JSON by calling +JSON.parse(json_string)+
|
17
|
+
#
|
18
|
+
def self.json_create(json)
|
19
|
+
new do |subject|
|
20
|
+
subject.id = json['id']
|
21
|
+
subject.name = json['name']
|
22
|
+
subject.source = json['source']
|
23
|
+
subject.type = json['type']
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
13
27
|
#
|
14
28
|
# Return root subject.
|
15
29
|
#
|
16
30
|
# root_subject = JGrouper::Subject.root_subject
|
17
31
|
#
|
18
32
|
def self.root_subject
|
19
|
-
|
20
|
-
yield
|
21
|
-
|
33
|
+
subject = from_grouper SubjectFinder.findRootSubject
|
34
|
+
yield subject if block_given?
|
35
|
+
subject
|
22
36
|
end
|
23
37
|
|
24
|
-
def to_s
|
25
|
-
%w( id name type source ).collect { |k| "#{k}=#{ self.send(k) }" }.join(' | ')
|
26
|
-
end
|
27
|
-
|
28
|
-
#
|
29
|
-
# Subject identifier getter.
|
30
|
-
#
|
31
|
-
def id; @subject.getId; end
|
32
|
-
#
|
33
|
-
# Subject name getter.
|
34
38
|
#
|
35
|
-
|
39
|
+
# Return JSON representation of JGrouper::Subject instance.
|
36
40
|
#
|
37
|
-
|
38
|
-
|
39
|
-
|
41
|
+
def to_json
|
42
|
+
{
|
43
|
+
:json_class => self.class.name,
|
44
|
+
:id => self.id,
|
45
|
+
:name => self.name,
|
46
|
+
:source => self.source,
|
47
|
+
:type => self.type
|
48
|
+
}.to_json
|
49
|
+
end
|
50
|
+
|
40
51
|
#
|
41
|
-
#
|
52
|
+
# Return String representation of JGrouper::Subject instance.
|
42
53
|
#
|
43
|
-
def
|
54
|
+
def to_s
|
55
|
+
%w( id name type source ).collect { |k| "#{k}=#{ self.send(k) }" }.join(' | ')
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def self.from_grouper(grouper)
|
62
|
+
new do |subject|
|
63
|
+
subject.instance_variable_set :@grouper_subject, grouper # XXX Is this even needed?
|
64
|
+
|
65
|
+
subject.id = grouper.getId
|
66
|
+
subject.name = grouper.getName
|
67
|
+
subject.source = grouper.sourceId
|
68
|
+
subject.type = grouper.typeName
|
69
|
+
end
|
70
|
+
end
|
44
71
|
|
45
72
|
end
|
46
73
|
end
|
data/lib/jgrouper/version.rb
CHANGED
data/lib/jgrouper.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
require 'java'
|
2
|
-
require '
|
3
|
-
|
4
|
-
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
require_relative 'jgrouper/group_type'
|
5
|
+
require_relative 'jgrouper/stem'
|
6
|
+
require_relative 'jgrouper/subject'
|
7
|
+
require_relative 'jgrouper/version'
|
5
8
|
|
6
9
|
|
7
10
|
#
|
@@ -14,6 +17,8 @@ require 'jgrouper/version'
|
|
14
17
|
# # Set path to your Grouper API installation
|
15
18
|
# JGrouper.home = '/path/to/your/grouper/api/installation/directory'
|
16
19
|
#
|
20
|
+
# === Subjects
|
21
|
+
#
|
17
22
|
# # Find root subject
|
18
23
|
# JGrouper::Subject.root_subject do |subject|
|
19
24
|
# subject.id # Subject identifier
|
@@ -22,6 +27,8 @@ require 'jgrouper/version'
|
|
22
27
|
# subject.type # Subject type name
|
23
28
|
# end
|
24
29
|
#
|
30
|
+
# === Stems
|
31
|
+
#
|
25
32
|
# # Find root stem
|
26
33
|
# JGrouper::Stem.root_stem do |stem|
|
27
34
|
# stem.display_name # Stem display name
|
@@ -29,6 +36,25 @@ require 'jgrouper/version'
|
|
29
36
|
# stem.uuid # Stem UUID
|
30
37
|
# end
|
31
38
|
#
|
39
|
+
# === Group Types
|
40
|
+
#
|
41
|
+
# # Create group type
|
42
|
+
# JGrouper::GroupType.create(name) do |group_type|
|
43
|
+
# group_type.name # Group type name
|
44
|
+
# group_type.uuid # Group type uuid
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# # Find all group types
|
48
|
+
# group_types = JGrouper::GroupType.all do |group_type|
|
49
|
+
# ...
|
50
|
+
# end
|
51
|
+
#
|
52
|
+
# # Find group type
|
53
|
+
# JGrouper::GroupType.find(name)
|
54
|
+
#
|
55
|
+
# # Delete group type
|
56
|
+
# JGrouper::GroupType.find(name).delete
|
57
|
+
#
|
32
58
|
# == Installation
|
33
59
|
#
|
34
60
|
# Add this line to your application's Gemfile:
|
@@ -61,7 +87,7 @@ require 'jgrouper/version'
|
|
61
87
|
#
|
62
88
|
# == See Also
|
63
89
|
#
|
64
|
-
# http://grouper.internet2.edu
|
90
|
+
# https://github.com/blairc/jgrouper-server, http://grouper.internet2.edu
|
65
91
|
#
|
66
92
|
module JGrouper
|
67
93
|
|
@@ -76,6 +102,10 @@ module JGrouper
|
|
76
102
|
$CLASSPATH << File.join( path, 'conf' )
|
77
103
|
$CLASSPATH << File.join( path, 'dist', 'lib', 'grouper.jar' )
|
78
104
|
|
105
|
+
# TODO Can I eliminate these if I refer to everything by full path?
|
106
|
+
# Or maybe something like:
|
107
|
+
# include_class 'java.lang.String' { |package, name| 'JString' }
|
108
|
+
# Test the above w/ GroupType?
|
79
109
|
%w( edu.internet2.middleware.subject.SubjectNotFoundException
|
80
110
|
edu.internet2.middleware.grouper.GrouperSession
|
81
111
|
edu.internet2.middleware.grouper.SubjectFinder
|
@@ -90,6 +120,6 @@ end
|
|
90
120
|
if __FILE__ == $0
|
91
121
|
JGrouper.home ENV['GROUPER_HOME'] if ENV['GROUPER_HOME']
|
92
122
|
JGrouper::Subject.root_subject { |subject| puts "root_subject => #{subject}" }
|
93
|
-
JGrouper::Stem.root_stem { |stem|
|
123
|
+
JGrouper::Stem.root_stem { |stem| puts "root_stem => #{stem}" }
|
94
124
|
end
|
95
125
|
|
data/test/helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# TODO JGrouper::TestCase
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
require 'mocha'
|
7
|
+
require 'ostruct'
|
8
|
+
|
9
|
+
require_relative '../lib/jgrouper'
|
10
|
+
|
11
|
+
require 'simplecov'
|
12
|
+
SimpleCov.start
|
13
|
+
|
14
|
+
raise RuntimeError, "ENV[GROUPER_HOME'] must be set!" unless ENV['GROUPER_HOME']
|
15
|
+
JGrouper.home ENV['GROUPER_HOME']
|
16
|
+
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
|
6
|
+
# TODO JGrouper::GroupType::TestCase
|
7
|
+
class TestGroupType < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@json = { 'json_class' => JGrouper::GroupType,
|
11
|
+
'name' => 'jgrouper',
|
12
|
+
'uuid' => 'some-fake-uuid'
|
13
|
+
}.to_json
|
14
|
+
@type = OpenStruct.new :getName => 'jgrouper',
|
15
|
+
:getUuid => 'some-fake-uuid'
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
def test_mocked_create_group_type
|
20
|
+
Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
|
21
|
+
Java::EduInternet2MiddlewareGrouper::GroupType.expects(:createType).returns @type
|
22
|
+
JGrouper::GroupType.create('jgrouper') do |group_type|
|
23
|
+
assert_not_nil group_type
|
24
|
+
assert group_type.kind_of? JGrouper::GroupType
|
25
|
+
assert_equal 'jgrouper', group_type.name
|
26
|
+
assert_equal 'some-fake-uuid', group_type.uuid
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_mocked_group_type_to_json
|
31
|
+
Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
|
32
|
+
Java::EduInternet2MiddlewareGrouper::GroupType.expects(:createType).returns @type
|
33
|
+
assert_equal @json, JGrouper::GroupType.create('jgrouper').to_json
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_group_type_from_json
|
37
|
+
group_type = JSON.parse @json
|
38
|
+
assert_not_nil group_type
|
39
|
+
assert group_type.kind_of? JGrouper::GroupType
|
40
|
+
assert_equal 'jgrouper', group_type.name
|
41
|
+
assert_equal 'some-fake-uuid', group_type.uuid
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_mocked_find_all
|
45
|
+
Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:findAll).returns [ @type ]
|
46
|
+
group_types = JGrouper::GroupType.all do |group_type|
|
47
|
+
assert_not_nil group_type
|
48
|
+
assert group_type.kind_of? JGrouper::GroupType
|
49
|
+
assert_equal 'jgrouper', group_type.name
|
50
|
+
assert_equal 'some-fake-uuid', group_type.uuid
|
51
|
+
end
|
52
|
+
assert_not_nil group_types
|
53
|
+
assert_not_nil group_types.first
|
54
|
+
assert group_types.first.kind_of? JGrouper::GroupType
|
55
|
+
assert_equal 'jgrouper', group_types.first.name
|
56
|
+
assert_equal 'some-fake-uuid', group_types.first.uuid
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_mocked_find_by_name
|
60
|
+
Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns @type
|
61
|
+
JGrouper::GroupType.find('base') do |group_type|
|
62
|
+
assert_not_nil group_type
|
63
|
+
assert group_type.kind_of? JGrouper::GroupType
|
64
|
+
assert_equal 'jgrouper', group_type.name
|
65
|
+
assert_equal 'some-fake-uuid', group_type.uuid
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_mocked_find_by_name_failure
|
70
|
+
Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns nil
|
71
|
+
assert_nil JGrouper::GroupType.find('jgrouper')
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_mocked_delete
|
75
|
+
Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
|
76
|
+
Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns @type
|
77
|
+
@type.expects(:delete).returns(nil)
|
78
|
+
assert JGrouper::GroupType.find('jgrouper').delete
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_mocked_delete_failure
|
82
|
+
Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
|
83
|
+
Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns @type
|
84
|
+
@type.expects(:delete).raises(Exception, 'Mocked Exception')
|
85
|
+
|
86
|
+
group_type = JGrouper::GroupType.find('jgrouper')
|
87
|
+
assert_equal false, group_type.delete
|
88
|
+
assert_equal 'Mocked Exception', group_type.error.to_s
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
data/test/test_stem.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
|
6
|
+
# TODO JGrouper::Stem::TestCase
|
7
|
+
class TestStem < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@json = { 'json_class' => JGrouper::Stem,
|
11
|
+
'display_name' => '',
|
12
|
+
'name' => '',
|
13
|
+
'uuid' => 'some-fake-uuid'
|
14
|
+
}.to_json
|
15
|
+
@root = OpenStruct.new :getDisplayName => '',
|
16
|
+
:getName => '',
|
17
|
+
:getUuid => 'some-fake-uuid'
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def test_mocked_find_root_stem
|
22
|
+
Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
|
23
|
+
Java::EduInternet2MiddlewareGrouper::StemFinder.expects(:findRootStem).returns @root
|
24
|
+
JGrouper::Stem.root_stem do |stem|
|
25
|
+
assert_not_nil stem
|
26
|
+
assert stem.kind_of? JGrouper::Stem
|
27
|
+
assert_equal '', stem.display_name
|
28
|
+
assert_equal '', stem.name
|
29
|
+
assert_equal 'some-fake-uuid', stem.uuid
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_mocked_stem_to_json
|
34
|
+
Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
|
35
|
+
Java::EduInternet2MiddlewareGrouper::StemFinder.expects(:findRootStem).returns @root
|
36
|
+
assert_equal @json, JGrouper::Stem.root_stem.to_json
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_stem_from_json
|
40
|
+
stem = JSON.parse @json
|
41
|
+
assert_not_nil stem
|
42
|
+
assert stem.kind_of? JGrouper::Stem
|
43
|
+
assert_equal '', stem.display_name
|
44
|
+
assert_equal '', stem.name
|
45
|
+
assert_equal 'some-fake-uuid', stem.uuid
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative 'helper'
|
4
|
+
|
5
|
+
|
6
|
+
# TODO JGrouper::Subject::TestCase
|
7
|
+
class TestSubject < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@json = { 'json_class' => JGrouper::Subject,
|
11
|
+
'id' => 'GrouperSystem',
|
12
|
+
'name' => 'GrouperSysAdmin',
|
13
|
+
'source' => 'g:isa',
|
14
|
+
'type' => 'application'
|
15
|
+
}.to_json
|
16
|
+
@root = OpenStruct.new :getId => 'GrouperSystem',
|
17
|
+
:getName => 'GrouperSysAdmin',
|
18
|
+
:sourceId => 'g:isa',
|
19
|
+
:typeName => 'application'
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def test_mocked_find_root_subject
|
24
|
+
Java::EduInternet2MiddlewareGrouper::SubjectFinder.expects(:findRootSubject).returns @root
|
25
|
+
JGrouper::Subject.root_subject do |subject|
|
26
|
+
assert_not_nil subject
|
27
|
+
assert subject.kind_of? JGrouper::Subject
|
28
|
+
assert_equal 'GrouperSystem', subject.id
|
29
|
+
assert_equal 'GrouperSysAdmin', subject.name
|
30
|
+
assert_equal 'g:isa', subject.source
|
31
|
+
assert_equal 'application', subject.type
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_mocked_subject_to_json
|
36
|
+
Java::EduInternet2MiddlewareGrouper::SubjectFinder.expects(:findRootSubject).returns @root
|
37
|
+
assert_equal @json, JGrouper::Subject.root_subject.to_json
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_subject_from_json
|
41
|
+
subject = JSON.parse @json
|
42
|
+
assert_not_nil subject
|
43
|
+
assert subject.kind_of? JGrouper::Subject
|
44
|
+
assert_equal 'GrouperSystem', subject.id
|
45
|
+
assert_equal 'GrouperSysAdmin', subject.name
|
46
|
+
assert_equal 'g:isa', subject.source
|
47
|
+
assert_equal 'application', subject.type
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jgrouper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,40 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: json
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: mocha
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
14
46
|
- !ruby/object:Gem::Dependency
|
15
47
|
name: rake
|
16
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,6 +91,22 @@ dependencies:
|
|
59
91
|
- - ~>
|
60
92
|
- !ruby/object:Gem::Version
|
61
93
|
version: 0.1.2
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: simplecov
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
62
110
|
description: JRuby wrapper around the Internet2 Grouper API
|
63
111
|
email:
|
64
112
|
- blair.christensen@gmail.com
|
@@ -74,9 +122,14 @@ files:
|
|
74
122
|
- TODO.md
|
75
123
|
- jgrouper.gemspec
|
76
124
|
- lib/jgrouper.rb
|
125
|
+
- lib/jgrouper/group_type.rb
|
77
126
|
- lib/jgrouper/stem.rb
|
78
127
|
- lib/jgrouper/subject.rb
|
79
128
|
- lib/jgrouper/version.rb
|
129
|
+
- test/helper.rb
|
130
|
+
- test/test_group_type.rb
|
131
|
+
- test/test_stem.rb
|
132
|
+
- test/test_subject.rb
|
80
133
|
homepage: https://github.com/blairc/jgrouper
|
81
134
|
licenses: []
|
82
135
|
post_install_message:
|
@@ -89,22 +142,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
142
|
- - ! '>='
|
90
143
|
- !ruby/object:Gem::Version
|
91
144
|
version: '0'
|
92
|
-
segments:
|
93
|
-
- 0
|
94
|
-
hash: 3970965628382223639
|
95
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
146
|
none: false
|
97
147
|
requirements:
|
98
148
|
- - ! '>='
|
99
149
|
- !ruby/object:Gem::Version
|
100
150
|
version: '0'
|
101
|
-
segments:
|
102
|
-
- 0
|
103
|
-
hash: 3970965628382223639
|
104
151
|
requirements: []
|
105
152
|
rubyforge_project:
|
106
153
|
rubygems_version: 1.8.23
|
107
154
|
signing_key:
|
108
155
|
specification_version: 3
|
109
156
|
summary: JRuby wrapper around the Internet2 Grouper API
|
110
|
-
test_files:
|
157
|
+
test_files:
|
158
|
+
- test/helper.rb
|
159
|
+
- test/test_group_type.rb
|
160
|
+
- test/test_stem.rb
|
161
|
+
- test/test_subject.rb
|