jgrouper 0.0.2 → 0.0.3

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