jgrouper 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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