este de integração do @Rspec Rails 3.1. Como enviar cabeçalhos de solicitação de postagem para celular, autenticação básica http e JSON?

Eu tenho um teste de integração RSPEC para um aplicativo Rails 3.1 que precisa testar uma API para um cliente móvel emitindo uma solicitação POST com parâmetros JSON e um cabeçalho móvel que precisa usar autenticação http_basic Como o objeto de solicitação não está disponível em uma integração teste eu estou meio preso

Este é o código que tenho até agora

    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

A solicitação de postagem não reconhece que estou usando autenticação básica http, mas não tenho certeza se o formato para json está correto. Qualquer ajuda apreciada

get_basic_auth é um me4thod ajudante que se parece com isso

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

Uso um before_filter em meus controladores que verifica se há dispositivos móveis e http_basic_authentication com esta aparência

  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

Eu recebo um redirecionamento para fazer o login, portanto, obviamente, o cabeçalho do celular não está sendo aceito, por isso não faço ideia se algum dos outros cabeçalhos está funcionando

ATUALIZA Descobri isso

  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"})

Faz o truque bem

questionAnswers(1)

yourAnswerToTheQuestion