2014-09-10 5 views
0

Я столкнулся с проблемой при тестировании REST API. Я попытался пройти аутентификацию, как показано ниже.тестирование REST API. session issue

response = RestClient::Request.new(
    :method => :get, 
    :url => @my_url, 
    :user => @my_user, 
    :password => @my_pass, 
    :headers => { :accept => :json, 
    :content_type => :json 
    } 
).execute 

Также я попытался https://username:[email protected]/api/1/contacts/list

стороне сервера код:

def self.list(usr, id = false) 
     data = { list: [], breadcrums: [] } 
     current = usr.documents.find(id) if id 
     query = if !id; 
      usr.documents.where(node_tree: []).only(:file_name, :mime_type, :updated_at, :id, :oauth_provider_id, :tags) 
     else 
      folder_id = Document.get_oauth_id(folder) 
      usr.documents.where(parent_id: folder_id).only(:file_name, :mime_type, :updated_at, :id, :oauth_provider_id, :tags) 
     end 
     result = query.sort_by{|doc| doc.file_name.downcase}.to_a 
     result.each { |v| data[:list] << v.attributes.merge({ provider: v.oauth_provider.oauth_key, id: v.id.to_s}) } 
     data[:breadcrumbs] = Document.breadcrumbs(current, usr) if id 
     data 
    end 

Но проблема в том, когда я пытаюсь проверить подлинность из кода. Ошибка внутреннего сервера (500) Проблема может заключаться в том, что они берут информацию для обработки из сеанса. Как я могу сделать ? Если вы не поняли, пожалуйста, дайте мне знать. Я попытаюсь уточнить. Как разрешить?

ответ

0

Используйте насмешливые библиотеки, такие как webmock, чтобы абстрагироваться от внешних услуг при тестировании:

stub_request(:get, "user:[email protected]") 

Net::HTTP.start('www.example.com') {|http| 
    req = Net::HTTP::Get.new('/') 
    req.basic_auth 'user', 'pass' 
    http.request(req) 
} # ===> Success 
+0

Я сделал то же самое. как получить контент из запроса? например: когда я попал на www.example.com/getdocuments/, он вернет ответ в формате json. Как можно получить это из кода выше? –

+0

Возможно, я был недостаточно ясен, когда вы написали тестирование, я предположил, что вы подразумеваете фактические модульные тесты. Там вы абстрагируетесь от вызова фактического api и просто убедитесь, что вы отправляете правильные сообщения. Если вы получаете ответ 500 от внешней службы, то он, скорее всего, сломан, и вам следует обратиться к провайдеру или использовать другую услугу. – max