jgrouper 0.0.2 → 0.0.3

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/HISTORY.md ADDED
@@ -0,0 +1,30 @@
1
+ JGrouper History
2
+ ================
3
+
4
+ JGrouper v0.0.3
5
+ ---------------
6
+ * Add *JGrouper::Shell*
7
+ * Add *bin/jgrouper* interactive shell
8
+ * Rename *JGrouper::Stem#root_stem* to *JGrouper::Stem#root*
9
+ * Rename *JGrouper::Subject#root_subject* to *JGrouper::Subject#root*
10
+ * Add *JGrouper::GroupType.delete(name)*
11
+ * Add *JGrouper::Stem.create( name, display_name = nil )*
12
+ * Add *JGrouper::Stem#add_stem( name, display_name = nil )*
13
+ * Add *JGrouper::Stem.find(name)*
14
+ * Add *JGrouper::Subject::TestCase*
15
+ * Add *JGrouper::GroupType::TestCase*
16
+ * Add *JGrouper::Stem::TestCase*
17
+
18
+
19
+ 2012-08-10 JGrouper v0.0.2
20
+ --------------------------
21
+ * Add *JGrouper::GroupType*
22
+ * Add *JGrouper::Stem#to_json*
23
+ * Add *JGrouper::Subject#to_json*
24
+
25
+
26
+ 2012-08-10 JGrouper v0.0.1
27
+ --------------------------
28
+ * Add *JGrouper::Stem.root_stem*
29
+ * Add *JGrouper::Subject.root_subject*
30
+
data/README.rdoc CHANGED
@@ -10,7 +10,7 @@
10
10
  === Subjects
11
11
 
12
12
  # Find root subject
13
- JGrouper::Subject.root_subject do |subject|
13
+ JGrouper::Subject.root do |subject|
14
14
  subject.id # Subject identifier
15
15
  subject.name # Subject name
16
16
  subject.source # Subject source identifier
@@ -20,12 +20,21 @@
20
20
  === Stems
21
21
 
22
22
  # Find root stem
23
- JGrouper::Stem.root_stem do |stem|
23
+ JGrouper::Stem.root do |stem|
24
24
  stem.display_name # Stem display name
25
25
  stem.name # Stem name
26
26
  stem.uuid # Stem UUID
27
27
  end
28
28
 
29
+ # Find by name
30
+ stem = JGrouper::Stem.find(name) { |stem| ... }
31
+
32
+ # Create stem(s)
33
+ stem = JGrouper::Stem.create 'foo:bar:baz', 'Foo:Bar:Baz'
34
+
35
+ # Create child stem(s)
36
+ child = stem.create 'foo:bar:baz'
37
+
29
38
  === Group Types
30
39
 
31
40
  # Create group type
@@ -43,6 +52,8 @@
43
52
  JGrouper::GroupType.find(name)
44
53
 
45
54
  # Delete group type
55
+ JGrouper::GroupType.delete(name)
56
+ # ... or ...
46
57
  JGrouper::GroupType.find(name).delete
47
58
 
48
59
  == Installation
@@ -77,5 +88,5 @@ https://github.com/blairc/jgrouper
77
88
 
78
89
  == See Also
79
90
 
80
- https://github.com/blairc/jgrouper-server, http://grouper.internet2.edu
91
+ JGrouper::Shell, https://github.com/blairc/jgrouper-server, http://grouper.internet2.edu
81
92
 
data/TODO.md CHANGED
@@ -1,61 +1,53 @@
1
1
  JGrouper To Do
2
2
  ==============
3
3
 
4
- JGrouper v0.0.3
4
+ JGrouper v0.0.4
5
5
  ---------------
6
+ * Add *JGrouper::Group*
7
+ * Add *JGrouper::Group.find(name)*
8
+ * Add *JGrouper::Stem#add_group( name, display_name = nil )*
9
+ * Add *JGrouper::Group.create( name, display_name = nil )*
10
+ * Add *JGrouper::Group#types*
11
+ * Add *JGrouper::Group#add_type*
12
+ * Add *JGrouper::Group#members*
13
+ * Add *JGrouper::Group#add_member(?)*
14
+
15
+
16
+ Future
17
+ ------
18
+ * Add *JGrouper::Stem#delete( recurse = false )*
19
+ * Add *JGrouper::Stem.delete( name, recurse = false )*
20
+ * Add *JGrouper::Stem.find(uuid)*
21
+ * Add *JGrouper::Stem.exists?(name)*
22
+ * Add *JGrouper::Group.exists?(name)*
23
+ * Add *JGrouper::Stem#root?(name)*
24
+ * Add *JGrouper::Group*
25
+ * Add *JGrouper::Group.find(name)*
6
26
  * Implement *JGrouper::Subject.sources* (using *edu.internet2.middleware.subject.provider.SourceManager*)
7
27
  * Implement *JGrouper::Subject.source(id)* (using *edu.internet2.middleware.subject.provider.SourceManager*)
8
28
  * Implement *JGrouper::Subject::Source#to_json* (for "jgrouper-server")
9
-
10
-
11
- JJGrouper v0.0.4
12
- ---------------
13
29
  * Add child stem
14
30
  * Get child stems
15
31
  * Delete child stem
16
- * Update *JGrouper::Stem#to_json* as appropriate
17
-
18
-
19
- JGrouper v0.0.5
20
- ---------------
21
32
  * Add child group
22
33
  * Get child groups
23
34
  * Delete child group
24
- * Update *JGrouper::Group#to_json* as appropriate
25
-
26
-
27
- JGrouper v0.0.6
28
- ---------------
29
35
  * Add group member
30
36
  * Get group members
31
37
  * Remove group member
32
- * Update *JGrouper::Group#to_json* as appropriate
33
-
34
-
35
- JGrouper v0.0.7
36
- ---------------
37
38
  * Grant stem privileges
38
39
  * Get stem privileges
39
40
  * Revoke stem privileges
40
- * Update *JGrouper::Stem#to_json* as appropriate
41
-
42
-
43
- JGrouper v0.0.8
44
- ---------------
45
41
  * Grant group privileges
46
42
  * Get group privileges
47
43
  * Revoke group privileges
48
- * Update *JGrouper::Group#to_json* as appropriate
49
-
50
-
51
- Future
52
- ------
53
- * Create command line executable (and remove embedded code from *lib/jgrouper.rb*)
54
44
  * Add privilege to stem and all children
55
45
  * Add privilege to all groups beneath a stem
56
46
  * JGrouper::TestCase
57
47
  * JGrouper::Subject::TestCase
58
48
  * JGrouper::Subject::TestCase
59
-
60
- # vim: syntax=markdown textwidth=0
49
+ * Make *JGrouper::Shell* startup less chatty
50
+ * Extract *JGrouper::Shell* to own gem?
51
+ * Add *gsh* compatibility commands to *JGrouper::Shell*?
52
+ * Should *JGrouper::Shell* be able to run scripts?
61
53
 
data/bin/jgrouper ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env jruby
2
+
3
+ # TODO Will this work post-installation?
4
+
5
+ require_relative '../lib/jgrouper/shell'
6
+ JGrouper::Shell.run!
7
+
8
+ # vim: syntax=ruby
9
+
data/jgrouper.gemspec CHANGED
@@ -16,7 +16,9 @@ Gem::Specification.new do |gem|
16
16
  gem.version = JGrouper::VERSION
17
17
 
18
18
  gem.add_dependency 'json'
19
+ gem.add_dependency 'pry'
19
20
 
21
+ gem.add_development_dependency 'factory_girl', "~> 4.0"
20
22
  gem.add_development_dependency 'mocha'
21
23
  gem.add_development_dependency 'rake'
22
24
  gem.add_development_dependency 'rdoc'
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test/unit'
4
+ require 'factory_girl'
5
+
6
+
7
+ module JGrouper #: :nodoc:
8
+ #
9
+ # = JGrouper::GroupType::TestCase - For testing JGrouper::GroupType
10
+ #
11
+ class GroupType::TestCase < Test::Unit::TestCase
12
+
13
+ def grouper_type
14
+ FactoryBuild :jgrouper_grouper_tyype
15
+ end
16
+
17
+ def jgrouper_type_as_json
18
+ FactoryGirl.attributes_for(:jgrouper_type).to_json
19
+ end
20
+
21
+ end
22
+ end
23
+
@@ -16,6 +16,10 @@ module JGrouper # :nodoc:
16
16
  #
17
17
  # Find all group types.
18
18
  #
19
+ # group_types = JGrouper::GroupType.all do |group_type|
20
+ # ...
21
+ # end
22
+ #
19
23
  def self.all
20
24
  group_types = Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.findAll.collect { |gt| from_grouper gt }
21
25
  group_types.each { |_| yield _ } if block_given?
@@ -33,9 +37,22 @@ module JGrouper # :nodoc:
33
37
  group_type
34
38
  end
35
39
 
40
+ #
41
+ # Delete group type. Returns +false+ on failure.
42
+ #
43
+ # JGrouper::GroupType.delete(name)
44
+ #
45
+ def self.delete(name)
46
+ group_type = find(name)
47
+ return false if group_type.nil?
48
+ group_type.delete
49
+ end
50
+
36
51
  #
37
52
  # Delete group type. Sets +error+ and returns +false+ on failure.
38
53
  #
54
+ # group_type.delete
55
+ #
39
56
  def delete
40
57
  begin
41
58
  @grouper_group_type.delete GrouperSession.startRootSession # XXX How to handle sessions?
@@ -49,6 +66,8 @@ module JGrouper # :nodoc:
49
66
  #
50
67
  # Find a group type by name.
51
68
  #
69
+ # group_type = JGrouper::GroupType.find(name)
70
+ #
52
71
  def self.find(name)
53
72
  group_type = from_grouper Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.find(name, false)
54
73
  yield group_type if block_given?
@@ -0,0 +1,75 @@
1
+ require_relative '../jgrouper'
2
+
3
+ require 'pry'
4
+
5
+ module JGrouper # :nodoc:
6
+ #
7
+ # = JGrouper::Shell - JGrouper interactive shell
8
+ #
9
+ # == Usage
10
+ #
11
+ # # Launch
12
+ # % jgrouper
13
+ #
14
+ # === Group Types
15
+ #
16
+ # Any JGrouper::GroupType methods, such as:
17
+ #
18
+ # JGrouper::Shell:0> group_type.all
19
+ #
20
+ # === Stems
21
+ #
22
+ # Any JGrouper::Stem methods, such as:
23
+ #
24
+ # JGrouper::Shell:0> stem.root_stem
25
+ #
26
+ # === Subjects
27
+ #
28
+ # Any JGrouper::Subject methods, such as:
29
+ #
30
+ # JGrouper::Shell:0> subject.root_subject
31
+ #
32
+ class Shell
33
+
34
+ def initialize
35
+ yield self if block_given?
36
+ self
37
+ end
38
+
39
+ #
40
+ # Access JGrouper::GroupType commands
41
+ #
42
+ def group_type
43
+ JGrouper::GroupType
44
+ end
45
+
46
+ #
47
+ # Start JGrouper shell
48
+ #
49
+ def self.run!
50
+ JGrouper.home ENV['GROUPER_HOME'] if ENV['GROUPER_HOME']
51
+ shell = new do |shell|
52
+ Pry.start shell,
53
+ :prompt => [ proc { |obj, nest_level| "#{obj.class.name}:#{nest_level}> " },
54
+ proc { "> " }
55
+ ]
56
+ end
57
+ end
58
+
59
+ #
60
+ # Access JGrouper::Stem commands
61
+ #
62
+ def stem
63
+ JGrouper::Stem
64
+ end
65
+
66
+ #
67
+ # Access JGrouper::Subject commands
68
+ #
69
+ def subject
70
+ JGrouper::Subject
71
+ end
72
+
73
+ end
74
+ end
75
+
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test/unit'
4
+ require 'factory_girl'
5
+
6
+
7
+ module JGrouper #: :nodoc:
8
+ #
9
+ # = JGrouper::Stem::TestCase - For testing JGrouper::Stem
10
+ #
11
+ class Stem::TestCase < Test::Unit::TestCase
12
+
13
+ def grouper_root_stem
14
+ FactoryGirl.build :grouper_root_stem
15
+ end
16
+
17
+ def grouper_stem(name)
18
+ case name.to_sym
19
+ when :foo
20
+ FactoryGirl.build :grouper_stem_foo
21
+ when :"foo:bar"
22
+ FactoryGirl.build :grouper_stem_foo_bar
23
+ end
24
+ raise ArgumentError, "invalid name: #{name}"
25
+ end
26
+
27
+ def root_stem_as_json
28
+ FactoryGirl.attributes_for(:root_stem).to_json
29
+ end
30
+
31
+ end
32
+ end
33
+
data/lib/jgrouper/stem.rb CHANGED
@@ -12,6 +12,64 @@ module JGrouper # :nodoc:
12
12
  self
13
13
  end
14
14
 
15
+ #
16
+ # Create child stem (along with missing intermediaries).
17
+ #
18
+ # # Create child stem 'foo'
19
+ # child = stem.add_stem 'foo'
20
+ #
21
+ # # Create child stem 'foo' with display name of 'Foo'
22
+ # child = stem.add_stem 'foo', 'Foo'
23
+ #
24
+ # # Create child stem 'foo:bar:baz' along with any missing intermediaries
25
+ # child = stem.add_stem 'foo:bar:baz'
26
+ #
27
+ #
28
+ def add_stem( name, display_name = nil )
29
+ # TODO What if names.size != display_names.size?
30
+ names = name.split ':'
31
+ display_names = display_name.nil? ? names.clone.split : display_name.split(':')
32
+
33
+ name, display_name = names.shift, display_names.shift
34
+
35
+ child = JGrouper::Stem.find self.name.empty? ? name : [ self.name, name ].join(':') # TODO Yuck
36
+ child = JGrouper::Stem.from_grouper @grouper_stem.addChildStem(name, display_name) if child.nil?
37
+
38
+ # TODO What if child can't be created?
39
+ child = child.add_stem( names.join(':'), display_names.join(':') ) unless names.empty?
40
+ yield child if block_given?
41
+ child
42
+ end
43
+
44
+ #
45
+ # Create stem (along with missing intermediaries).
46
+ #
47
+ # # Create top-level 'foo' stem
48
+ # stem = JGrouper::Stem.create 'foo'
49
+ #
50
+ # # Create top-level 'foo' stem with display name of 'Foo'
51
+ # stem = JGrouper::Stem.create 'foo', 'Foo'
52
+ #
53
+ # # Create 'foo:bar:baz' stem, along with any missing intermediaries
54
+ # stem = JGrouper::Stem.create 'foo:bar:baz'
55
+ #
56
+ def self.create( name, display_name = nil )
57
+ stem = root.add_stem name, display_name
58
+ yield stem if block_given?
59
+ stem
60
+ end
61
+
62
+ #
63
+ # Find stem by name or returns +nil+.
64
+ #
65
+ # stem = JGrouper::Stem.find(name)
66
+ #
67
+ def self.find(name)
68
+ stem = from_grouper StemFinder.findByName( GrouperSession.startRootSession, name, false ) # XXX How to handle sessions?
69
+ yield stem if block_given?
70
+ stem
71
+ end
72
+
15
73
  #
16
74
  # Generate JGrouper::Stem instance from JSON by calling +JSON.parse(json_string)+
17
75
  #
@@ -26,9 +84,9 @@ module JGrouper # :nodoc:
26
84
  #
27
85
  # Return root stem.
28
86
  #
29
- # root_stem = JGrouper::Stem.root_stem
87
+ # root_stem = JGrouper::Stem.root
30
88
  #
31
- def self.root_stem
89
+ def self.root
32
90
  stem = from_grouper StemFinder.findRootStem( GrouperSession.startRootSession ) # XXX How to handle sessions?
33
91
  yield stem if block_given?
34
92
  stem
@@ -57,6 +115,7 @@ module JGrouper # :nodoc:
57
115
  private
58
116
 
59
117
  def self.from_grouper(grouper)
118
+ return nil if grouper.nil?
60
119
  new do |stem|
61
120
  stem.instance_variable_set :@grouper_stem, grouper # XXX Is this even needed?
62
121
 
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test/unit'
4
+ require 'factory_girl'
5
+
6
+
7
+ module JGrouper #: :nodoc:
8
+ #
9
+ # = JGrouper::Subject::TestCase - For testing JGrouper::Subject
10
+ #
11
+ class Subject::TestCase < Test::Unit::TestCase
12
+
13
+ def grouper_root_subject
14
+ FactoryGirl.build :grouper_root_subject
15
+ end
16
+
17
+ def root_subject_as_json
18
+ FactoryGirl.attributes_for(:root_subject).to_json
19
+ end
20
+
21
+ end
22
+ end
23
+
@@ -27,9 +27,9 @@ module JGrouper #: :nodoc:
27
27
  #
28
28
  # Return root subject.
29
29
  #
30
- # root_subject = JGrouper::Subject.root_subject
30
+ # root_subject = JGrouper::Subject.root
31
31
  #
32
- def self.root_subject
32
+ def self.root
33
33
  subject = from_grouper SubjectFinder.findRootSubject
34
34
  yield subject if block_given?
35
35
  subject
@@ -1,3 +1,3 @@
1
1
  module JGrouper
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
data/lib/jgrouper.rb CHANGED
@@ -20,7 +20,7 @@ require_relative 'jgrouper/version'
20
20
  # === Subjects
21
21
  #
22
22
  # # Find root subject
23
- # JGrouper::Subject.root_subject do |subject|
23
+ # JGrouper::Subject.root do |subject|
24
24
  # subject.id # Subject identifier
25
25
  # subject.name # Subject name
26
26
  # subject.source # Subject source identifier
@@ -30,12 +30,21 @@ require_relative 'jgrouper/version'
30
30
  # === Stems
31
31
  #
32
32
  # # Find root stem
33
- # JGrouper::Stem.root_stem do |stem|
33
+ # JGrouper::Stem.root do |stem|
34
34
  # stem.display_name # Stem display name
35
35
  # stem.name # Stem name
36
36
  # stem.uuid # Stem UUID
37
37
  # end
38
38
  #
39
+ # # Find by name
40
+ # stem = JGrouper::Stem.find(name) { |stem| ... }
41
+ #
42
+ # # Create stem(s)
43
+ # stem = JGrouper::Stem.create 'foo:bar:baz', 'Foo:Bar:Baz'
44
+ #
45
+ # # Create child stem(s)
46
+ # child = stem.create 'foo:bar:baz'
47
+ #
39
48
  # === Group Types
40
49
  #
41
50
  # # Create group type
@@ -53,6 +62,8 @@ require_relative 'jgrouper/version'
53
62
  # JGrouper::GroupType.find(name)
54
63
  #
55
64
  # # Delete group type
65
+ # JGrouper::GroupType.delete(name)
66
+ # # ... or ...
56
67
  # JGrouper::GroupType.find(name).delete
57
68
  #
58
69
  # == Installation
@@ -87,7 +98,7 @@ require_relative 'jgrouper/version'
87
98
  #
88
99
  # == See Also
89
100
  #
90
- # https://github.com/blairc/jgrouper-server, http://grouper.internet2.edu
101
+ # JGrouper::Shell, https://github.com/blairc/jgrouper-server, http://grouper.internet2.edu
91
102
  #
92
103
  module JGrouper
93
104
 
@@ -115,11 +126,3 @@ module JGrouper
115
126
 
116
127
  end
117
128
 
118
-
119
- # XXX Extract! Remove! Whatever!
120
- if __FILE__ == $0
121
- JGrouper.home ENV['GROUPER_HOME'] if ENV['GROUPER_HOME']
122
- JGrouper::Subject.root_subject { |subject| puts "root_subject => #{subject}" }
123
- JGrouper::Stem.root_stem { |stem| puts "root_stem => #{stem}" }
124
- end
125
-
data/test/factories.rb ADDED
@@ -0,0 +1,64 @@
1
+ # encoding: utf-8
2
+
3
+ require 'factory_girl'
4
+
5
+
6
+ FactoryGirl.define do
7
+ # Group Types
8
+ factory :jgrouper_type, class: OpenStruct do
9
+ json_class JGrouper::GroupType
10
+ name 'jgrouper'
11
+ uuid 'some-fake-uuid'
12
+ end
13
+
14
+ factory :jgrouper_grouper_type, class: OpenStruct do
15
+ getName 'jgrouper'
16
+ getUuid 'some-fake-uuid'
17
+ end
18
+
19
+
20
+ # Stems
21
+ factory :grouper_root_stem, class: OpenStruct do
22
+ getDisplayName ''
23
+ getName ''
24
+ getUuid 'some-fake-uuid'
25
+ end
26
+
27
+ factory :grouper_stem_foo, class: OpenStruct do
28
+ getDisplayName 'foo'
29
+ getName 'foo'
30
+ getUuid 'stem-foo'
31
+ end
32
+
33
+ factory :grouper_stem_foo_bar, class: OpenStruct do
34
+ getDisplayName 'foo:Bar'
35
+ getName 'foo:bar'
36
+ getUuid 'stem-foo-bar'
37
+ end
38
+
39
+ factory :root_stem, class: OpenStruct do
40
+ json_class JGrouper::Stem
41
+ display_name ''
42
+ name ''
43
+ uuid 'some-fake-uuid'
44
+ end
45
+
46
+
47
+ # Subjects
48
+ factory :grouper_root_subject, class: OpenStruct do
49
+ getId 'GrouperSystem'
50
+ getName 'GrouperSysAdmin'
51
+ sourceId 'g:isa'
52
+ typeName 'application'
53
+ end
54
+
55
+ factory :root_subject, class: OpenStruct do
56
+ json_class JGrouper::Subject
57
+ id 'GrouperSystem'
58
+ name 'GrouperSysAdmin'
59
+ source 'g:isa'
60
+ type 'application'
61
+ end
62
+
63
+ end
64
+
data/test/helper.rb CHANGED
@@ -7,6 +7,7 @@ require 'mocha'
7
7
  require 'ostruct'
8
8
 
9
9
  require_relative '../lib/jgrouper'
10
+ require_relative 'factories'
10
11
 
11
12
  require 'simplecov'
12
13
  SimpleCov.start
@@ -3,22 +3,11 @@
3
3
  require_relative 'helper'
4
4
 
5
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
-
6
+ class JGrouper::GroupType::TestCase
18
7
 
19
8
  def test_mocked_create_group_type
20
9
  Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
21
- Java::EduInternet2MiddlewareGrouper::GroupType.expects(:createType).returns @type
10
+ Java::EduInternet2MiddlewareGrouper::GroupType.expects(:createType).returns grouper_type
22
11
  JGrouper::GroupType.create('jgrouper') do |group_type|
23
12
  assert_not_nil group_type
24
13
  assert group_type.kind_of? JGrouper::GroupType
@@ -29,12 +18,12 @@ class TestGroupType < Test::Unit::TestCase
29
18
 
30
19
  def test_mocked_group_type_to_json
31
20
  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
21
+ Java::EduInternet2MiddlewareGrouper::GroupType.expects(:createType).returns grouper_type
22
+ assert_equal jgrouper_type_as_json, JGrouper::GroupType.create('jgrouper').to_json
34
23
  end
35
24
 
36
25
  def test_group_type_from_json
37
- group_type = JSON.parse @json
26
+ group_type = JSON.parse jgrouper_type_as_json
38
27
  assert_not_nil group_type
39
28
  assert group_type.kind_of? JGrouper::GroupType
40
29
  assert_equal 'jgrouper', group_type.name
@@ -42,7 +31,7 @@ class TestGroupType < Test::Unit::TestCase
42
31
  end
43
32
 
44
33
  def test_mocked_find_all
45
- Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:findAll).returns [ @type ]
34
+ Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:findAll).returns [ grouper_type ]
46
35
  group_types = JGrouper::GroupType.all do |group_type|
47
36
  assert_not_nil group_type
48
37
  assert group_type.kind_of? JGrouper::GroupType
@@ -57,7 +46,7 @@ class TestGroupType < Test::Unit::TestCase
57
46
  end
58
47
 
59
48
  def test_mocked_find_by_name
60
- Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns @type
49
+ Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns grouper_type
61
50
  JGrouper::GroupType.find('base') do |group_type|
62
51
  assert_not_nil group_type
63
52
  assert group_type.kind_of? JGrouper::GroupType
@@ -71,22 +60,47 @@ class TestGroupType < Test::Unit::TestCase
71
60
  assert_nil JGrouper::GroupType.find('jgrouper')
72
61
  end
73
62
 
74
- def test_mocked_delete
63
+ def test_mocked_instance_delete
64
+ type = grouper_type
65
+
75
66
  Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
76
- Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns @type
77
- @type.expects(:delete).returns(nil)
67
+ Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns type
68
+ type.expects(:delete).returns(nil)
69
+
78
70
  assert JGrouper::GroupType.find('jgrouper').delete
79
71
  end
80
72
 
81
- def test_mocked_delete_failure
73
+ def test_mocked_instance_delete_failure
74
+ type = grouper_type
75
+
82
76
  Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
83
- Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns @type
84
- @type.expects(:delete).raises(Exception, 'Mocked Exception')
77
+ Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns type
78
+ type.expects(:delete).raises(Exception, 'Mocked Exception')
85
79
 
86
80
  group_type = JGrouper::GroupType.find('jgrouper')
87
81
  assert_equal false, group_type.delete
88
82
  assert_equal 'Mocked Exception', group_type.error.to_s
89
83
  end
90
84
 
85
+ def test_mocked_class_delete
86
+ type = grouper_type
87
+
88
+ Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
89
+ Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns type
90
+ type.expects(:delete).returns(nil)
91
+
92
+ assert JGrouper::GroupType.delete('jgrouper')
93
+ end
94
+
95
+ def test_mocked_class_delete_failure
96
+ type = grouper_type
97
+
98
+ Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
99
+ Java::EduInternet2MiddlewareGrouper::GroupTypeFinder.expects(:find).returns type
100
+ type.expects(:delete).raises(Exception, 'Mocked Exception')
101
+
102
+ assert_equal false, JGrouper::GroupType.delete('jgrouper')
103
+ end
104
+
91
105
  end
92
106
 
data/test/test_stem.rb CHANGED
@@ -3,25 +3,13 @@
3
3
  require_relative 'helper'
4
4
 
5
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
-
6
+ class JGrouper::Stem::TestCase
20
7
 
21
8
  def test_mocked_find_root_stem
22
9
  Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
23
- Java::EduInternet2MiddlewareGrouper::StemFinder.expects(:findRootStem).returns @root
24
- JGrouper::Stem.root_stem do |stem|
10
+ Java::EduInternet2MiddlewareGrouper::StemFinder.expects(:findRootStem).returns grouper_root_stem
11
+
12
+ JGrouper::Stem.root do |stem|
25
13
  assert_not_nil stem
26
14
  assert stem.kind_of? JGrouper::Stem
27
15
  assert_equal '', stem.display_name
@@ -32,12 +20,13 @@ class TestStem < Test::Unit::TestCase
32
20
 
33
21
  def test_mocked_stem_to_json
34
22
  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
23
+ Java::EduInternet2MiddlewareGrouper::StemFinder.expects(:findRootStem).returns grouper_root_stem
24
+
25
+ assert_equal root_stem_as_json, JGrouper::Stem.root.to_json
37
26
  end
38
27
 
39
28
  def test_stem_from_json
40
- stem = JSON.parse @json
29
+ stem = JSON.parse root_stem_as_json
41
30
  assert_not_nil stem
42
31
  assert stem.kind_of? JGrouper::Stem
43
32
  assert_equal '', stem.display_name
@@ -45,5 +34,57 @@ class TestStem < Test::Unit::TestCase
45
34
  assert_equal 'some-fake-uuid', stem.uuid
46
35
  end
47
36
 
37
+ def test_mocked_find_by_name
38
+ Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
39
+ Java::EduInternet2MiddlewareGrouper::StemFinder.expects(:findByName).returns grouper_stem('foo:bar')
40
+
41
+ JGrouper::Stem.find('foo:bar') do |stem|
42
+ assert_not_nil stem
43
+ assert stem.kind_of? JGrouper::Stem
44
+ assert_equal 'foo', stem.display_name
45
+ assert_equal 'foo', stem.name
46
+ assert_equal 'stem-foo', stem.uuid
47
+ end
48
+ end
49
+
50
+ def test_mocked_find_by_name_failure
51
+ Java::EduInternet2MiddlewareGrouper::GrouperSession.expects(:startRootSession).returns true
52
+ Java::EduInternet2MiddlewareGrouper::StemFinder.expects(:findByName).returns nil
53
+
54
+ assert_nil JGrouper::Stem.find('foo:bar')
55
+ end
56
+
57
+ def test_mocked_create_stem_without_display_name_and_without_intermediaries
58
+ root_stem = grouper_root_stem
59
+
60
+ JGrouper::Stem.expects(:root).returns root_stem
61
+ root_stem.expects(:add_stem).returns JGrouper::Stem.send( :from_grouper, grouper_stem(:foo) )
62
+
63
+ JGrouper::Stem.create('foo') do |stem|
64
+ assert_not_nil stem
65
+ assert stem.kind_of? JGrouper::Stem
66
+ assert_equal 'foo', stem.display_name
67
+ assert_equal 'foo', stem.name
68
+ assert_not_nil stem.uuid
69
+ end
70
+ end
71
+
72
+ def test_mocked_create_stem_with_display_name_and_with_intermediaries
73
+ root_stem = grouper_root_stem
74
+ stem_foo = grouper_stem :foo
75
+
76
+ JGrouper::Stem.expects(:root).returns root_stem
77
+ root_stem.expects(:add_stem).returns stem
78
+ stem.expects(:add_stem).returns JGrouper::Stem.send( :from_grouper, grouper_stem('foo:bar') )
79
+
80
+ JGrouper::Stem.create('foo:bar', 'foo:Bar') do |stem|
81
+ assert_not_nil stem
82
+ assert stem.kind_of? JGrouper::Stem
83
+ assert_equal 'foo:Bar', stem.display_name
84
+ assert_equal 'foo:bar', stem.name
85
+ assert_not_nil stem.uuid
86
+ end
87
+ end
88
+
48
89
  end
49
90
 
data/test/test_subject.rb CHANGED
@@ -3,26 +3,11 @@
3
3
  require_relative 'helper'
4
4
 
5
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
-
6
+ class JGrouper::Subject::TestCase
22
7
 
23
8
  def test_mocked_find_root_subject
24
- Java::EduInternet2MiddlewareGrouper::SubjectFinder.expects(:findRootSubject).returns @root
25
- JGrouper::Subject.root_subject do |subject|
9
+ Java::EduInternet2MiddlewareGrouper::SubjectFinder.expects(:findRootSubject).returns grouper_root_subject
10
+ JGrouper::Subject.root do |subject|
26
11
  assert_not_nil subject
27
12
  assert subject.kind_of? JGrouper::Subject
28
13
  assert_equal 'GrouperSystem', subject.id
@@ -33,12 +18,12 @@ class TestSubject < Test::Unit::TestCase
33
18
  end
34
19
 
35
20
  def test_mocked_subject_to_json
36
- Java::EduInternet2MiddlewareGrouper::SubjectFinder.expects(:findRootSubject).returns @root
37
- assert_equal @json, JGrouper::Subject.root_subject.to_json
21
+ Java::EduInternet2MiddlewareGrouper::SubjectFinder.expects(:findRootSubject).returns grouper_root_subject
22
+ assert_equal root_subject_as_json, JGrouper::Subject.root.to_json
38
23
  end
39
24
 
40
25
  def test_subject_from_json
41
- subject = JSON.parse @json
26
+ subject = JSON.parse root_subject_as_json
42
27
  assert_not_nil subject
43
28
  assert subject.kind_of? JGrouper::Subject
44
29
  assert_equal 'GrouperSystem', subject.id
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.2
4
+ version: 0.0.3
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-08-10 00:00:00.000000000 Z
12
+ date: 2012-08-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -27,6 +27,38 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: pry
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: factory_girl
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '4.0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '4.0'
30
62
  - !ruby/object:Gem::Dependency
31
63
  name: mocha
32
64
  requirement: !ruby/object:Gem::Requirement
@@ -110,22 +142,30 @@ dependencies:
110
142
  description: JRuby wrapper around the Internet2 Grouper API
111
143
  email:
112
144
  - blair.christensen@gmail.com
113
- executables: []
145
+ executables:
146
+ - jgrouper
114
147
  extensions: []
115
148
  extra_rdoc_files: []
116
149
  files:
117
150
  - .gitignore
118
151
  - Gemfile
152
+ - HISTORY.md
119
153
  - LICENSE
120
154
  - README.rdoc
121
155
  - Rakefile
122
156
  - TODO.md
157
+ - bin/jgrouper
123
158
  - jgrouper.gemspec
124
159
  - lib/jgrouper.rb
125
160
  - lib/jgrouper/group_type.rb
161
+ - lib/jgrouper/group_type/test_case.rb
162
+ - lib/jgrouper/shell.rb
126
163
  - lib/jgrouper/stem.rb
164
+ - lib/jgrouper/stem/test_case.rb
127
165
  - lib/jgrouper/subject.rb
166
+ - lib/jgrouper/subject/test_case.rb
128
167
  - lib/jgrouper/version.rb
168
+ - test/factories.rb
129
169
  - test/helper.rb
130
170
  - test/test_group_type.rb
131
171
  - test/test_stem.rb
@@ -155,6 +195,7 @@ signing_key:
155
195
  specification_version: 3
156
196
  summary: JRuby wrapper around the Internet2 Grouper API
157
197
  test_files:
198
+ - test/factories.rb
158
199
  - test/helper.rb
159
200
  - test/test_group_type.rb
160
201
  - test/test_stem.rb