oauth2_provider_engine 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.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +40 -0
- data/app/assets/javascripts/oauth2_provider/application.js +52 -0
- data/app/assets/javascripts/oauth2_provider/highcharts.js +162 -0
- data/app/assets/javascripts/oauth2_provider/jquery.tagsinput.js +218 -0
- data/app/assets/stylesheets/oauth2_provider/gh-buttons.css +388 -0
- data/app/assets/stylesheets/oauth2_provider/gh-icons.png +0 -0
- data/app/assets/stylesheets/oauth2_provider/jquery.tagsinput.css +6 -0
- data/app/assets/stylesheets/oauth2_provider/reset.css +2 -0
- data/app/assets/stylesheets/oauth2_provider/template.css +52 -0
- data/app/controllers/oauth2_provider/accesses_controller.rb +39 -0
- data/app/controllers/oauth2_provider/application_controller.rb +17 -0
- data/app/controllers/oauth2_provider/authorize_controller.rb +141 -0
- data/app/controllers/oauth2_provider/clients_controller.rb +85 -0
- data/app/controllers/oauth2_provider/scopes_controller.rb +63 -0
- data/app/controllers/oauth2_provider/token_controller.rb +187 -0
- data/app/helpers/clients_helper.rb +5 -0
- data/app/helpers/oauth2_provider/application_helper.rb +4 -0
- data/app/models/oauth2_provider/client.rb +129 -0
- data/app/models/oauth2_provider/document.rb +15 -0
- data/app/models/oauth2_provider/oauth_access.rb +80 -0
- data/app/models/oauth2_provider/oauth_authorization.rb +70 -0
- data/app/models/oauth2_provider/oauth_daily_request.rb +54 -0
- data/app/models/oauth2_provider/oauth_refresh_token.rb +20 -0
- data/app/models/oauth2_provider/oauth_token.rb +78 -0
- data/app/models/oauth2_provider/scope.rb +39 -0
- data/app/views/layouts/oauth2_provider/application.html.erb +62 -0
- data/app/views/oauth2_provider/accesses/index.html.erb +25 -0
- data/app/views/oauth2_provider/accesses/show.html.erb +35 -0
- data/app/views/oauth2_provider/clients/_form.html.erb +50 -0
- data/app/views/oauth2_provider/clients/edit.html.erb +9 -0
- data/app/views/oauth2_provider/clients/index.html.erb +43 -0
- data/app/views/oauth2_provider/clients/new.html.erb +8 -0
- data/app/views/oauth2_provider/clients/show.html.erb +49 -0
- data/app/views/oauth2_provider/scopes/_form.html.erb +35 -0
- data/app/views/oauth2_provider/scopes/edit.html.erb +8 -0
- data/app/views/oauth2_provider/scopes/index.html.erb +27 -0
- data/app/views/oauth2_provider/scopes/new.html.erb +7 -0
- data/app/views/oauth2_provider/scopes/show.html.erb +19 -0
- data/app/views/shared/authorize.html.erb +34 -0
- data/app/views/shared/token.json.erb +8 -0
- data/config/locales/en.yml +31 -0
- data/config/oauth.yml +4 -0
- data/config/routes.rb +25 -0
- data/lib/oauth2_provider.rb +38 -0
- data/lib/oauth2_provider/controller_mixin.rb +53 -0
- data/lib/oauth2_provider/engine.rb +4 -0
- data/lib/oauth2_provider_engine.rb +1 -0
- data/lib/oauth2_provider_engine/version.rb +3 -0
- data/test/dummy/CHANGELOG.rdoc +67 -0
- data/test/dummy/Gemfile +53 -0
- data/test/dummy/Gemfile.lock +254 -0
- data/test/dummy/README.rdoc +522 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/VERSION +1 -0
- data/test/dummy/app/assets/stylesheets/reset.css +2 -0
- data/test/dummy/app/assets/stylesheets/template.css +52 -0
- data/test/dummy/app/controllers/application_controller.rb +52 -0
- data/test/dummy/app/controllers/pastas_controller.rb +23 -0
- data/test/dummy/app/controllers/pizzas_controller.rb +23 -0
- data/test/dummy/app/controllers/sessions_controller.rb +26 -0
- data/test/dummy/app/controllers/users_controller.rb +59 -0
- data/test/dummy/app/models/user.rb +50 -0
- data/test/dummy/app/views/layouts/application.html.erb +65 -0
- data/test/dummy/app/views/sessions/new.html.erb +25 -0
- data/test/dummy/app/views/shared/403.json.erb +4 -0
- data/test/dummy/app/views/shared/404.json.erb +6 -0
- data/test/dummy/app/views/shared/422.json.erb +5 -0
- data/test/dummy/app/views/shared/500.json.erb +4 -0
- data/test/dummy/app/views/shared/html/404.html.erb +0 -0
- data/test/dummy/app/views/shared/html/422.html.erb +0 -0
- data/test/dummy/app/views/users/_form.html.erb +27 -0
- data/test/dummy/app/views/users/edit.html.erb +8 -0
- data/test/dummy/app/views/users/index.html.erb +20 -0
- data/test/dummy/app/views/users/new.html.erb +46 -0
- data/test/dummy/app/views/users/show.html.erb +15 -0
- data/test/dummy/app/views/users/show.json.erb +6 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +57 -0
- data/test/dummy/config/boot.rb +13 -0
- data/test/dummy/config/cucumber.yml +8 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +32 -0
- data/test/dummy/config/environments/production.rb +58 -0
- data/test/dummy/config/environments/test.rb +35 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/test.rb +3 -0
- data/test/dummy/config/locales/en.yml +1 -0
- data/test/dummy/config/mongoid.yml +20 -0
- data/test/dummy/config/routes.rb +22 -0
- data/test/dummy/db/seeds.rb +7 -0
- data/test/dummy/doc/README_FOR_APP +2 -0
- data/test/dummy/lib/tasks/cucumber.rake +53 -0
- data/test/dummy/lib/tasks/watchr.rake +5 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +4 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/public/robots.txt +5 -0
- data/test/dummy/script/cucumber +10 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/spec/acceptance/acceptance_helper.rb +5 -0
- data/test/dummy/spec/acceptance/accesses_controller_spec.rb +77 -0
- data/test/dummy/spec/acceptance/clients_controller_spec.rb +218 -0
- data/test/dummy/spec/acceptance/oauth_authorize_controller_spec.rb +241 -0
- data/test/dummy/spec/acceptance/oauth_token_controller_spec.rb +196 -0
- data/test/dummy/spec/acceptance/resource_controller_spec.rb +143 -0
- data/test/dummy/spec/acceptance/scopes_controller_spec.rb +227 -0
- data/test/dummy/spec/acceptance/support/helpers.rb +81 -0
- data/test/dummy/spec/acceptance/support/paths.rb +9 -0
- data/test/dummy/spec/acceptance/support/view_helpers.rb +52 -0
- data/test/dummy/spec/acceptance/users_controller_spec.rb +198 -0
- data/test/dummy/spec/extras/scope_spec.rb +105 -0
- data/test/dummy/spec/factories/oauth.rb +106 -0
- data/test/dummy/spec/models/oauth/client_spec.rb +123 -0
- data/test/dummy/spec/models/oauth/oauth_access_spec.rb +48 -0
- data/test/dummy/spec/models/oauth/oauth_authorization_spec.rb +50 -0
- data/test/dummy/spec/models/oauth/oauth_daily_request_spec.rb +14 -0
- data/test/dummy/spec/models/oauth/oauth_refresh_token_spec.rb +11 -0
- data/test/dummy/spec/models/oauth/oauth_token_spec.rb +55 -0
- data/test/dummy/spec/models/scope_spec.rb +17 -0
- data/test/dummy/spec/spec_helper.rb +39 -0
- data/test/dummy/spec/support/settings_helper.rb +28 -0
- data/test/dummy/test/initializers/capybara_headers_hack.rb +23 -0
- data/test/oauth2_provider_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- metadata +387 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
en:
|
|
2
|
+
notifications:
|
|
3
|
+
oauth:
|
|
4
|
+
client:
|
|
5
|
+
not_found: "Client not found with the provided params"
|
|
6
|
+
not_authorized: "Client not authorized with the provided scope"
|
|
7
|
+
blocked: "Client blocked"
|
|
8
|
+
response_type:
|
|
9
|
+
not_valid: "Not valid response type"
|
|
10
|
+
authorization:
|
|
11
|
+
not_found: "Authorization not found with the provided params"
|
|
12
|
+
expired: "Authorization expired"
|
|
13
|
+
resource_owner:
|
|
14
|
+
not_found: "User not found with the provided params"
|
|
15
|
+
blocked_client: "Client blocked from the user (check preferences)"
|
|
16
|
+
token:
|
|
17
|
+
not_found: "Access token not found with the provided params"
|
|
18
|
+
expired: "Access token authorization expired"
|
|
19
|
+
blocked_token: "Access token blocked from the user (logged out)"
|
|
20
|
+
refresh_token:
|
|
21
|
+
not_found: "Refresh token not found with the provided params"
|
|
22
|
+
document:
|
|
23
|
+
not_found: "Resource not found"
|
|
24
|
+
not_valid: "Not valid attributes"
|
|
25
|
+
json:
|
|
26
|
+
not_valid: "Not valid JSON"
|
|
27
|
+
not_array: "Not a valid JSON type associated"
|
|
28
|
+
pagination:
|
|
29
|
+
not_valid_page: "Not a valid page"
|
|
30
|
+
not_valid_per_page: "Not a valid per_page"
|
|
31
|
+
|
data/config/oauth.yml
ADDED
data/config/routes.rb
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Oauth2Provider::Engine.routes.draw do
|
|
2
|
+
namespace :oauth2_provider, path: '' do
|
|
3
|
+
|
|
4
|
+
get "authorize" => "authorize#show", defaults: { format: "html" }
|
|
5
|
+
post "authorize" => "authorize#create", defaults: { format: "html" }
|
|
6
|
+
delete "authorize" => "authorize#destroy", defaults: { format: "html" }
|
|
7
|
+
delete "token/:id" => "token#destroy", defaults: { format: "json" }
|
|
8
|
+
post "token" => "token#create", defaults: { format: "json" }
|
|
9
|
+
|
|
10
|
+
resources :scopes
|
|
11
|
+
|
|
12
|
+
resources :clients do
|
|
13
|
+
put :block, on: :member
|
|
14
|
+
put :unblock, on: :member
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
resources :accesses do
|
|
18
|
+
put :block, on: :member
|
|
19
|
+
put :unblock, on: :member
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
root :to => "clients#index"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'mongoid'
|
|
2
|
+
require 'validate_url'
|
|
3
|
+
require 'chronic'
|
|
4
|
+
require 'orm_adapter'
|
|
5
|
+
require "oauth2_provider/engine"
|
|
6
|
+
require "oauth2_provider/controller_mixin"
|
|
7
|
+
|
|
8
|
+
module Oauth2Provider
|
|
9
|
+
def self.settings
|
|
10
|
+
@settings ||= YAML.load_file("#{Oauth2Provider::Engine.root}/config/oauth.yml")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.normalize_scope(scope = [])
|
|
14
|
+
scope = scope.split(" ") if scope.kind_of? String
|
|
15
|
+
normalized = self::Scope.any_in(name: scope)
|
|
16
|
+
normalized = normalized.map(&:values).flatten
|
|
17
|
+
|
|
18
|
+
if normalized.empty?
|
|
19
|
+
return self.clean(scope)
|
|
20
|
+
else
|
|
21
|
+
return self.clean(scope) + self.normalize_scope(normalized)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Remove 'no action' keys. For example during normalization
|
|
26
|
+
# we add keys like 'pizza' (resource names) or 'pizza/read'
|
|
27
|
+
# wihch we have to remove to easily make the access recognition
|
|
28
|
+
# with the bearer token.
|
|
29
|
+
#
|
|
30
|
+
# NOTE: at the moment are not allowed methods which contain
|
|
31
|
+
# the word "read" because it will be removed
|
|
32
|
+
def self.clean(scope)
|
|
33
|
+
scope = scope.keep_if {|scope| scope =~ /\// }
|
|
34
|
+
scope = scope.delete_if {|scope| scope =~ /read/ }
|
|
35
|
+
scope = scope.uniq
|
|
36
|
+
return scope
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module Oauth2Provider
|
|
2
|
+
module ControllerMixin
|
|
3
|
+
def _oauth_provider_authenticate
|
|
4
|
+
if api_request
|
|
5
|
+
oauth_authorized # uncomment to make all json API protected
|
|
6
|
+
else
|
|
7
|
+
session_auth
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def api_request
|
|
12
|
+
json?
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def json?
|
|
16
|
+
request.format == "application/json"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def _oauth_provider_json_body
|
|
20
|
+
body = request.body.read.to_s
|
|
21
|
+
@body = if body.empty?
|
|
22
|
+
HashWithIndifferentAccess.new({})
|
|
23
|
+
else
|
|
24
|
+
HashWithIndifferentAccess.new(Rack::Utils.parse_nested_query body)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def oauth_authorized
|
|
29
|
+
action = params[:controller] + "/" + params[:action]
|
|
30
|
+
_oauth_provider_normalize_token
|
|
31
|
+
@token = Oauth2Provider::OauthToken.to_adapter.find_first(token: params[:token], scope: action)
|
|
32
|
+
if @token.nil? or @token.blocked?
|
|
33
|
+
render text: "Unauthorized access.", status: 401
|
|
34
|
+
return false
|
|
35
|
+
else
|
|
36
|
+
access = Oauth2Provider::OauthAccess.to_adapter.find_first(client_uri: @token.client_uri , resource_owner_uri: @token.resource_owner_uri)
|
|
37
|
+
access.accessed!
|
|
38
|
+
@current_user = User.to_adapter.find_first(id: @token.resource_owner_uri.split('/').last)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def _oauth_provider_normalize_token
|
|
43
|
+
# Token in the body
|
|
44
|
+
if (_oauth_provider_json_body and @body[:token])
|
|
45
|
+
params[:token] = @body[:token]
|
|
46
|
+
end
|
|
47
|
+
# Token in the header
|
|
48
|
+
if request.env["Authorization"]
|
|
49
|
+
params[:token] = request.env["Authorization"].split(" ").last
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'oauth2_provider'
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
= Changelog
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
== Release v0.3.1 (2011/04/22)
|
|
5
|
+
|
|
6
|
+
* Added documentation with screenshots
|
|
7
|
+
* Added tag system on scope definition
|
|
8
|
+
* Added basic graph with access token stats
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
== Release v0.3.0 (2011/04/21)
|
|
12
|
+
|
|
13
|
+
* Added refined UI for the dashboard section
|
|
14
|
+
* Updated documentation
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
== Release v0.2.3 (2011/04/19)
|
|
18
|
+
|
|
19
|
+
* Added redirect to last URI before logging in
|
|
20
|
+
* Added functionality to block the access of a user resource in
|
|
21
|
+
behalf of a specific client
|
|
22
|
+
* Added client access and stats to every user in the dashboard
|
|
23
|
+
* Added functionality to block a client (only admin can do this)
|
|
24
|
+
* Added UI to automatically set admin the first user which
|
|
25
|
+
register into the OAuth Server
|
|
26
|
+
* Added autoupdate of scopes to all clients when one of them
|
|
27
|
+
changes
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
== Release v0.2.2 (2011/04/18)
|
|
31
|
+
|
|
32
|
+
* Added documentation on scope definition, action authorization, testing
|
|
33
|
+
framework and oauth flow testing code.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
== Release v0.2.1 (2011/04/15)
|
|
37
|
+
|
|
38
|
+
* Added bearer token protection simply adding the filter
|
|
39
|
+
<tt>before_filter :oauth_authorized<tt> on the conrtoller
|
|
40
|
+
* Added dynamic scope setting. Now is possible to set the
|
|
41
|
+
scopes directly in the admin interface, and easily protect
|
|
42
|
+
every method inside a controller.
|
|
43
|
+
* Added dashboard for admin to add scopes and monitor all
|
|
44
|
+
registered users
|
|
45
|
+
* Added dashboard to control and create clients
|
|
46
|
+
* Added dashboard to edit user info
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
== Release v0.2.0 (2011/04/06)
|
|
50
|
+
|
|
51
|
+
* Added refresh token mechanisms
|
|
52
|
+
* Removed unuseful gems
|
|
53
|
+
* Changed denied message from access=denied to error=access_denied
|
|
54
|
+
* Introduced test to block of single token (idea of logout)
|
|
55
|
+
* Changed oauth/authorize with /oauth/authorization to make sistem more REST
|
|
56
|
+
* Redefinition of all documentation, more simple and complete
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
== Release v0.1.1 (2011/03/29)
|
|
60
|
+
|
|
61
|
+
* Added documentation explaining the authorization flows
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
== Release v0.1.0 (2011/03/29)
|
|
65
|
+
|
|
66
|
+
* Added documentation explaining the existing flows
|
|
67
|
+
* Added OAuth2 server with acceptance tests
|
data/test/dummy/Gemfile
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
source 'http://rubygems.org'
|
|
2
|
+
source 'http://gemcutter.org'
|
|
3
|
+
|
|
4
|
+
gem 'rails', '3.2.5'
|
|
5
|
+
|
|
6
|
+
# Gems used only for assets and not required
|
|
7
|
+
# in production environments by default.
|
|
8
|
+
group :assets do
|
|
9
|
+
gem 'sass-rails', '~> 3.2.3'
|
|
10
|
+
gem 'coffee-rails', '~> 3.2.1'
|
|
11
|
+
|
|
12
|
+
# See https://github.com/sstephenson/execjs#readme for more supported runtime
|
|
13
|
+
# gem 'therubyracer'
|
|
14
|
+
|
|
15
|
+
gem 'uglifier', '>= 1.0.3'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
gem "jquery-rails"
|
|
19
|
+
gem 'mongoid'
|
|
20
|
+
gem 'bson_ext'
|
|
21
|
+
gem 'yajl-ruby'
|
|
22
|
+
gem 'will_paginate'
|
|
23
|
+
gem 'rack-ssl'
|
|
24
|
+
gem "bcrypt-ruby", :require => "bcrypt"
|
|
25
|
+
gem 'validate_url'
|
|
26
|
+
gem 'email_validator'
|
|
27
|
+
gem 'chronic'
|
|
28
|
+
gem 'jquery-rails'
|
|
29
|
+
gem 'orm_adapter', :git => 'git://github.com/timgaleckas/orm_adapter.git'
|
|
30
|
+
gem 'oauth2_provider', :path => '../..'
|
|
31
|
+
|
|
32
|
+
group :development, :test do
|
|
33
|
+
gem 'debugger'
|
|
34
|
+
gem 'rspec-rails'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
group :test do
|
|
38
|
+
gem 'steak'
|
|
39
|
+
gem 'capybara'
|
|
40
|
+
gem 'selenium-client'
|
|
41
|
+
gem 'selenium-webdriver'
|
|
42
|
+
gem 'launchy'
|
|
43
|
+
gem 'shoulda'
|
|
44
|
+
gem 'factory_girl_rails'
|
|
45
|
+
gem 'webrat'
|
|
46
|
+
gem 'autotest'
|
|
47
|
+
gem 'autotest-growl'
|
|
48
|
+
gem 'database_cleaner'
|
|
49
|
+
gem 'fuubar'
|
|
50
|
+
gem 'watchr'
|
|
51
|
+
gem 'delorean'
|
|
52
|
+
gem 'rspec-set'
|
|
53
|
+
end
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
GIT
|
|
2
|
+
remote: git://github.com/timgaleckas/orm_adapter.git
|
|
3
|
+
revision: e4ae617d8eea6c50ca1a4db9de4a12669868119a
|
|
4
|
+
specs:
|
|
5
|
+
orm_adapter (0.1.0)
|
|
6
|
+
|
|
7
|
+
PATH
|
|
8
|
+
remote: ../..
|
|
9
|
+
specs:
|
|
10
|
+
oauth2_provider (0.0.1)
|
|
11
|
+
bson_ext
|
|
12
|
+
chronic
|
|
13
|
+
jquery-rails
|
|
14
|
+
mongoid
|
|
15
|
+
orm_adapter
|
|
16
|
+
rails (~> 3.2.5)
|
|
17
|
+
validate_url
|
|
18
|
+
|
|
19
|
+
GEM
|
|
20
|
+
remote: http://rubygems.org/
|
|
21
|
+
remote: http://gemcutter.org/
|
|
22
|
+
specs:
|
|
23
|
+
ZenTest (4.8.1)
|
|
24
|
+
actionmailer (3.2.5)
|
|
25
|
+
actionpack (= 3.2.5)
|
|
26
|
+
mail (~> 2.4.4)
|
|
27
|
+
actionpack (3.2.5)
|
|
28
|
+
activemodel (= 3.2.5)
|
|
29
|
+
activesupport (= 3.2.5)
|
|
30
|
+
builder (~> 3.0.0)
|
|
31
|
+
erubis (~> 2.7.0)
|
|
32
|
+
journey (~> 1.0.1)
|
|
33
|
+
rack (~> 1.4.0)
|
|
34
|
+
rack-cache (~> 1.2)
|
|
35
|
+
rack-test (~> 0.6.1)
|
|
36
|
+
sprockets (~> 2.1.3)
|
|
37
|
+
activemodel (3.2.5)
|
|
38
|
+
activesupport (= 3.2.5)
|
|
39
|
+
builder (~> 3.0.0)
|
|
40
|
+
activerecord (3.2.5)
|
|
41
|
+
activemodel (= 3.2.5)
|
|
42
|
+
activesupport (= 3.2.5)
|
|
43
|
+
arel (~> 3.0.2)
|
|
44
|
+
tzinfo (~> 0.3.29)
|
|
45
|
+
activeresource (3.2.5)
|
|
46
|
+
activemodel (= 3.2.5)
|
|
47
|
+
activesupport (= 3.2.5)
|
|
48
|
+
activesupport (3.2.5)
|
|
49
|
+
i18n (~> 0.6)
|
|
50
|
+
multi_json (~> 1.0)
|
|
51
|
+
addressable (2.2.8)
|
|
52
|
+
arel (3.0.2)
|
|
53
|
+
autotest (4.4.6)
|
|
54
|
+
ZenTest (>= 4.4.1)
|
|
55
|
+
autotest-growl (0.2.16)
|
|
56
|
+
bcrypt-ruby (3.0.1)
|
|
57
|
+
bson (1.6.4)
|
|
58
|
+
bson_ext (1.6.4)
|
|
59
|
+
bson (~> 1.6.4)
|
|
60
|
+
builder (3.0.0)
|
|
61
|
+
capybara (1.1.2)
|
|
62
|
+
mime-types (>= 1.16)
|
|
63
|
+
nokogiri (>= 1.3.3)
|
|
64
|
+
rack (>= 1.0.0)
|
|
65
|
+
rack-test (>= 0.5.4)
|
|
66
|
+
selenium-webdriver (~> 2.0)
|
|
67
|
+
xpath (~> 0.1.4)
|
|
68
|
+
childprocess (0.3.2)
|
|
69
|
+
ffi (~> 1.0.6)
|
|
70
|
+
chronic (0.6.7)
|
|
71
|
+
coffee-rails (3.2.2)
|
|
72
|
+
coffee-script (>= 2.2.0)
|
|
73
|
+
railties (~> 3.2.0)
|
|
74
|
+
coffee-script (2.2.0)
|
|
75
|
+
coffee-script-source
|
|
76
|
+
execjs
|
|
77
|
+
coffee-script-source (1.3.3)
|
|
78
|
+
columnize (0.3.6)
|
|
79
|
+
database_cleaner (0.8.0)
|
|
80
|
+
debugger (1.1.4)
|
|
81
|
+
columnize (>= 0.3.1)
|
|
82
|
+
debugger-linecache (~> 1.1.1)
|
|
83
|
+
debugger-ruby_core_source (~> 1.1.3)
|
|
84
|
+
debugger-linecache (1.1.1)
|
|
85
|
+
debugger-ruby_core_source (>= 1.1.1)
|
|
86
|
+
debugger-ruby_core_source (1.1.3)
|
|
87
|
+
delorean (1.2.0)
|
|
88
|
+
chronic
|
|
89
|
+
diff-lcs (1.1.3)
|
|
90
|
+
email_validator (1.3.0)
|
|
91
|
+
activemodel
|
|
92
|
+
erubis (2.7.0)
|
|
93
|
+
execjs (1.4.0)
|
|
94
|
+
multi_json (~> 1.0)
|
|
95
|
+
factory_girl (3.4.0)
|
|
96
|
+
activesupport (>= 3.0.0)
|
|
97
|
+
factory_girl_rails (3.4.0)
|
|
98
|
+
factory_girl (~> 3.4.0)
|
|
99
|
+
railties (>= 3.0.0)
|
|
100
|
+
ffi (1.0.11)
|
|
101
|
+
fuubar (1.0.0)
|
|
102
|
+
rspec (~> 2.0)
|
|
103
|
+
rspec-instafail (~> 0.2.0)
|
|
104
|
+
ruby-progressbar (~> 0.0.10)
|
|
105
|
+
hike (1.2.1)
|
|
106
|
+
i18n (0.6.0)
|
|
107
|
+
journey (1.0.3)
|
|
108
|
+
jquery-rails (2.0.2)
|
|
109
|
+
railties (>= 3.2.0, < 5.0)
|
|
110
|
+
thor (~> 0.14)
|
|
111
|
+
json (1.7.3)
|
|
112
|
+
launchy (2.1.0)
|
|
113
|
+
addressable (~> 2.2.6)
|
|
114
|
+
libwebsocket (0.1.3)
|
|
115
|
+
addressable
|
|
116
|
+
mail (2.4.4)
|
|
117
|
+
i18n (>= 0.4.0)
|
|
118
|
+
mime-types (~> 1.16)
|
|
119
|
+
treetop (~> 1.4.8)
|
|
120
|
+
mime-types (1.18)
|
|
121
|
+
mongo (1.6.2)
|
|
122
|
+
bson (~> 1.6.2)
|
|
123
|
+
mongoid (2.4.11)
|
|
124
|
+
activemodel (~> 3.1)
|
|
125
|
+
mongo (<= 1.6.2)
|
|
126
|
+
tzinfo (~> 0.3.22)
|
|
127
|
+
multi_json (1.3.6)
|
|
128
|
+
nokogiri (1.5.4)
|
|
129
|
+
polyglot (0.3.3)
|
|
130
|
+
rack (1.4.1)
|
|
131
|
+
rack-cache (1.2)
|
|
132
|
+
rack (>= 0.4)
|
|
133
|
+
rack-ssl (1.3.2)
|
|
134
|
+
rack
|
|
135
|
+
rack-test (0.6.1)
|
|
136
|
+
rack (>= 1.0)
|
|
137
|
+
rails (3.2.5)
|
|
138
|
+
actionmailer (= 3.2.5)
|
|
139
|
+
actionpack (= 3.2.5)
|
|
140
|
+
activerecord (= 3.2.5)
|
|
141
|
+
activeresource (= 3.2.5)
|
|
142
|
+
activesupport (= 3.2.5)
|
|
143
|
+
bundler (~> 1.0)
|
|
144
|
+
railties (= 3.2.5)
|
|
145
|
+
railties (3.2.5)
|
|
146
|
+
actionpack (= 3.2.5)
|
|
147
|
+
activesupport (= 3.2.5)
|
|
148
|
+
rack-ssl (~> 1.3.2)
|
|
149
|
+
rake (>= 0.8.7)
|
|
150
|
+
rdoc (~> 3.4)
|
|
151
|
+
thor (>= 0.14.6, < 2.0)
|
|
152
|
+
rake (0.9.2.2)
|
|
153
|
+
rdoc (3.12)
|
|
154
|
+
json (~> 1.4)
|
|
155
|
+
rspec (2.10.0)
|
|
156
|
+
rspec-core (~> 2.10.0)
|
|
157
|
+
rspec-expectations (~> 2.10.0)
|
|
158
|
+
rspec-mocks (~> 2.10.0)
|
|
159
|
+
rspec-core (2.10.1)
|
|
160
|
+
rspec-expectations (2.10.0)
|
|
161
|
+
diff-lcs (~> 1.1.3)
|
|
162
|
+
rspec-instafail (0.2.4)
|
|
163
|
+
rspec-mocks (2.10.1)
|
|
164
|
+
rspec-rails (2.10.1)
|
|
165
|
+
actionpack (>= 3.0)
|
|
166
|
+
activesupport (>= 3.0)
|
|
167
|
+
railties (>= 3.0)
|
|
168
|
+
rspec (~> 2.10.0)
|
|
169
|
+
rspec-set (0.0.1)
|
|
170
|
+
rspec (>= 2)
|
|
171
|
+
ruby-progressbar (0.0.10)
|
|
172
|
+
rubyzip (0.9.8)
|
|
173
|
+
sass (3.1.19)
|
|
174
|
+
sass-rails (3.2.5)
|
|
175
|
+
railties (~> 3.2.0)
|
|
176
|
+
sass (>= 3.1.10)
|
|
177
|
+
tilt (~> 1.3)
|
|
178
|
+
selenium-client (1.2.18)
|
|
179
|
+
selenium-webdriver (2.22.2)
|
|
180
|
+
childprocess (>= 0.2.5)
|
|
181
|
+
ffi (~> 1.0)
|
|
182
|
+
libwebsocket (~> 0.1.3)
|
|
183
|
+
multi_json (~> 1.0)
|
|
184
|
+
rubyzip
|
|
185
|
+
shoulda (3.0.1)
|
|
186
|
+
shoulda-context (~> 1.0.0)
|
|
187
|
+
shoulda-matchers (~> 1.0.0)
|
|
188
|
+
shoulda-context (1.0.0)
|
|
189
|
+
shoulda-matchers (1.0.0)
|
|
190
|
+
sprockets (2.1.3)
|
|
191
|
+
hike (~> 1.2)
|
|
192
|
+
rack (~> 1.0)
|
|
193
|
+
tilt (~> 1.1, != 1.3.0)
|
|
194
|
+
steak (2.0.0)
|
|
195
|
+
capybara (>= 1.0.0)
|
|
196
|
+
rspec-rails (>= 2.5.0)
|
|
197
|
+
thor (0.15.2)
|
|
198
|
+
tilt (1.3.3)
|
|
199
|
+
treetop (1.4.10)
|
|
200
|
+
polyglot
|
|
201
|
+
polyglot (>= 0.3.1)
|
|
202
|
+
tzinfo (0.3.33)
|
|
203
|
+
uglifier (1.2.4)
|
|
204
|
+
execjs (>= 0.3.0)
|
|
205
|
+
multi_json (>= 1.0.2)
|
|
206
|
+
validate_url (0.2.0)
|
|
207
|
+
activemodel (>= 3.0.0)
|
|
208
|
+
watchr (0.7)
|
|
209
|
+
webrat (0.7.3)
|
|
210
|
+
nokogiri (>= 1.2.0)
|
|
211
|
+
rack (>= 1.0)
|
|
212
|
+
rack-test (>= 0.5.3)
|
|
213
|
+
will_paginate (3.0.3)
|
|
214
|
+
xpath (0.1.4)
|
|
215
|
+
nokogiri (~> 1.3)
|
|
216
|
+
yajl-ruby (1.1.0)
|
|
217
|
+
|
|
218
|
+
PLATFORMS
|
|
219
|
+
ruby
|
|
220
|
+
|
|
221
|
+
DEPENDENCIES
|
|
222
|
+
autotest
|
|
223
|
+
autotest-growl
|
|
224
|
+
bcrypt-ruby
|
|
225
|
+
bson_ext
|
|
226
|
+
capybara
|
|
227
|
+
chronic
|
|
228
|
+
coffee-rails (~> 3.2.1)
|
|
229
|
+
database_cleaner
|
|
230
|
+
debugger
|
|
231
|
+
delorean
|
|
232
|
+
email_validator
|
|
233
|
+
factory_girl_rails
|
|
234
|
+
fuubar
|
|
235
|
+
jquery-rails
|
|
236
|
+
launchy
|
|
237
|
+
mongoid
|
|
238
|
+
oauth2_provider!
|
|
239
|
+
orm_adapter!
|
|
240
|
+
rack-ssl
|
|
241
|
+
rails (= 3.2.5)
|
|
242
|
+
rspec-rails
|
|
243
|
+
rspec-set
|
|
244
|
+
sass-rails (~> 3.2.3)
|
|
245
|
+
selenium-client
|
|
246
|
+
selenium-webdriver
|
|
247
|
+
shoulda
|
|
248
|
+
steak
|
|
249
|
+
uglifier (>= 1.0.3)
|
|
250
|
+
validate_url
|
|
251
|
+
watchr
|
|
252
|
+
webrat
|
|
253
|
+
will_paginate
|
|
254
|
+
yajl-ruby
|