jgrouper 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY.md CHANGED
@@ -1,8 +1,19 @@
1
1
  JGrouper History
2
2
  ================
3
3
 
4
- JGrouper v0.0.4
5
- ---------------
4
+ 2012-11-20 JGrouper v0.0.5
5
+ --------------------------
6
+ * Add *JGrouper::Group#add_type*
7
+ * Add *JGrouper::Group#delete_type*
8
+ * Add *JGrouper::Group#method_missing*
9
+ * Add *JGrouper::Group#types*
10
+ * Add *JGrouper::GroupType#method_missing*
11
+ * Add *JGrouper::Stem#method_missing*
12
+ * Add *JGrouper::Subject#method_missing*
13
+ * Fix *JGrouper::Group* tests
14
+
15
+ 2012-10-04 JGrouper v0.0.4
16
+ --------------------------
6
17
  * Add *JGrouper::Group*
7
18
  * Add *JGrouper::Group.find*
8
19
  * Add *JGrouper::Group* support to *JGrouper::Shell*
data/README.rdoc CHANGED
@@ -5,25 +5,27 @@
5
5
  require 'jgrouper'
6
6
 
7
7
  # Set path to your Grouper API installation
8
- JGrouper.home = '/path/to/your/grouper/api/installation/directory'
8
+ JGrouper.home '/path/to/your/grouper/api/installation/directory'
9
9
 
10
10
  === Subjects
11
11
 
12
12
  # Find root subject
13
13
  JGrouper::Subject.root do |subject|
14
- subject.id # Subject identifier
15
- subject.name # Subject name
16
- subject.source # Subject source identifier
17
- subject.type # Subject type name
14
+ subject.id # Subject identifier
15
+ subject.name # Subject name
16
+ subject.source # Subject source identifier
17
+ subject.type # Subject type name
18
+ subject.getSource # Call native Subject API methods
18
19
  end
19
20
 
20
21
  === Stems
21
22
 
22
23
  # Find root stem
23
24
  JGrouper::Stem.root do |stem|
24
- stem.display_name # Stem display name
25
- stem.name # Stem name
26
- stem.uuid # Stem UUID
25
+ stem.display_name # Stem display name
26
+ stem.name # Stem name
27
+ stem.uuid # Stem UUID
28
+ stem.getChildGroups # Call native Grouper API methods
27
29
  end
28
30
 
29
31
  # Find by name
@@ -39,17 +41,22 @@
39
41
 
40
42
  # Find by name
41
43
  group = JGrouper::Group.find(name) do |group|
42
- group.display_name # Group display name
43
- group.name # Group name
44
- group.uuid # Group UUID
44
+ group.display_name # Group display name
45
+ group.name # Group name
46
+ group.types # Array of group type names
47
+ group.uuid # Group UUID
48
+ group.add_type 'group type' # Add group type
49
+ group.delete_type 'group_type' # Delete group type
50
+ group.getParentStem # Call native Grouper API methods
45
51
  end
46
52
 
47
53
  === Group Types
48
54
 
49
55
  # Create group type
50
56
  JGrouper::GroupType.create(name) do |group_type|
51
- group_type.name # Group type name
52
- group_type.uuid # Group type uuid
57
+ group_type.name # Group type name
58
+ group_type.uuid # Group type uuid
59
+ group_type.getFields # Call native Grouper API methods
53
60
  end
54
61
 
55
62
  # Find all group types
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ task :default => :test
12
12
 
13
13
  Rake::TestTask.new do |t|
14
14
  t.libs << 'test'
15
- t.test_files = FileList['test/test*.rb']
15
+ t.test_files = FileList['test/test_*.rb']
16
16
  t.verbose = true
17
17
  end
18
18
 
data/TODO.md CHANGED
@@ -1,50 +1,17 @@
1
1
  JGrouper To Do
2
2
  ==============
3
3
 
4
- JGrouper v0.0.4
5
- ---------------
6
- * Add *JGrouper::Group#types*
7
- * Add *JGrouper::Group#add_type*
4
+ Future
5
+ ------
6
+ * Fix *JGrouper::Stem* tests
7
+ * Set (select) *JGrouper::Stem* attributes
8
+ * List *JGrouper::Stem* privileges
9
+ * Grant *JGrouper::Stem* privileges
10
+ * Revoke *JGrouper::Stem* privileges
11
+ * Set (select) *JGrouper::Group* attributes
12
+ * Fix *JGrouper::GroupType* tests
13
+ * Fix *JGrouper::Subject* tests
8
14
  * Add *JGrouper::Stem#children( recurse = false )*
9
15
  * Add *JGrouper::Stem#groups( recurse = false )*
10
16
  * Add *JGrouper::Stem#stems( recurse = false )*
11
17
 
12
-
13
- Future
14
- ------
15
- * Add *JGrouper::Stem#add_group( name, display_name = nil )*
16
- * Add *JGrouper::Group.create( name, display_name = nil )*
17
- * Add *JGrouper::Group#members*
18
- * Add *JGrouper::Group#add_member(?)*
19
- * Add *JGrouper::Stem#delete( recurse = false )*
20
- * Add *JGrouper::Stem.delete( name, recurse = false )*
21
- * Add *JGrouper::Stem.find(uuid)*
22
- * Add *JGrouper::Stem.exists?(name)*
23
- * Add *JGrouper::Group.exists?(name)*
24
- * Add *JGrouper::Stem#root?(name)*
25
- * Add *JGrouper::Group*
26
- * Add *JGrouper::Group.find(name)*
27
- * Implement *JGrouper::Subject.sources* (using *edu.internet2.middleware.subject.provider.SourceManager*)
28
- * Implement *JGrouper::Subject.source(id)* (using *edu.internet2.middleware.subject.provider.SourceManager*)
29
- * Implement *JGrouper::Subject::Source#to_json* (for "jgrouper-server")
30
- * Add child stem
31
- * Get child stems
32
- * Delete child stem
33
- * Add child group
34
- * Get child groups
35
- * Delete child group
36
- * Add group member
37
- * Get group members
38
- * Remove group member
39
- * Grant stem privileges
40
- * Get stem privileges
41
- * Revoke stem privileges
42
- * Grant group privileges
43
- * Get group privileges
44
- * Revoke group privileges
45
- * Add privilege to stem and all children
46
- * Add privilege to all groups beneath a stem
47
- * JGrouper::TestCase
48
- * JGrouper::Subject::TestCase
49
- * JGrouper::Subject::TestCase
50
-
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test/unit'
4
+ require 'factory_girl'
5
+
6
+
7
+ class JGrouper::Group::TestCase < Test::Unit::TestCase
8
+
9
+ def grouper_wheel_group
10
+ FactoryGirl.build :grouper_wheel_group
11
+ end
12
+
13
+ def wheel_group_as_json
14
+ FactoryGirl.attributes_for(:wheel_group).to_json
15
+ end
16
+
17
+ end
18
+
@@ -4,7 +4,8 @@ module JGrouper # :nodoc:
4
4
  #
5
5
  class Group
6
6
 
7
- attr_accessor :display_name, :name, :uuid
7
+ attr_reader :display_extension, :display_name, :extension, :name, :types, :uuid
8
+
8
9
 
9
10
  def initialize
10
11
  @grouper_group = nil
@@ -12,52 +13,31 @@ module JGrouper # :nodoc:
12
13
  self
13
14
  end
14
15
 
15
- # XXX #
16
- # XXX # Create child stem (along with missing intermediaries).
17
- # XXX #
18
- # XXX # # Create child stem 'foo'
19
- # XXX # child = stem.add_stem 'foo'
20
- # XXX #
21
- # XXX # # Create child stem 'foo' with display name of 'Foo'
22
- # XXX # child = stem.add_stem 'foo', 'Foo'
23
- # XXX #
24
- # XXX # # Create child stem 'foo:bar:baz' along with any missing intermediaries
25
- # XXX # child = stem.add_stem 'foo:bar:baz'
26
- # XXX #
27
- # XXX #
28
- # XXX def add_stem( name, display_name = nil )
29
- # XXX # TODO What if names.size != display_names.size?
30
- # XXX names = name.split ':'
31
- # XXX display_names = display_name.nil? ? names.clone.split : display_name.split(':')
32
- # XXX
33
- # XXX name, display_name = names.shift, display_names.shift
34
- # XXX
35
- # XXX child = JGrouper::Stem.find self.name.empty? ? name : [ self.name, name ].join(':') # TODO Yuck
36
- # XXX child = JGrouper::Stem.from_grouper @grouper_stem.addChildStem(name, display_name) if child.nil?
37
- # XXX
38
- # XXX # TODO What if child can't be created?
39
- # XXX child = child.add_stem( names.join(':'), display_names.join(':') ) unless names.empty?
40
- # XXX yield child if block_given?
41
- # XXX child
42
- # XXX end
43
- # XXX
44
- # XXX #
45
- # XXX # Create stem (along with missing intermediaries).
46
- # XXX #
47
- # XXX # # Create top-level 'foo' stem
48
- # XXX # stem = JGrouper::Stem.create 'foo'
49
- # XXX #
50
- # XXX # # Create top-level 'foo' stem with display name of 'Foo'
51
- # XXX # stem = JGrouper::Stem.create 'foo', 'Foo'
52
- # XXX #
53
- # XXX # # Create 'foo:bar:baz' stem, along with any missing intermediaries
54
- # XXX # stem = JGrouper::Stem.create 'foo:bar:baz'
55
- # XXX #
56
- # XXX def self.create( name, display_name = nil )
57
- # XXX stem = root.add_stem name, display_name
58
- # XXX yield stem if block_given?
59
- # XXX stem
60
- # XXX end
16
+ #
17
+ # Add group type. Returns +true+ if type added or group already has type.
18
+ #
19
+ # group.add_type 'group type'
20
+ #
21
+ def add_type(name)
22
+ return true if types.include? name
23
+ t = Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.find name, false
24
+ return false unless t
25
+ @grouper_group.add_type t
26
+ true
27
+ end
28
+
29
+ #
30
+ # Delete group type. Returns +true+ if type deleted or group does not have type.
31
+ #
32
+ # group.delete_type 'group type'
33
+ #
34
+ def delete_type(name)
35
+ t = Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.find name, false
36
+ return false unless t
37
+ return true unless types.include? name
38
+ @grouper_group.delete_type t
39
+ true
40
+ end
61
41
 
62
42
  #
63
43
  # Find group by name or returns +nil+.
@@ -65,39 +45,55 @@ module JGrouper # :nodoc:
65
45
  # group = JGrouper::Group.find(name)
66
46
  #
67
47
  def self.find(name)
68
- group = from_grouper GroupFinder.findByName( GrouperSession.startRootSession, name, false ) # XXX How to handle sessions?
48
+ group = from_grouper GroupFinder.findByName( GrouperSession.startRootSession, name, false ) # How to handle sessions?
69
49
  yield group if block_given?
70
50
  group
71
51
  end
72
52
 
73
- # XXX #
74
- # XXX # Generate JGrouper::Stem instance from JSON by calling +JSON.parse(json_string)+
75
- # XXX #
76
- # XXX def self.json_create(json)
77
- # XXX new do |stem|
78
- # XXX stem.display_name = json['display_name']
79
- # XXX stem.name = json['name']
80
- # XXX stem.uuid = json['uuid']
81
- # XXX end
82
- # XXX end
83
- # XXX
84
- # XXX #
85
- # XXX # Return JSON representation of JGrouper::Stem instance.
86
- # XXX #
87
- # XXX def to_json
88
- # XXX {
89
- # XXX :json_class => self.class.name,
90
- # XXX :display_name => self.display_name,
91
- # XXX :name => self.name,
92
- # XXX :uuid => self.uuid
93
- # XXX }.to_json
94
- # XXX end
53
+ #
54
+ # Generate JGrouper::Group instance from JSON by calling +JSON.parse(json_string)+
55
+ #
56
+ def self.json_create(json)
57
+ new do |group|
58
+ group.instance_variable_set :@display_extension, json['display_extension']
59
+ group.instance_variable_set :@display_name, json['display_name']
60
+ group.instance_variable_set :@extension, json['extension']
61
+ group.instance_variable_set :@name, json['name']
62
+ group.instance_variable_set :@types, json['types']
63
+ group.instance_variable_set :@uuid, json['uuid']
64
+ end
65
+ end
66
+
67
+ def method_missing(meth, *args, &block)
68
+ begin
69
+ warn "METHOD_MISSING: meth=#{ meth } args=#{ args }"
70
+ block.call @grouper_group.send(meth, *args) if block
71
+ @grouper_group.send(meth, *args)
72
+ rescue NoMethodError
73
+ super
74
+ end
75
+ end
76
+
77
+ #
78
+ # Return JSON representation of JGrouper::Group instance.
79
+ #
80
+ def to_json
81
+ {
82
+ :json_class => self.class.name,
83
+ :display_extension => self.display_extension,
84
+ :display_name => self.display_name,
85
+ :extension => self.extension,
86
+ :name => self.name,
87
+ :types => self.types,
88
+ :uuid => self.uuid
89
+ }.to_json
90
+ end
95
91
 
96
92
  #
97
93
  # Return String representation of JGrouper::Group instance.
98
94
  #
99
95
  def to_s
100
- %w( name display_name uuid ).collect { |k| "#{k}=#{ self.send(k) }" }.join(' | ')
96
+ %w( name display_name uuid ).collect { |k| "#{k}=#{ self.send(k) }" }.join(' | ') + " | types=#{ types.join(',') }"
101
97
  end
102
98
 
103
99
 
@@ -106,11 +102,14 @@ module JGrouper # :nodoc:
106
102
  def self.from_grouper(grouper)
107
103
  return nil if grouper.nil?
108
104
  new do |group|
109
- group.instance_variable_set :@grouper_group, grouper # XXX Is this even needed?
110
-
111
- group.display_name = grouper.getDisplayName
112
- group.name = grouper.getName
113
- group.uuid = grouper.getUuid
105
+ group.instance_variable_set :@grouper_group, grouper
106
+ group.instance_variable_set :@display_extension, grouper.getDisplayExtension
107
+ group.instance_variable_set :@display_name, grouper.getDisplayName
108
+ group.instance_variable_set :@extension, grouper.getExtension
109
+ group.instance_variable_set :@name, grouper.getName
110
+ # TODO Testing hack
111
+ group.instance_variable_set :@types, grouper.getTypes.collect { |t| t.kind_of?(String) ? t : t.getName }
112
+ group.instance_variable_set :@uuid, grouper.getUuid
114
113
  end
115
114
  end
116
115
 
@@ -4,7 +4,7 @@ require 'test/unit'
4
4
  require 'factory_girl'
5
5
 
6
6
 
7
- module JGrouper #: :nodoc:
7
+ class JGrouper #: :nodoc:
8
8
  #
9
9
  # = JGrouper::GroupType::TestCase - For testing JGrouper::GroupType
10
10
  #
@@ -84,6 +84,15 @@ module JGrouper # :nodoc:
84
84
  end
85
85
  end
86
86
 
87
+ def method_missing(meth, *args, &block)
88
+ begin
89
+ block.call @grouper_group_type.send(meth, *args) if block
90
+ @grouper_group_type.send(meth, *args)
91
+ rescue NoMethodError
92
+ super
93
+ end
94
+ end
95
+
87
96
  #
88
97
  # Return JSON representation of JGrouper::GroupType instance.
89
98
  #
@@ -4,7 +4,7 @@ require 'test/unit'
4
4
  require 'factory_girl'
5
5
 
6
6
 
7
- module JGrouper #: :nodoc:
7
+ class JGrouper # :nodoc:
8
8
  #
9
9
  # = JGrouper::Stem::TestCase - For testing JGrouper::Stem
10
10
  #
data/lib/jgrouper/stem.rb CHANGED
@@ -81,6 +81,15 @@ module JGrouper # :nodoc:
81
81
  end
82
82
  end
83
83
 
84
+ def method_missing(meth, *args, &block)
85
+ begin
86
+ block.call @grouper_stem.send(meth, *args) if block
87
+ @grouper_stem.send(meth, *args)
88
+ rescue NoMethodError
89
+ super
90
+ end
91
+ end
92
+
84
93
  #
85
94
  # Return root stem.
86
95
  #
@@ -4,7 +4,7 @@ require 'test/unit'
4
4
  require 'factory_girl'
5
5
 
6
6
 
7
- module JGrouper #: :nodoc:
7
+ class JGrouper #: :nodoc:
8
8
  #
9
9
  # = JGrouper::Subject::TestCase - For testing JGrouper::Subject
10
10
  #
@@ -24,6 +24,15 @@ module JGrouper #: :nodoc:
24
24
  end
25
25
  end
26
26
 
27
+ def method_missing(meth, *args, &block)
28
+ begin
29
+ block.call @grouper_subject.send(meth, *args) if block
30
+ @grouper_subject.send(meth, *args)
31
+ rescue NoMethodError
32
+ super
33
+ end
34
+ end
35
+
27
36
  #
28
37
  # Return root subject.
29
38
  #
@@ -1,3 +1,3 @@
1
1
  module JGrouper
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
data/lib/jgrouper.rb CHANGED
@@ -16,25 +16,27 @@ require_relative 'jgrouper/version'
16
16
  # require 'jgrouper'
17
17
  #
18
18
  # # Set path to your Grouper API installation
19
- # JGrouper.home = '/path/to/your/grouper/api/installation/directory'
19
+ # JGrouper.home '/path/to/your/grouper/api/installation/directory'
20
20
  #
21
21
  # === Subjects
22
22
  #
23
23
  # # Find root subject
24
24
  # JGrouper::Subject.root do |subject|
25
- # subject.id # Subject identifier
26
- # subject.name # Subject name
27
- # subject.source # Subject source identifier
28
- # subject.type # Subject type name
25
+ # subject.id # Subject identifier
26
+ # subject.name # Subject name
27
+ # subject.source # Subject source identifier
28
+ # subject.type # Subject type name
29
+ # subject.getSource # Call native Subject API methods
29
30
  # end
30
31
  #
31
32
  # === Stems
32
33
  #
33
34
  # # Find root stem
34
35
  # JGrouper::Stem.root do |stem|
35
- # stem.display_name # Stem display name
36
- # stem.name # Stem name
37
- # stem.uuid # Stem UUID
36
+ # stem.display_name # Stem display name
37
+ # stem.name # Stem name
38
+ # stem.uuid # Stem UUID
39
+ # stem.getChildGroups # Call native Grouper API methods
38
40
  # end
39
41
  #
40
42
  # # Find by name
@@ -50,17 +52,22 @@ require_relative 'jgrouper/version'
50
52
  #
51
53
  # # Find by name
52
54
  # group = JGrouper::Group.find(name) do |group|
53
- # group.display_name # Group display name
54
- # group.name # Group name
55
- # group.uuid # Group UUID
55
+ # group.display_name # Group display name
56
+ # group.name # Group name
57
+ # group.types # Array of group type names
58
+ # group.uuid # Group UUID
59
+ # group.add_type 'group type' # Add group type
60
+ # group.delete_type 'group_type' # Delete group type
61
+ # group.getParentStem # Call native Grouper API methods
56
62
  # end
57
63
  #
58
64
  # === Group Types
59
65
  #
60
66
  # # Create group type
61
67
  # JGrouper::GroupType.create(name) do |group_type|
62
- # group_type.name # Group type name
63
- # group_type.uuid # Group type uuid
68
+ # group_type.name # Group type name
69
+ # group_type.uuid # Group type uuid
70
+ # group_type.getFields # Call native Grouper API methods
64
71
  # end
65
72
  #
66
73
  # # Find all group types
@@ -133,5 +140,17 @@ module JGrouper
133
140
  ).each { |klass| include_class klass }
134
141
  end
135
142
 
143
+ #
144
+ # Initialize Grouper API.
145
+ #
146
+ def self.home=(path)
147
+ self.home path
148
+ end
149
+
150
+ end
151
+
152
+ if __FILE__ == $0
153
+ JGrouper.home ENV['GROUPER_HOME']
154
+ puts JGrouper::Group.find('etc:wheel')
136
155
  end
137
156
 
data/test/factories.rb CHANGED
@@ -4,6 +4,27 @@ require 'factory_girl'
4
4
 
5
5
 
6
6
  FactoryGirl.define do
7
+ # Groups
8
+ factory :grouper_wheel_group, class: OpenStruct do
9
+ getDisplayExtension 'Wheel'
10
+ getDisplayName 'Etc:Wheel'
11
+ getExtension 'wheel'
12
+ getName 'etc:wheel'
13
+ getTypes [ 'base'] # FIXME
14
+ getUuid 'etc-wheel-group'
15
+ end
16
+
17
+ factory :wheel_group, class: OpenStruct do
18
+ json_class JGrouper::Group
19
+ display_extension 'Wheel'
20
+ display_name 'Etc:Wheel'
21
+ extension 'wheel'
22
+ name 'etc:wheel'
23
+ types [ 'base' ]
24
+ uuid 'etc-wheel-group'
25
+ end
26
+
27
+
7
28
  # Group Types
8
29
  factory :jgrouper_type, class: OpenStruct do
9
30
  json_class JGrouper::GroupType
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative 'helper'
4
+ require_relative '../lib/jgrouper/group/test_case'
5
+
6
+
7
+ class JGrouper::Group::TestCase < Test::Unit::TestCase
8
+
9
+ def test_mocked_find_wheel
10
+ Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
11
+ Java::EduInternet2MiddlewareGrouper::GroupFinder.expects(:findByName).returns grouper_wheel_group
12
+
13
+ JGrouper::Group.find('etc:wheel') do |group|
14
+ assert_not_nil group
15
+ assert group.kind_of? JGrouper::Group
16
+ assert_equal 'Wheel', group.display_extension
17
+ assert_equal 'Etc:Wheel', group.display_name
18
+ assert_equal 'wheel', group.extension
19
+ assert_equal 'etc:wheel', group.name
20
+ assert_equal [ 'base' ], group.types # FIXME
21
+ assert_equal 'etc-wheel-group', group.uuid
22
+ end
23
+ end
24
+
25
+ def test_mocked_group_to_json
26
+ Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
27
+ Java::EduInternet2MiddlewareGrouper::GroupFinder.expects(:findByName).returns grouper_wheel_group
28
+
29
+ assert_equal wheel_group_as_json, JGrouper::Group.find('etc:wheel').to_json
30
+ end
31
+
32
+ def test_group_from_json
33
+ group = JSON.parse wheel_group_as_json
34
+ assert_not_nil group
35
+ assert group.kind_of? JGrouper::Group
36
+ assert_equal 'Wheel', group.display_extension
37
+ assert_equal 'Etc:Wheel', group.display_name
38
+ assert_equal 'wheel', group.extension
39
+ assert_equal 'etc:wheel', group.name
40
+ assert_equal [ 'base' ], group.types
41
+ assert_equal 'etc-wheel-group', group.uuid
42
+ end
43
+
44
+ def test_group_types
45
+ Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
46
+ Java::EduInternet2MiddlewareGrouper::GroupFinder.expects(:findByName).returns grouper_wheel_group
47
+
48
+ JGrouper::Group.find('etc:wheel') do |group|
49
+ assert_equal true, group.add_type('base') # Add already present type
50
+ # TODO Add type
51
+ assert_equal false, group.add_type('foo') # Add invalid group type
52
+
53
+ # TODO Delete unassigned type
54
+ # TODO Delete type
55
+ assert_equal false, group.delete_type('foo') # Delete invalid group type
56
+ end
57
+ end
58
+
59
+ end
60
+
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
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-04 00:00:00.000000000 Z
12
+ date: 2012-11-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -140,6 +140,7 @@ files:
140
140
  - jgrouper.gemspec
141
141
  - lib/jgrouper.rb
142
142
  - lib/jgrouper/group.rb
143
+ - lib/jgrouper/group/test_case.rb
143
144
  - lib/jgrouper/group_type.rb
144
145
  - lib/jgrouper/group_type/test_case.rb
145
146
  - lib/jgrouper/stem.rb
@@ -149,6 +150,7 @@ files:
149
150
  - lib/jgrouper/version.rb
150
151
  - test/factories.rb
151
152
  - test/helper.rb
153
+ - test/test_group.rb
152
154
  - test/test_group_type.rb
153
155
  - test/test_stem.rb
154
156
  - test/test_subject.rb
@@ -179,6 +181,8 @@ summary: JRuby wrapper around the Internet2 Grouper API
179
181
  test_files:
180
182
  - test/factories.rb
181
183
  - test/helper.rb
184
+ - test/test_group.rb
182
185
  - test/test_group_type.rb
183
186
  - test/test_stem.rb
184
187
  - test/test_subject.rb
188
+ has_rdoc: