oa-vkontakte 0.1.3 → 0.1.4

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/.gitignore CHANGED
@@ -19,3 +19,7 @@ rdoc
19
19
  pkg
20
20
 
21
21
  ## PROJECT::SPECIFIC
22
+ .bundle
23
+ .rvmrc
24
+ Gemfile
25
+ Gemfile.lock
data/README.rdoc CHANGED
@@ -9,7 +9,7 @@
9
9
  Добавить в config/initializers/omniauth.rb:
10
10
 
11
11
  Rails.application.config.middleware.use OmniAuth::Builder do
12
- provider :vkontakte_open_api, <ID приложения>
12
+ provider :vkontakte_open_api, <ID приложения>, <Защищенный ключ приложения>
13
13
  end
14
14
 
15
15
  Если ещё не определен, добавить путь в config/routes.rb:
@@ -35,8 +35,8 @@
35
35
  'user_info' => {
36
36
  'name' => 'Nick Recobra',
37
37
  'nickname' => 'oruen',
38
- 'firstName' => 'Nick',
39
- 'lastName' => 'Recobra',
38
+ 'first_name' => 'Nick',
39
+ 'last_name' => 'Recobra',
40
40
  'image' => 'http://cs191.vkontakte.ru/u00001/e_375bc433.jpg', # путь до вконтактовского аватара
41
41
  'urls' => { 'Page' => 'http://vkontakte.ru/id1234567890' }
42
42
  }
data/Rakefile CHANGED
@@ -1,50 +1,12 @@
1
- require 'rubygems'
2
- require 'rake'
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
3
 
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "oa-vkontakte"
8
- gem.summary = %Q{OmniAuth extension for vkontakte.ru authentication}
9
- gem.description = %Q{OmniAuth extension for vkontakte.ru authentication}
10
- gem.email = "oruenu@gmail.com"
11
- gem.homepage = "http://github.com/oruen/oa-vkontakte"
12
- gem.authors = ["Nick Recobra"]
13
- gem.rubyforge_project = "oa-vkontakte"
14
- gem.add_dependency 'oa-core', '~>0.1.4'
15
- gem.add_development_dependency "rspec", ">= 1.2.9"
16
- gem.add_development_dependency "yard", ">= 0"
17
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
18
- end
19
- Jeweler::GemcutterTasks.new
20
- Jeweler::RubyforgeTasks.new do |rubyforge|
21
- rubyforge.doc_task = "yardoc"
22
- end
23
- rescue LoadError
24
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
4
+ require 'rspec/core/rake_task'
5
+ require 'rake/contrib/sshpublisher'
6
+ RSpec::Core::RakeTask.new(:spec) do |t|
25
7
  end
26
-
27
- require 'spec/rake/spectask'
28
- Spec::Rake::SpecTask.new(:spec) do |spec|
29
- spec.libs << 'lib' << 'spec'
30
- spec.spec_files = FileList['spec/**/*_spec.rb']
31
- end
32
-
33
- Spec::Rake::SpecTask.new(:rcov) do |spec|
34
- spec.libs << 'lib' << 'spec'
35
- spec.pattern = 'spec/**/*_spec.rb'
36
- spec.rcov = true
37
- end
38
-
39
- task :spec => :check_dependencies
40
-
41
8
  task :default => :spec
42
9
 
43
- begin
44
- require 'yard'
45
- YARD::Rake::YardocTask.new
46
- rescue LoadError
47
- task :yardoc do
48
- abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
49
- end
10
+ require 'yard'
11
+ YARD::Rake::YardocTask.new do |t|
50
12
  end
data/lib/oa-vkontakte.rb CHANGED
@@ -1,4 +1,10 @@
1
1
  require 'omniauth/vkontakte'
2
+
3
+ module Oa
4
+ module Vkontakte
5
+ end
6
+ end
7
+
2
8
  if defined?(Rails)
3
9
  ActionController::Base.helper OmniAuth::Strategies::VkontakteOpenApi::ViewHelper::PageHelper
4
10
  end
@@ -0,0 +1,5 @@
1
+ module Oa
2
+ module Vkontakte
3
+ VERSION = "0.1.4"
4
+ end
5
+ end
@@ -4,6 +4,7 @@ require 'omniauth/strategies/vkontakte_open_api/view_helper'
4
4
  module OmniAuth
5
5
  class Configuration
6
6
  attr_accessor :vkontakte_app_id
7
+ attr_accessor :vkontakte_app_key
7
8
  end
8
9
  end
9
10
 
@@ -13,9 +14,10 @@ module OmniAuth
13
14
  include OmniAuth::Strategy
14
15
  include ViewHelper::PageHelper
15
16
 
16
- def initialize(app, app_id, options = {})
17
+ def initialize(app, app_id, app_key, options = {})
17
18
  @options = options
18
19
  OmniAuth.config.vkontakte_app_id = app_id
20
+ OmniAuth.config.vkontakte_app_key = app_key
19
21
  super(app, :vkontakte)
20
22
  end
21
23
 
@@ -24,7 +26,20 @@ module OmniAuth
24
26
  def request_phase
25
27
  Rack::Response.new(vkontakte_login_page).finish
26
28
  end
27
-
29
+
30
+ def callback_phase
31
+ app_cookie = request.cookies["vk_app_#{OmniAuth.config.vkontakte_app_id}"]
32
+ return fail!(:invalid_credentials) unless app_cookie
33
+ args = app_cookie.split("&")
34
+ sig_index = args.index { |arg| arg =~ /^sig=/ }
35
+ return fail!(:invalid_credentials) unless sig_index
36
+ sig = args.delete_at(sig_index)
37
+ puts Digest::MD5.new.hexdigest(args.sort.join('') + OmniAuth.config.vkontakte_app_key)
38
+ puts sig
39
+ return fail!(:invalid_credentials) unless Digest::MD5.new.hexdigest(args.sort.join('') + OmniAuth.config.vkontakte_app_key) == sig[4..-1]
40
+ super
41
+ end
42
+
28
43
  def auth_hash
29
44
  OmniAuth::Utils.deep_merge(super(), {
30
45
  'uid' => request[:uid],
data/oa-vkontakte.gemspec CHANGED
@@ -1,65 +1,25 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "oa-vkontakte/version"
5
4
 
6
5
  Gem::Specification.new do |s|
7
6
  s.name = %q{oa-vkontakte}
8
- s.version = "0.1.3"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
+ s.version = Oa::Vkontakte::VERSION
11
8
  s.authors = ["Nick Recobra"]
12
- s.date = %q{2010-10-20}
9
+ s.summary = %q{OmniAuth extension for vkontakte.ru authentication}
13
10
  s.description = %q{OmniAuth extension for vkontakte.ru authentication}
14
11
  s.email = %q{oruenu@gmail.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gitignore",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "lib/oa-vkontakte.rb",
27
- "lib/omniauth/strategies/vkontakte_open_api.rb",
28
- "lib/omniauth/strategies/vkontakte_open_api/view_helper.rb",
29
- "lib/omniauth/vkontakte.rb",
30
- "oa-vkontakte.gemspec",
31
- "spec/oa-vkontakte_spec.rb",
32
- "spec/spec.opts",
33
- "spec/spec_helper.rb"
34
- ]
35
12
  s.homepage = %q{http://github.com/oruen/oa-vkontakte}
36
- s.rdoc_options = ["--charset=UTF-8"]
37
- s.require_paths = ["lib"]
38
13
  s.rubyforge_project = %q{oa-vkontakte}
39
- s.rubygems_version = %q{1.3.7}
40
- s.summary = %q{OmniAuth extension for vkontakte.ru authentication}
41
- s.test_files = [
42
- "spec/oa-vkontakte_spec.rb",
43
- "spec/spec_helper.rb"
44
- ]
45
-
46
- if s.respond_to? :specification_version then
47
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
- s.specification_version = 3
14
+
15
+ s.add_dependency(%q<oa-core>, ["~> 0.1.4"])
16
+ s.add_development_dependency(%q<rspec>, ["~> 2.1.0"])
17
+ s.add_development_dependency(%q<yard>, [">= 0"])
18
+ s.add_development_dependency(%q<rack-test>, ["~> 0.5.6"])
49
19
 
50
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
- s.add_runtime_dependency(%q<oa-core>, ["~> 0.1.4"])
52
- s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
53
- s.add_development_dependency(%q<yard>, [">= 0"])
54
- else
55
- s.add_dependency(%q<oa-core>, ["~> 0.1.4"])
56
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
57
- s.add_dependency(%q<yard>, [">= 0"])
58
- end
59
- else
60
- s.add_dependency(%q<oa-core>, ["~> 0.1.4"])
61
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
62
- s.add_dependency(%q<yard>, [">= 0"])
63
- end
20
+ s.files = `git ls-files`.split("\n")
21
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+ s.require_paths = ["lib"]
64
24
  end
65
25
 
@@ -0,0 +1,74 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe OmniAuth::Strategies::VkontakteOpenApi, :type => :strategy do
4
+
5
+ include OmniAuth::Test::StrategyTestCase
6
+
7
+ def strategy
8
+ [OmniAuth::Strategies::VkontakteOpenApi, 1983892, '6FF1PUlZfEyutJxctvtd']
9
+ end
10
+
11
+ describe 'POST /auth/vkontakte_open_api/callback с логином и паролем' do
12
+ before(:each) do
13
+ @params = {
14
+ 'nickname' => 'oruen',
15
+ 'first_name' => 'Nick',
16
+ 'last_name' => 'Recobra',
17
+ 'photo' => 'http://cs191.vkontakte.ru/u00001/e_375bc433.jpg',
18
+ 'uid' => '1234567890'
19
+ }
20
+ end
21
+
22
+ context "неуспешный запрос" do
23
+ it "не должен быть успешным при отсутствии куки vk_app_<APP_ID>" do
24
+ clear_cookies
25
+ post '/auth/vkontakte/callback', @params
26
+ last_response.should_not be_ok
27
+ end
28
+
29
+ it "не должен быть успешным при невалидной куке vk_app_<APP_ID>" do
30
+ set_cookie "vk_app_#{OmniAuth.config.vkontakte_app_id}=expire"
31
+ post '/auth/vkontakte/callback', @params
32
+ last_response.should_not be_ok
33
+ end
34
+ end
35
+
36
+ context "успешный запрос" do
37
+ before(:each) do
38
+ strategy = nil
39
+ string = "expire=1271238742&mid=100172&secret=97c1e8933e&sid=549b550f608e4a4d247734941debb5e68df50a66c58dc6ee2a4f60a2&sig=372df9795fe8dd29684a2f996872457c"
40
+ set_cookie "vk_app_#{OmniAuth.config.vkontakte_app_id}=#{Rack::Utils::escape string}"
41
+ post '/auth/vkontakte/callback', @params
42
+ end
43
+
44
+ it "должен устанавливаться защищенный ключ" do
45
+ OmniAuth.config.vkontakte_app_key.should == '6FF1PUlZfEyutJxctvtd'
46
+ end
47
+
48
+
49
+ it 'должен быть успешным' do
50
+ last_response.should be_ok
51
+ end
52
+
53
+ sets_an_auth_hash
54
+
55
+ sets_provider_to 'vkontakte'
56
+
57
+ it 'должен устанавливать параметры' do
58
+ hash = last_request.env['omniauth.auth']
59
+ hash.should == {
60
+ 'uid' => '1234567890',
61
+ 'provider' => 'vkontakte',
62
+ 'user_info' => {
63
+ 'name' => 'Nick Recobra',
64
+ 'nickname' => 'oruen',
65
+ 'first_name' => 'Nick',
66
+ 'last_name' => 'Recobra',
67
+ 'image' => 'http://cs191.vkontakte.ru/u00001/e_375bc433.jpg',
68
+ 'urls' => { 'Page' => 'http://vkontakte.ru/id1234567890' }
69
+ }
70
+ }
71
+ end
72
+ end
73
+ end
74
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,10 +1,13 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
1
  require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.setup
4
+ require 'rspec'
5
+ require 'omniauth/test'
6
+ require 'rack/test'
4
7
  require 'oa-vkontakte'
5
- require 'spec'
6
- require 'spec/autorun'
7
8
 
8
- Spec::Runner.configure do |config|
9
-
9
+ Rspec.configure do |c|
10
+ c.mock_with :rspec
11
+ c.include Rack::Test::Methods
12
+ c.extend OmniAuth::Test::StrategyMacros, :type => :strategy
10
13
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oa-vkontakte
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Nick Recobra
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-20 00:00:00 +04:00
18
+ date: 2010-11-27 00:00:00 +03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -40,14 +40,14 @@ dependencies:
40
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ">="
43
+ - - ~>
44
44
  - !ruby/object:Gem::Version
45
- hash: 13
45
+ hash: 11
46
46
  segments:
47
- - 1
48
47
  - 2
49
- - 9
50
- version: 1.2.9
48
+ - 1
49
+ - 0
50
+ version: 2.1.0
51
51
  type: :development
52
52
  version_requirements: *id002
53
53
  - !ruby/object:Gem::Dependency
@@ -64,37 +64,52 @@ dependencies:
64
64
  version: "0"
65
65
  type: :development
66
66
  version_requirements: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ name: rack-test
69
+ prerelease: false
70
+ requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ hash: 7
76
+ segments:
77
+ - 0
78
+ - 5
79
+ - 6
80
+ version: 0.5.6
81
+ type: :development
82
+ version_requirements: *id004
67
83
  description: OmniAuth extension for vkontakte.ru authentication
68
84
  email: oruenu@gmail.com
69
85
  executables: []
70
86
 
71
87
  extensions: []
72
88
 
73
- extra_rdoc_files:
74
- - LICENSE
75
- - README.rdoc
89
+ extra_rdoc_files: []
90
+
76
91
  files:
77
92
  - .document
78
93
  - .gitignore
79
94
  - LICENSE
80
95
  - README.rdoc
81
96
  - Rakefile
82
- - VERSION
83
97
  - lib/oa-vkontakte.rb
98
+ - lib/oa-vkontakte/version.rb
84
99
  - lib/omniauth/strategies/vkontakte_open_api.rb
85
100
  - lib/omniauth/strategies/vkontakte_open_api/view_helper.rb
86
101
  - lib/omniauth/vkontakte.rb
87
102
  - oa-vkontakte.gemspec
88
103
  - spec/oa-vkontakte_spec.rb
89
- - spec/spec.opts
104
+ - spec/omniauth/strategires/vkontakte_open_api_spec.rb
90
105
  - spec/spec_helper.rb
91
106
  has_rdoc: true
92
107
  homepage: http://github.com/oruen/oa-vkontakte
93
108
  licenses: []
94
109
 
95
110
  post_install_message:
96
- rdoc_options:
97
- - --charset=UTF-8
111
+ rdoc_options: []
112
+
98
113
  require_paths:
99
114
  - lib
100
115
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -124,4 +139,5 @@ specification_version: 3
124
139
  summary: OmniAuth extension for vkontakte.ru authentication
125
140
  test_files:
126
141
  - spec/oa-vkontakte_spec.rb
142
+ - spec/omniauth/strategires/vkontakte_open_api_spec.rb
127
143
  - spec/spec_helper.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.3
data/spec/spec.opts DELETED
@@ -1 +0,0 @@
1
- --color