Rspec Rails 3.1 Prueba de integración. ¿Cómo enviar encabezados de solicitud posterior para dispositivos móviles, autenticación básica http y JSON?

Tengo una prueba de integración RSPEC para una aplicación Rails 3.1 que necesita probar una API para un cliente móvil mediante la emisión de una solicitud POST con parámetros JSON y un encabezado móvil que necesita usar la autenticación http_basic ya que el objeto de solicitud no está disponible en una integración prueba estoy un poco atascado

Este es el código que tengo hasta ahora

    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

La solicitud de publicación no reconoce que estoy usando autenticación básica http pero no estoy seguro si el formato para json es correcto. Cualquier ayuda apreciada

get_basic_auth es un método de ayuda que se parece a este

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

Uso un before_filter en mis controladores que comprueba la autenticación de http_basic_mobile y móvil que se parece a esto

  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

Obtengo una redirección para iniciar sesión, por lo que obviamente no se acepta el encabezado móvil, por lo que no tengo idea realmente si alguno de los otros encabezados está funcionando

ACTUALIZA Lo averigu

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

Hace el truco muy bien

Respuestas a la pregunta(1)

Su respuesta a la pregunta