WatersOfOblivion-activeresourceinstanceauthentication 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 [name of plugin creator]
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,15 @@
1
+ =ActiveResourceInstanceAuthentication
2
+
3
+ This is just a little plugin to allow individual instances of ActiveResource
4
+ to use their own HTTP Basic Authenticated connection.
5
+
6
+ See ActiveResourceInstanceAuthentication::ActiveResourceExtensions for
7
+ documentation.
8
+
9
+ This is packaged as a Gem based plugin, so it can be installed by adding the
10
+ following line to <tt>config/environment.rb</tt> and running
11
+ <tt>rake gems:install</tt>.
12
+
13
+ config.gem "WatersOfOblivion-activeresourceinstanceauthentication", :lib => "activeresourceinstanceauthentication", :source => "http://gems.github.com/"
14
+
15
+ Copyright (c) 2009 Jonathan Bryant, released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+
5
+ desc 'Default: run unit tests.'
6
+ task :default => :test
7
+
8
+ desc 'Test the active_resource_instance_authentication plugin.'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'lib'
11
+ t.pattern = 'test/**/*_test.rb'
12
+ t.verbose = true
13
+ end
14
+
15
+ desc 'Generate documentation for the active_resource_instance_authentication plugin.'
16
+ Rake::RDocTask.new(:rdoc) do |rdoc|
17
+ rdoc.rdoc_dir = 'rdoc'
18
+ rdoc.title = 'ActiveResourceInstanceAuthentication'
19
+ rdoc.options << '--line-numbers' << '--inline-source'
20
+ rdoc.rdoc_files.include('README')
21
+ rdoc.rdoc_files.include('lib/**/*.rb')
22
+ end
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require File.join(File.dirname(__FILE__), 'rails', 'init')
data/install.rb ADDED
@@ -0,0 +1 @@
1
+ # Install hook code here
@@ -0,0 +1,99 @@
1
+ module ActiveResourceInstanceAuthentication
2
+ # This alters ActiveResource::Base to use authentication for each instance
3
+ # instead of the class. Each instance uses the class settings as defaults.
4
+ #
5
+ # class SomeModel < ActiveResource::Base
6
+ # self.user = "user"
7
+ # self.password = "password"
8
+ # end
9
+ #
10
+ # # Uses "user":"password"
11
+ # model_one = SomeModel.new
12
+ #
13
+ # # Uses "admin":"secret"
14
+ # model_two = SomeModel.new
15
+ # model_two.user = "admin"
16
+ # model_two.password = "secret"
17
+ #
18
+ # It also adds a simpler way of performing authenticated actions: the
19
+ # +authenticate+ method.
20
+ #
21
+ # # Get an authenticated instance
22
+ # SomeModel.authenticate "user", "password"
23
+ #
24
+ # # Yield an authenticated instance
25
+ # SomeModel.authenticate "user", "password" do |m|
26
+ # # Call authenticated methods on m
27
+ # end
28
+ module ActiveResourceExtensions
29
+ def self.included(base)
30
+ base.send :extend, ClassMethods
31
+
32
+ base.class_eval do
33
+ def site
34
+ self.class.site
35
+ end
36
+
37
+ def timeout
38
+ @timeout ||= self.class.timeout
39
+ end
40
+
41
+ def timeout=(timeout)
42
+ @connection = nil
43
+ @timeout = timeout
44
+ end
45
+
46
+ def user
47
+ @user ||= self.class.user
48
+ end
49
+
50
+ def user=(user)
51
+ @connection = nil
52
+ @user = user
53
+ end
54
+
55
+ def password
56
+ @password ||= self.class.password
57
+ end
58
+
59
+ def password=(password)
60
+ @connection = nil
61
+ @password = password
62
+ end
63
+
64
+ def format
65
+ @format ||= self.class.format
66
+ end
67
+
68
+ def format=(format)
69
+ @connection = nil
70
+ @format = format
71
+ end
72
+
73
+ def connection(refresh = false)
74
+ if refresh || @connection.nil?
75
+ @connection = ActiveResource::Connection.new(site, format)
76
+ @connection.user = user if user
77
+ @connection.password = password if user
78
+ @connection.timeout = timeout if timeout
79
+ end
80
+ @connection
81
+ end
82
+ end
83
+ end
84
+
85
+ module ClassMethods
86
+ def authenticate(username, password)
87
+ obj = self.new
88
+ obj.user = username
89
+ obj.password = password
90
+
91
+ if block_given?
92
+ yield obj
93
+ else
94
+ obj
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
data/rails/init.rb ADDED
@@ -0,0 +1,4 @@
1
+ # Include hook code here
2
+
3
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'active_resource_instance_authentication')
4
+ ActiveResource::Base.send :include, ActiveResourceInstanceAuthentication::ActiveResourceExtensions
@@ -0,0 +1,122 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'active_resource'
4
+ require 'active_resource_instance_authentication'
5
+
6
+ class ActiveResourceInstanceAuthenticationTest < Test::Unit::TestCase
7
+ def setup
8
+ ActiveResource::Base.send :include, ActiveResourceInstanceAuthentication::ActiveResourceExtensions
9
+ end
10
+
11
+ def test_site
12
+ assert_respond_to ActiveResource::Base.new, :site
13
+ end
14
+
15
+ def test_site_inherits_from_class
16
+ ar = ActiveResource::Base.new
17
+ assert_nil ar.site
18
+ ActiveResource::Base.site = "http://localhost/"
19
+ assert_equal URI.parse("http://localhost/"), ar.site
20
+ end
21
+
22
+ def test_site=
23
+ ar = ActiveResource::Base.new
24
+ assert_respond_to ar, :site=
25
+ ar.site = "http://localhost/"
26
+ assert_equal URI.parse("http://localhost/"), ar.site
27
+ assert_nil ar.instance_variable_get("@connection")
28
+ end
29
+
30
+ def test_timeout
31
+ assert_respond_to ActiveResource::Base.new, :timeout
32
+ end
33
+
34
+ def test_timeout_inherits_from_class
35
+ ar = ActiveResource::Base.new
36
+ assert_nil ar.timeout
37
+ ActiveResource::Base.timeout = 30
38
+ assert_equal 30, ar.timeout
39
+ end
40
+
41
+ def test_timeout=
42
+ ar = ActiveResource::Base.new
43
+ assert_respond_to ar, :timeout=
44
+ ar.timeout = 30
45
+ assert_equal 30, ar.timeout
46
+ assert_nil ar.instance_variable_get("@connection")
47
+ end
48
+
49
+ def test_user
50
+ assert_respond_to ActiveResource::Base.new, :user
51
+ end
52
+
53
+ def test_user_inherits_from_class
54
+ ar = ActiveResource::Base.new
55
+ assert_nil ar.user
56
+ ActiveResource::Base.user = "jdoe"
57
+ assert_equal "jdoe", ar.user
58
+ end
59
+
60
+ def test_user=
61
+ ar = ActiveResource::Base.new
62
+ assert_respond_to ar, :user=
63
+ ar.user = "jdoe"
64
+ assert_equal "jdoe", ar.user
65
+ assert_nil ar.instance_variable_get("@connection")
66
+ end
67
+
68
+ def test_password
69
+ assert_respond_to ActiveResource::Base.new, :password
70
+ end
71
+
72
+ def test_password_inherits_from_class
73
+ ar = ActiveResource::Base.new
74
+ assert_nil ar.password
75
+ ActiveResource::Base.password = "password"
76
+ assert_equal "password", ar.password
77
+ end
78
+
79
+ def test_password=
80
+ ar = ActiveResource::Base.new
81
+ assert_respond_to ar, :password=
82
+ ar.password = "password"
83
+ assert_equal "password", ar.password
84
+ assert_nil ar.instance_variable_get("@connection")
85
+ end
86
+
87
+ def test_format
88
+ assert_respond_to ActiveResource::Base.new, :format
89
+ end
90
+
91
+ def test_format_inherits_from_class
92
+ ar = ActiveResource::Base.new
93
+ assert_equal ActiveResource::Formats::XmlFormat, ar.format
94
+ end
95
+
96
+ def test_format=
97
+ ar = ActiveResource::Base.new
98
+ ar.format = :xml
99
+ assert_equal :xml, ar.format
100
+ assert_nil ar.instance_variable_get("@connection")
101
+ end
102
+
103
+ def test_connection
104
+ ar = ActiveResource::Base.new
105
+ assert_respond_to ar, :connection
106
+ end
107
+
108
+ def test_authenticate
109
+ assert_respond_to ActiveResource::Base, :authenticate
110
+ ar = ActiveResource::Base.authenticate("foo", "bar")
111
+ assert ar.is_a? ActiveResource::Base
112
+ assert_equal "foo", ar.user
113
+ assert_equal "bar", ar.password
114
+ ar = ActiveResource::Base.authenticate("foo", "bar", "http://www.site.com/")
115
+ assert_equal URI.parse("http://www.site.com/"), ar.site
116
+ assert_raises RuntimeError do
117
+ ActiveResource::Base.authenticate "foo", "bar" do
118
+ raise "I yield to the block"
119
+ end
120
+ end
121
+ end
122
+ end
data/uninstall.rb ADDED
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: WatersOfOblivion-activeresourceinstanceauthentication
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Jonathan Bryant
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-05 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: ""
17
+ email: watersofmemory@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
24
+ files:
25
+ - init.rb
26
+ - install.rb
27
+ - MIT-LICENSE
28
+ - Rakefile
29
+ - README
30
+ - uninstall.rb
31
+ - rails/init.rb
32
+ - test/active_resource_instance_authentication_test.rb
33
+ - lib/active_resource_instance_authentication.rb
34
+ has_rdoc: true
35
+ homepage: http://watersofoblivion.github.com/activeresourceinstanceauthentication/
36
+ post_install_message:
37
+ rdoc_options:
38
+ - --title
39
+ - ActiveResource Instance Authentication
40
+ - --line-numbers
41
+ - --inline-source
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: "0"
49
+ version:
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: "0"
55
+ version:
56
+ requirements: []
57
+
58
+ rubyforge_project:
59
+ rubygems_version: 1.2.0
60
+ signing_key:
61
+ specification_version: 2
62
+ summary: A Rails plugin ActiveResource extension for instance-level (instead of class-level) HTTP Basic Authentication
63
+ test_files:
64
+ - test/active_resource_instance_authentication_test.rb