rpx_regexp 0.0.1

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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in rpx_crowdint.gemspec
4
+ gemspec
@@ -0,0 +1,32 @@
1
+ # RPX_Regexp
2
+
3
+ Whenever we want to authenticate users on a Rails app, we like to go
4
+ with [Janrain](http://www.janrain.com/) + [Devise](https://github.com/plataformatec/devise).
5
+
6
+ To achieve this we use [this excelent gem](https://github.com/slainer68/devise_rpx_connectable)
7
+ that just makes everything very easy.
8
+
9
+ Sometimes we like to do our own apps where only users in our domain
10
+ have access, and we use this gem to make sure Janrain and Devise
11
+ only authenticates our users.
12
+
13
+ ## Usage
14
+
15
+ Add the gem to your Gemfile or require it depending on what you are
16
+ using.
17
+
18
+ Then, just set your email RegExp somewhere on your code:
19
+
20
+ RPXNow.email_regexp = /@crowdint.com$/
21
+
22
+ For rails, you can put it on an initializer. Since this is
23
+ authentication code, I usually put it on *initializers/devise.rb*
24
+
25
+ # About the Author
26
+
27
+ [Crowd Interactive](http://www.crowdint.com) is a Ruby and Rails consultancy firm
28
+ powered by a team of enthusiast engineers who love programming.
29
+ We turn your ideas into web applications, and we like challenging projects. We also have
30
+ a lot of experience in retail, so it doesn't matter if your idea is about
31
+ something you'd like to sell, we can surely help you.
32
+
@@ -0,0 +1,12 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rake/testtask'
5
+
6
+ task :default => :test
7
+
8
+ Rake::TestTask.new do |t|
9
+ t.verbose = true
10
+ t.libs << 'lib' << 'test'
11
+ t.pattern = 'test/**/test_*.rb'
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'rpx_now'
2
+
3
+ module RPXNow
4
+ alias_method :user_data!, :user_data
5
+
6
+ attr_accessor :email_regexp
7
+
8
+ def user_data(token, options={})
9
+ result = user_data!(token, options={})
10
+ result["email"].match(self.email_regexp) ? result : nil
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module RpxRegexp
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "rpx_regexp/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "rpx_regexp"
7
+ s.version = RpxRegexp::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["David Padilla"]
10
+ s.email = ["david@crowdint.com"]
11
+ s.homepage = "https://rubygems.org/gems/rpx_regexp"
12
+ s.summary = %q{Restrict who authenticates through Janrain with a regexp}
13
+ s.description = %q{Restrict who authenticates through Janrain with a regexp}
14
+
15
+ s.rubyforge_project = "rpx_crowdint"
16
+
17
+ s.add_dependency 'rpx_now'
18
+ s.add_development_dependency 'minitest'
19
+ s.add_development_dependency 'mocha'
20
+
21
+ s.files = `git ls-files`.split("\n")
22
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
23
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
+ s.require_paths = ["lib"]
25
+ end
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'minitest/autorun'
5
+ require 'mocha'
6
+ require 'rpx_regexp'
@@ -0,0 +1,37 @@
1
+ require 'test_helper'
2
+
3
+ describe RPXNow do
4
+ it "aliases user_data to user_data!" do
5
+ assert_respond_to RPXNow, :user_data!
6
+ assert_respond_to RPXNow, :user_data
7
+ end
8
+
9
+ describe "user_data" do
10
+ before :each do
11
+ @result = { "email" => "david@crowdint.com" }
12
+ @token = MiniTest::Mock.new
13
+ end
14
+
15
+ describe "user email matches email_regexp" do
16
+ before :each do
17
+ RPXNow.email_regexp = %r{@crowdint.com}
18
+ end
19
+
20
+ it "returns the result" do
21
+ RPXNow.expects(:user_data!).with(@token, {}).returns(@result)
22
+ assert_equal @result, RPXNow.user_data(@token)
23
+ end
24
+ end
25
+
26
+ describe "user email doesn't match email_regexp" do
27
+ before :each do
28
+ RPXNow.email_regexp = %r{@google.com}
29
+ end
30
+
31
+ it "returns the result" do
32
+ RPXNow.expects(:user_data!).with(@token, {}).returns(@result)
33
+ assert_nil RPXNow.user_data(@token)
34
+ end
35
+ end
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rpx_regexp
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - David Padilla
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-03-18 00:00:00 -06:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rpx_now
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: minitest
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: mocha
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
63
+ description: Restrict who authenticates through Janrain with a regexp
64
+ email:
65
+ - david@crowdint.com
66
+ executables: []
67
+
68
+ extensions: []
69
+
70
+ extra_rdoc_files: []
71
+
72
+ files:
73
+ - .gitignore
74
+ - Gemfile
75
+ - README.md
76
+ - Rakefile
77
+ - lib/rpx_regexp.rb
78
+ - lib/rpx_regexp/version.rb
79
+ - rpx_regexp.gemspec
80
+ - test/test_helper.rb
81
+ - test/test_rpx_regexp.rb
82
+ has_rdoc: true
83
+ homepage: https://rubygems.org/gems/rpx_regexp
84
+ licenses: []
85
+
86
+ post_install_message:
87
+ rdoc_options: []
88
+
89
+ require_paths:
90
+ - lib
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ hash: 3
97
+ segments:
98
+ - 0
99
+ version: "0"
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ hash: 3
106
+ segments:
107
+ - 0
108
+ version: "0"
109
+ requirements: []
110
+
111
+ rubyforge_project: rpx_crowdint
112
+ rubygems_version: 1.3.7
113
+ signing_key:
114
+ specification_version: 3
115
+ summary: Restrict who authenticates through Janrain with a regexp
116
+ test_files:
117
+ - test/test_helper.rb
118
+ - test/test_rpx_regexp.rb