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 CHANGED
@@ -11,6 +11,7 @@ doc/
11
11
  html/
12
12
  lib/bundler/man
13
13
  logs/
14
+ out.txt
14
15
  pkg
15
16
  rdoc
16
17
  spec/reports
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.2
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
- * Grant stem privileges
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
- JGrouper v0.0.3
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
- * Document
27
- * Release v0.0.3
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
- def initialize(stem)
9
- @stem = stem
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 = self.new StemFinder.findRootStem( GrouperSession.startRootSession ) # XXX How to handle sessions?
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 name getter.
38
+ # Return JSON representation of JGrouper::Stem instance.
35
39
  #
36
- def name; @stem.getName; end
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 UUID getter
50
+ # Return String representation of JGrouper::Stem instance.
39
51
  #
40
- def uuid; @stem.getUuid; end
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
@@ -4,43 +4,70 @@ module JGrouper #: :nodoc:
4
4
  #
5
5
  class Subject
6
6
 
7
- def initialize(subject)
8
- @subject = subject
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
- subj = self.new SubjectFinder.findRootSubject
20
- yield subj if block_given?
21
- subj
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
- def name; @subject.getName; end
39
+ # Return JSON representation of JGrouper::Subject instance.
36
40
  #
37
- # Subject source identifier getter.
38
- #
39
- def source; @subject.sourceId; end
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
- # Subject type name getter.
52
+ # Return String representation of JGrouper::Subject instance.
42
53
  #
43
- def type; @subject.typeName; end
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
@@ -1,3 +1,3 @@
1
1
  module JGrouper
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
data/lib/jgrouper.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  require 'java'
2
- require 'jgrouper/stem'
3
- require 'jgrouper/subject'
4
- require 'jgrouper/version'
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| puts "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.1
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-02 00:00:00.000000000 Z
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