Rspec Rails 3.1 Интеграционный тест. Как отправить заголовки почтовых запросов для мобильных устройств, обычную проверку подлинности http и JSON?

У меня есть тест интеграции RSPEC для приложения Rails 3.1, который должен проверить API для мобильного клиента, выполнив запрос POST с параметрами JSON и мобильный заголовок, который должен использовать аутентификацию http_basic, так как объект запроса недоступен в интеграционном тесте Я вроде застрял

Это код, который я до сих пор

    it "successfully posts scores" do
# request.env["HTTP_ACCEPT"] = "application/json" #This causes an error as request is nly available in controller tests

      post "scores", :score => {:mobile_user_id => @mobile_user.id, :points => 50, :time_taken => 7275}.to_json,
           :format => :json, :user_agent => 'Mobile', 'HTTP_AUTHORIZATION' =>  get_basic_auth
    end

Почтовый запрос не распознает, что я использую http-аутентификацию, но не уверен, что формат для json правильный. Любая помощь приветствуется

get_basic_auth - это вспомогательный метод me4thod, который выглядит следующим образом

  def get_basic_auth
    user = 'user'
    pw = 'secret'
    ActionController::HttpAuthentication::Basic.encode_credentials user, pw
  end

Я использую before_filter в моих контроллерах, который проверяет мобильность и http_basic_authentication, которая выглядит следующим образом

  def authorize
    logger.debug("@@@@ Authorizing request #{request.inspect}")
    if mobile_device?
        authenticate_or_request_with_http_basic do |username, password|
          username == Mobile::Application.config.mobile_login_name && Mobile::Application.config.mobile_password
        end
    else
      unless current_user
        redirect_to login_url, :notice => "Please log in"
      end
    end
  end

Я получаю переадресацию для входа в систему, поэтому очевидно, что мобильный заголовок не принимается, поэтому я понятия не имею, работает ли какой-либо из других заголовков.

ОБНОВИТЬ Догадаться

  post("scores", {:score => {:mobile_user_id => @mobile_user.id, :points => 50, :time_taken => 7275}}.to_json,
       {"HTTP_USER_AGENT" => "Mobile", 'HTTP_AUTHORIZATION' => get_basic_auth, 'HTTP_CONTENT_TYPE' => "application/json"})

Трюк хорошо

Ответы на вопрос(1)

Ваш ответ на вопрос