vkontakte_api 1.4 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: abc394ecea0593151c184221c7584d2497e5a0b5
4
- data.tar.gz: fa75472686aceeb47d0846004b5efdbb3314e0ed
3
+ metadata.gz: 5f135f0fa55b982c98358a7e47fc635321bff4e4
4
+ data.tar.gz: a02fed95ccd6c1af2b96fe2fa39df38eb2e90833
5
5
  SHA512:
6
- metadata.gz: 8e93465f3862e9731749ca37149057e361a6eb3f30e0bfbfa2ce897ff38676f121d4b7e9eb27429868b7fbf742814b5abb0d11e580b608c5aeac190a89d75d4c
7
- data.tar.gz: 017d9ac66a4b8a9aafe2d4a0db0d5d4c407e415167aef95f5a7f76b4a4322b5df62db09b15283faf447fe0d60fe799f28f095428e67579330f1f0a85f15ca03c
6
+ metadata.gz: 731b0b5b6eb1ec51e4be67ba9b799cf5d24006423d52c4522bf843cfcc9cf077cc8800704f976516aa9df731f63ac1129ce54099b36e338f3cdab212461d726a
7
+ data.tar.gz: c47aaf4aaf695d78e346fc200141b31c35738f6ecc4e03745bdad57759cd08f8d60c532e31766872be220cb2089895387a1c7f234dbd4043b33481802647a250
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 1.4.2 (09.10.2014)
2
+
3
+ * Удален бинстаб `rspec`, случайно попавший в гем
4
+
5
+ ## 1.4.1 (05.10.2014)
6
+
7
+ * Поддержка хранимых процедур
8
+
1
9
  ## 1.4 (11.05.2014)
2
10
 
3
11
  * Совместимость с `faraday 0.9`
data/Guardfile CHANGED
@@ -1,4 +1,4 @@
1
- guard 'rspec', all_on_start: true, all_after_pass: true do
1
+ guard 'rspec', all_on_start: true, all_after_pass: true, cmd: 'bin/rspec' do
2
2
  watch(%r{^spec/.+_spec\.rb$})
3
3
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4
4
  watch('spec/spec_helper.rb') { 'spec' }
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## vkontakte_api [![Build Status](https://secure.travis-ci.org/7even/vkontakte_api.png)](http://travis-ci.org/7even/vkontakte_api) [![Gem Version](https://badge.fury.io/rb/vkontakte_api.png)](http://badge.fury.io/rb/vkontakte_api) [![Dependency Status](https://gemnasium.com/7even/vkontakte_api.png)](https://gemnasium.com/7even/vkontakte_api) [![Code Climate](https://codeclimate.com/github/7even/vkontakte_api.png)](https://codeclimate.com/github/7even/vkontakte_api)
2
2
 
3
- `vkontakte_api` - ruby-адаптер для ВКонтакте API. Он позволяет вызывать методы API, загружать файлы на сервера ВКонтакте, а также поддерживает все 3 доступных способа авторизации (при этом позволяя использовать стороннее решение).
3
+ `vkontakte_api` — ruby-адаптер для ВКонтакте API. Он позволяет вызывать методы API, загружать файлы на сервера ВКонтакте, а также поддерживает все 3 доступных способа авторизации (при этом позволяя использовать стороннее решение).
4
4
 
5
5
  ## Установка
6
6
 
@@ -55,16 +55,16 @@ end
55
55
 
56
56
  ### Загрузка файлов
57
57
 
58
- Загрузка файлов на сервера ВКонтакте осуществляется в несколько этапов: сначала вызывается метод API, возвращающий URL для загрузки, затем происходит сама загрузка файлов, и после этого в некоторых случаях нужно вызвать другой метод API, передав в параметрах данные, возвращенные сервером после предыдущего запроса. Вызываемые методы API зависят от типа загружаемых файлов и описаны в [соответствующем разделе документации](http://vk.com/developers.php?oid=-1&p=%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%BD%D0%B0_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80_%D0%92%D0%9A%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5).
58
+ Загрузка файлов на сервера ВКонтакте осуществляется в несколько этапов: сначала вызывается метод API, возвращающий URL для загрузки, затем происходит сама загрузка файлов, и после этого в некоторых случаях нужно вызвать другой метод API, передав в параметрах данные, возвращенные сервером после предыдущего запроса. Вызываемые методы API зависят от типа загружаемых файлов и описаны в [соответствующем разделе документации](https://vk.com/dev/upload_files).
59
59
 
60
- Файлы передаются в формате хэша, где ключом является название параметра в запросе (указано в документации, например для загрузки фото на стену это будет `photo`), а значением - массив из 2 строк: полный путь к файлу и его MIME-тип:
60
+ Файлы передаются в формате хэша, где ключом является название параметра в запросе (указано в документации, например для загрузки фото на стену это будет `photo`), а значением — массив из 2 строк: полный путь к файлу и его MIME-тип:
61
61
 
62
62
  ``` ruby
63
63
  url = 'http://cs303110.vkontakte.ru/upload.php?act=do_add'
64
64
  VkontakteApi.upload(url: url, photo: ['/path/to/file.jpg', 'image/jpeg'])
65
65
  ```
66
66
 
67
- Если загружаемый файл доступен как открытый IO-объект, его можно передать альтернативным синтаксисом - IO-объект, MIME-тип и путь к файлу:
67
+ Если загружаемый файл доступен как открытый IO-объект, его можно передать альтернативным синтаксисом — IO-объект, MIME-тип и путь к файлу:
68
68
 
69
69
  ``` ruby
70
70
  url = 'http://cs303110.vkontakte.ru/upload.php?act=do_add'
@@ -77,13 +77,13 @@ VkontakteApi.upload(url: url, photo: [file_io, 'image/jpeg', '/path/to/file.jpg'
77
77
 
78
78
  Для вызова большинства методов требуется токен доступа (access token). Чтобы получить его, можно использовать авторизацию, встроенную в `vkontakte_api`, либо положиться на какой-то другой механизм (например, [OmniAuth](https://github.com/intridea/omniauth)). В последнем случае в результате авторизации будет получен токен, который нужно будет передать в `VkontakteApi::Client.new`.
79
79
 
80
- Для работы с ВКонтакте API предусмотрено 3 типа авторизации: для сайтов, для клиентских приложений (мобильных либо десктопных, имеющих доступ к управлению браузером) и специальный тип авторизации серверов приложений для вызова административных методов без авторизации самого пользователя. Более подробно они описаны [тут](http://vk.com/developers.php?oid=-1&p=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F); рассмотрим, как работать с ними средствами `vkontakte_api`.
80
+ Для работы с ВКонтакте API предусмотрено 3 типа авторизации: для сайтов, для клиентских приложений (мобильных либо десктопных, имеющих доступ к управлению браузером) и специальный тип авторизации серверов приложений для вызова административных методов без авторизации самого пользователя. Более подробно они описаны [тут](https://vk.com/dev/authentication); рассмотрим, как работать с ними средствами `vkontakte_api`.
81
81
 
82
82
  Для авторизации необходимо задать параметры `app_id` (ID приложения), `app_secret` (защищенный ключ) и `redirect_uri` (адрес, куда пользователь будет направлен после предоставления прав приложению) в настройках `VkontakteApi.configure`. Более подробно о конфигурировании `vkontakte_api` см. далее в соответствующем разделе.
83
83
 
84
84
  ##### Сайт
85
85
 
86
- Авторизация сайтов проходит в 2 шага. Сначала пользователь перенаправляется на страницу ВКонтакте для подтверждения запрошенных у него прав сайта на доступ к его данным. Со списком возможных прав можно ознакомиться [здесь](http://vk.com/developers.php?oid=-1&p=%D0%9F%D1%80%D0%B0%D0%B2%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9). Допустим, нужно получить доступ к друзьям (`friends`) и фотографиям (`photos`) пользователя.
86
+ Авторизация сайтов проходит в 2 шага. Сначала пользователь перенаправляется на страницу ВКонтакте для подтверждения запрошенных у него прав сайта на доступ к его данным. Со списком возможных прав можно ознакомиться [здесь](https://vk.com/dev/permissions). Допустим, нужно получить доступ к друзьям (`friends`) и фотографиям (`photos`) пользователя.
87
87
 
88
88
  В соответствии с [рекомендациями](http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-10.12) в протоколе OAuth2 для защиты от [CSRF](http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%BC%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2), нужно передать параметр `state`, содержащий случайное значение.
89
89
 
@@ -92,7 +92,7 @@ session[:state] = Digest::MD5.hexdigest(rand.to_s)
92
92
  redirect_to VkontakteApi.authorization_url(scope: [:notify, :friends, :photos], state: session[:state])
93
93
  ```
94
94
 
95
- После подтверждения пользователь перенаправляется на указанный в настройках `redirect_uri`, причем в параметрах будет передан код, по которому можно получить токен доступа, а также переданный ранее `state`. Если `state` не совпадает с тем, который был использован при отправлении пользователя на ВКонтакте, то скорее всего это попытка CSRF-атаки - стоит отправить пользователя на повторную авторизацию.
95
+ После подтверждения пользователь перенаправляется на указанный в настройках `redirect_uri`, причем в параметрах будет передан код, по которому можно получить токен доступа, а также переданный ранее `state`. Если `state` не совпадает с тем, который был использован при отправлении пользователя на ВКонтакте, то скорее всего это попытка CSRF-атаки — стоит отправить пользователя на повторную авторизацию.
96
96
 
97
97
  ``` ruby
98
98
  redirect_to login_url, alert: 'Ошибка авторизации' if params[:state] != session[:state]
@@ -124,7 +124,7 @@ current_user.save
124
124
 
125
125
  ##### Клиентское приложение
126
126
 
127
- Авторизация клиентского приложения несколько проще - не нужно получать токен отдельным запросом, он выдается сразу после редиректа пользователя.
127
+ Авторизация клиентского приложения несколько проще — не нужно получать токен отдельным запросом, он выдается сразу после редиректа пользователя.
128
128
 
129
129
  ``` ruby
130
130
  # пользователь направляется на следующий урл
@@ -137,7 +137,7 @@ VkontakteApi.authorization_url(type: :client, scope: [:friends, :photos])
137
137
 
138
138
  ##### Сервер приложения
139
139
 
140
- Последний тип авторизации - самый простой, т.к. не предполагает участия пользователя.
140
+ Последний тип авторизации — самый простой, т.к. не предполагает участия пользователя.
141
141
 
142
142
  ``` ruby
143
143
  @vk = VkontakteApi.authorize(type: :app_server)
@@ -188,9 +188,9 @@ vk.friends.get(uid: 1, fields: [:first_name, :last_name, :photo])
188
188
  # VkontakteApi::Error: VKontakte returned an error 7: 'Permission to perform this action is denied' after calling method 'friends.get' with parameters {"uid"=>"1", "fields"=>"first_name,last_name,photo"}.
189
189
  ```
190
190
 
191
- Особый случай ошибки - 14: необходимо ввести код с captcha.
191
+ Особый случай ошибки — 14: необходимо ввести код с captcha.
192
192
  В этом случае можно получить параметры капчи методами
193
- `VkontakteApi::Error#captcha_sid` и `VkontakteApi::Error#captcha_img` - например,
193
+ `VkontakteApi::Error#captcha_sid` и `VkontakteApi::Error#captcha_img` — например,
194
194
  [так](https://github.com/7even/vkontakte_api/issues/10#issuecomment-11666091).
195
195
 
196
196
  ### Логгирование
@@ -265,12 +265,12 @@ end
265
265
  [любой другой адаптер](https://github.com/technoweenie/faraday/blob/master/lib/faraday/adapter.rb),
266
266
  поддерживаемый `faraday`.
267
267
 
268
- ВКонтакте [позволяет](http://vk.com/developers.php?oid=-1&p=%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2_%D0%BA_API)
268
+ ВКонтакте [позволяет](https://vk.com/dev/api_requests)
269
269
  использовать как `GET`-, так и `POST`-запросы при вызове методов API.
270
270
  По умолчанию `vkontakte_api` использует `POST`, но в настройке `http_verb`
271
271
  можно указать `:get`, чтобы совершать `GET`-запросы.
272
272
 
273
- При необходимости можно указать параметры для faraday-соединения - например,
273
+ При необходимости можно указать параметры для faraday-соединения — например,
274
274
  параметры прокси-сервера или путь к SSL-сертификатам.
275
275
 
276
276
  Чтобы при каждом вызове API-метода передавалась определенная версия API, можно
@@ -286,7 +286,7 @@ $ rails generate vkontakte_api:install
286
286
 
287
287
  ## JSON-парсер
288
288
 
289
- `vkontakte_api` использует парсер [Oj](https://github.com/ohler55/oj) - это
289
+ `vkontakte_api` использует парсер [Oj](https://github.com/ohler55/oj) — это
290
290
  единственный парсер, который не показал [ошибок](https://github.com/7even/vkontakte_api/issues/1)
291
291
  при парсинге JSON, генерируемого ВКонтакте.
292
292
 
data/bin/rspec ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rspec' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= Pathname.new(__FILE__).expand_path.join('../../Gemfile').to_s
11
+
12
+ require 'rubygems'
13
+ require 'bundler/setup'
14
+
15
+ load Gem.bin_path('rspec-core', 'rspec')
@@ -76,6 +76,16 @@ module VkontakteApi
76
76
  end.keys
77
77
  end
78
78
 
79
+ # Called without arguments it returns the `execute` namespace;
80
+ # called with arguments it calls the top-level `execute` API method.
81
+ def execute(*args)
82
+ if args.empty?
83
+ create_namespace(:execute)
84
+ else
85
+ call_method([:execute, *args])
86
+ end
87
+ end
88
+
79
89
  # If the called method is a namespace, it creates and returns a new `VkontakteApi::Namespace` instance.
80
90
  # Otherwise it creates a `VkontakteApi::Method` instance and calls it passing the arguments and a block.
81
91
  def method_missing(*args, &block)
@@ -1,4 +1,4 @@
1
1
  module VkontakteApi
2
2
  # Library version.
3
- VERSION = '1.4'
3
+ VERSION = '1.4.2'
4
4
  end
@@ -41,7 +41,7 @@ describe "Integration" do
41
41
  let(:vk) { MechanizedAuthorization.client }
42
42
 
43
43
  it "convert method names to vk.com format" do
44
- expect(vk.is_app_user?).to be_true
44
+ expect(vk.is_app_user?).to be_truthy
45
45
  end
46
46
  end
47
47
  end
data/spec/spec_helper.rb CHANGED
@@ -3,6 +3,10 @@ require 'pry'
3
3
  require 'awesome_print'
4
4
  require_relative './support/mechanized_authorization'
5
5
 
6
+ RSpec.configure do |config|
7
+ config.raise_errors_for_deprecations!
8
+ end
9
+
6
10
  RSpec::Matchers.define :log_requests do
7
11
  match do |logger|
8
12
  logger.log_requests?
@@ -13,7 +13,7 @@ describe VkontakteApi::API do
13
13
  end
14
14
  end
15
15
  end
16
- subject.stub(:connection).and_return(@connection)
16
+ allow(subject).to receive(:connection).and_return(@connection)
17
17
  end
18
18
 
19
19
  describe ".call" do
@@ -65,7 +65,7 @@ describe VkontakteApi::API do
65
65
  describe ".connection" do
66
66
  it "uses the :url parameter and VkontakteApi.faraday_options" do
67
67
  faraday_options = double("Faraday options")
68
- VkontakteApi.stub(:faraday_options).and_return(faraday_options)
68
+ allow(VkontakteApi).to receive(:faraday_options).and_return(faraday_options)
69
69
  url = double("URL")
70
70
 
71
71
  expect(Faraday).to receive(:new).with(url, faraday_options)
@@ -3,11 +3,11 @@ require 'spec_helper'
3
3
  describe VkontakteApi::Authorization do
4
4
  before(:each) do
5
5
  @app_id = double("App id")
6
- VkontakteApi.stub(:app_id).and_return(@app_id)
6
+ allow(VkontakteApi).to receive(:app_id).and_return(@app_id)
7
7
  @app_secret = double("App secret")
8
- VkontakteApi.stub(:app_secret).and_return(@app_secret)
8
+ allow(VkontakteApi).to receive(:app_secret).and_return(@app_secret)
9
9
  @redirect_uri = double("Redirect uri")
10
- VkontakteApi.stub(:redirect_uri).and_return(@redirect_uri)
10
+ allow(VkontakteApi).to receive(:redirect_uri).and_return(@redirect_uri)
11
11
 
12
12
  @url = double("Authorization url")
13
13
  @token = double("Token")
@@ -17,18 +17,18 @@ describe VkontakteApi::Authorization do
17
17
  @client_credentials = double("Client credentials strategy", get_token: @token)
18
18
 
19
19
  @client = double("OAuth2::Client instance", auth_code: @auth_code, implicit: @implicit, client_credentials: @client_credentials)
20
- OAuth2::Client.stub(:new).and_return(@client)
20
+ allow(OAuth2::Client).to receive(:new).and_return(@client)
21
21
  end
22
22
 
23
23
  let(:auth) do
24
24
  Object.new.tap do |object|
25
25
  object.extend VkontakteApi::Authorization
26
26
  end
27
- end
27
+ end
28
28
 
29
29
  describe "#authorization_url" do
30
30
  before(:each) do
31
- auth.stub(:client).and_return(@client)
31
+ allow(auth).to receive(:client).and_return(@client)
32
32
  end
33
33
 
34
34
  context "with a site type" do
@@ -69,7 +69,7 @@ describe VkontakteApi::Authorization do
69
69
  context "with a site type" do
70
70
  before(:each) do
71
71
  @code = double("Authorization code")
72
- @auth_code.stub(:get_token).and_return(@token)
72
+ allow(@auth_code).to receive(:get_token).and_return(@token)
73
73
  end
74
74
 
75
75
  it "gets the token" do
@@ -8,9 +8,9 @@ describe VkontakteApi::Client do
8
8
 
9
9
  def oauth2_token(expires_at = Time.now)
10
10
  token = double("Access token as an OAuth2::AccessToken").tap do |token|
11
- token.stub(:token).and_return(string_token)
12
- token.stub(:params).and_return('user_id' => @user_id, 'email' => @email)
13
- token.stub(:expires_at).and_return(expires_at)
11
+ allow(token).to receive(:token).and_return(string_token)
12
+ allow(token).to receive(:params).and_return('user_id' => @user_id, 'email' => @email)
13
+ allow(token).to receive(:expires_at).and_return(expires_at)
14
14
  end
15
15
  end
16
16
 
@@ -98,7 +98,7 @@ describe VkontakteApi::Client do
98
98
  describe "#scope" do
99
99
  let(:client) do
100
100
  VkontakteApi::Client.new.tap do |client|
101
- client.stub(:get_user_settings).and_return(865310)
101
+ allow(client).to receive(:get_user_settings).and_return(865310)
102
102
  end
103
103
  end
104
104
  let(:scope) { client.scope }
@@ -136,7 +136,7 @@ describe VkontakteApi::Client do
136
136
  before(:each) do
137
137
  @result = double("Result")
138
138
  @method = double("Method", call: @result)
139
- VkontakteApi::Method.stub(:new).and_return(@method)
139
+ allow(VkontakteApi::Method).to receive(:new).and_return(@method)
140
140
  end
141
141
 
142
142
  it "creates a Method instance" do
@@ -150,4 +150,23 @@ describe VkontakteApi::Client do
150
150
  end
151
151
  end
152
152
  end
153
+
154
+ describe '#execute' do
155
+ let(:client) { VkontakteApi::Client.new('token') }
156
+
157
+ context 'called without arguments' do
158
+ it 'returns an :execute namespace' do
159
+ expect(client.execute).to be_a(VkontakteApi::Namespace)
160
+ expect(client.execute.name).to eq('execute')
161
+ end
162
+ end
163
+
164
+ context 'called with arguments' do
165
+ it 'calls the :execute method' do
166
+ code = 'return "Hello World!";'
167
+ expect(client).to receive(:call_method).with([:execute, code: code])
168
+ client.execute(code: code)
169
+ end
170
+ end
171
+ end
153
172
  end
@@ -8,13 +8,13 @@ describe VkontakteApi::Method do
8
8
 
9
9
  let(:method) do
10
10
  VkontakteApi::Method.new('some_name').tap do |method|
11
- method.stub(:full_name).and_return(full_name)
12
- method.stub(:token).and_return(token)
11
+ allow(method).to receive(:full_name).and_return(full_name)
12
+ allow(method).to receive(:token).and_return(token)
13
13
  end
14
14
  end
15
15
 
16
16
  before(:each) do
17
- VkontakteApi::Result.stub(:process)
17
+ allow(VkontakteApi::Result).to receive(:process)
18
18
  end
19
19
 
20
20
  it "calls API.call with full name, args and token" do
@@ -24,9 +24,9 @@ describe VkontakteApi::Method do
24
24
 
25
25
  it "sends the response to Result.process" do
26
26
  response = double("VK response")
27
- VkontakteApi::API.stub(:call).and_return(response)
27
+ allow(VkontakteApi::API).to receive(:call).and_return(response)
28
28
  type = double("Type")
29
- method.stub(:type).and_return(type)
29
+ allow(method).to receive(:type).and_return(type)
30
30
 
31
31
  expect(VkontakteApi::Result).to receive(:process).with(response, type, nil)
32
32
  method.call(args)
@@ -15,7 +15,7 @@ describe VkontakteApi::Resolver do
15
15
  before(:each) do
16
16
  @resolver = @class.new('trololo')
17
17
  @token = double("Token")
18
- @resolver.stub(:token).and_return(@token)
18
+ allow(@resolver).to receive(:token).and_return(@token)
19
19
  end
20
20
 
21
21
  it "gets into #method_missing" do
@@ -30,7 +30,7 @@ describe VkontakteApi::Resolver do
30
30
  @name = double("Name")
31
31
  @resolver = @class.new(@name)
32
32
  @token = double("Token")
33
- @resolver.stub(:token).and_return(@token)
33
+ allow(@resolver).to receive(:token).and_return(@token)
34
34
  end
35
35
 
36
36
  let(:resolver) { @resolver.resolver }
@@ -6,7 +6,7 @@ describe VkontakteApi::Result do
6
6
  let(:result) { double("Result") }
7
7
 
8
8
  before(:each) do
9
- subject.stub(:extract_result).and_return(result)
9
+ allow(subject).to receive(:extract_result).and_return(result)
10
10
  end
11
11
 
12
12
  it "calls .extract_result passing it the response" do
@@ -19,7 +19,7 @@ describe VkontakteApi::Result do
19
19
  let(:typecasted_value) { double("Typecasted value") }
20
20
 
21
21
  before(:each) do
22
- subject.stub(:typecast).and_return(typecasted_value)
22
+ allow(subject).to receive(:typecast).and_return(typecasted_value)
23
23
  end
24
24
 
25
25
  it "returns #typecast-ed value" do
@@ -44,7 +44,7 @@ describe VkontakteApi::Result do
44
44
  let(:enumerable_result) { [element1, element2] }
45
45
 
46
46
  before(:each) do
47
- subject.stub(:extract_result).and_return(enumerable_result)
47
+ allow(subject).to receive(:extract_result).and_return(enumerable_result)
48
48
  end
49
49
 
50
50
  it "returns the untouched value" do
@@ -14,8 +14,8 @@ describe VkontakteApi::Uploading do
14
14
  let(:connection) { double("Faraday connection", post: response) }
15
15
 
16
16
  before(:each) do
17
- Faraday::UploadIO.stub(:new).and_return(upload_io)
18
- VkontakteApi::API.stub(:connection).and_return(connection)
17
+ allow(Faraday::UploadIO).to receive(:new).and_return(upload_io)
18
+ allow(VkontakteApi::API).to receive(:connection).and_return(connection)
19
19
  end
20
20
 
21
21
  context "without a :url param" do
@@ -8,7 +8,7 @@ describe VkontakteApi::Utils do
8
8
  let(:flat_arg2) { double("Flattened second argument") }
9
9
 
10
10
  before(:each) do
11
- VkontakteApi::Utils.stub(:flatten_argument) do |arg|
11
+ allow(VkontakteApi::Utils).to receive(:flatten_argument) do |arg|
12
12
  case arg
13
13
  when arg1 then flat_arg1
14
14
  when arg2 then flat_arg2
@@ -14,7 +14,6 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.files = `git ls-files`.split("\n")
16
16
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
- s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
18
17
  s.require_paths = ['lib']
19
18
 
20
19
  s.required_ruby_version = '>= 1.9.2'
@@ -22,11 +21,11 @@ Gem::Specification.new do |s|
22
21
  s.add_runtime_dependency 'faraday', '~> 0.9.0'
23
22
  s.add_runtime_dependency 'faraday_middleware', '~> 0.9.1'
24
23
  s.add_runtime_dependency 'faraday_middleware-parse_oj', '~> 0.3'
25
- s.add_runtime_dependency 'oauth2', '~> 0.8'
26
- s.add_runtime_dependency 'hashie', '~> 2.0'
24
+ s.add_runtime_dependency 'oauth2', '>= 0.8'
25
+ s.add_runtime_dependency 'hashie', '>= 2.0'
27
26
 
28
27
  s.add_development_dependency 'rake'
29
- s.add_development_dependency 'rspec', '~> 2.14'
28
+ s.add_development_dependency 'rspec', '~> 3.0'
30
29
  s.add_development_dependency 'mechanize'
31
30
  s.add_development_dependency 'guard-rspec'
32
31
  s.add_development_dependency 'rb-fsevent', '~> 0.9.1'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vkontakte_api
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.4'
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vsevolod Romashov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-11 00:00:00.000000000 Z
11
+ date: 2014-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -56,28 +56,28 @@ dependencies:
56
56
  name: oauth2
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0.8'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.8'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hashie
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '2.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '2.0'
83
83
  - !ruby/object:Gem::Dependency
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.14'
103
+ version: '3.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '2.14'
110
+ version: '3.0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: mechanize
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -253,6 +253,7 @@ files:
253
253
  - MIT-LICENSE
254
254
  - README.md
255
255
  - Rakefile
256
+ - bin/rspec
256
257
  - lib/generators/vkontakte_api/install/USAGE
257
258
  - lib/generators/vkontakte_api/install/install_generator.rb
258
259
  - lib/generators/vkontakte_api/install/templates/initializer.rb