Тестирование JSON API, использующего модуль аутентификации Devise token с Cucumber - PullRequest
3 голосов
/ 26 августа 2011

Я пишу приемочные тесты для службы RESTfull JSON.Я хочу иметь возможность запускать тесты на производственном сервере.Этот API используется клиентом iphone.Для аутентификации сервис JSON использует модуль токена аутентификации Devise.

Вот протокол в двух словах:

iphone: POST / api / v1 / токены с параметрами email=user@serivce.com&pass=secretpass server: return 200 и следующий JSON {"token ":" UYUKJHBKHJJHSAD "} iphone: GET / api / v1 / messages? auth_token = UYUKJHBKHJJHSAD

Все прекрасно работает.

Какой лучший способ проверить это с огурцом?

Я использую api_steps из https://github.com/jayzes/cucumber-api-steps, и я взломал что-то вместе, так что auth_token передается с каждым GET-запросом, однако это немного хак.

Что я сделал, так это сделалсоздайте следующий шаг:

И я аутентифицируюсь как пользователь «admin@myservice.com» с паролем «bingobingo»

, в нем я устанавливаю глобальную переменную auth_token, которую затем добавляю ко всемGET запросы.Гадкий!

Прошу у вас огурцов / рельсов / тестовых гуру!Каков наилучший способ сделать это?

1 Ответ

1 голос
/ 11 января 2012

Мне показалось, что RSpec проще в использовании, чем огурец.

# spec/api/messages_spec.rb
describe "messages", :type => :api do
  it "retrieves messages" do
    get "/api/v1/messages", :token => user.authentication_token
    @messages = user.messages # this is the expected result
    last_response.body.should eql @messages.to_json
    last_response.status.should eql 200
  end
end

# spec/support/api/helper.rb, so we have access to get, post, put, delete methods
module ApiHelper
  include Rack::Test::Methods
  def app
    Rails.application
  end
end
RSpec.configure do |c|
  c.include ApiHelper, :type => :api
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...