2016-07-31 4 views
0

JSON API用のRubyラッパーを作成しています。成功した投稿がそのエンドポイントに送信されると、特定のタイプの応答が期待されています...しかし、実際に応答を得る方法がわかりません。ファラデーからの応答をテストするにはどうすればよいですか?

私はこのようなファラデーを使用しています:

@connection ||= Faraday.new do |f| 
    f.url_prefix = "https://myapiurl.com/api/auth" 
    f.adapter :net_http 

    f.headers['User-Agent'] = "Some-Awesome-User-Agent" 
    f.headers['Content-Type'] = content_type 
    f.headers['Accept'] = api_version 
    f.params['API-KEY'] = api_key if api_key 

    f.response :json, content_type: /\bjson$/ 
    end 

私は@connection.postを行うときしかし、私はSSLのエラーを取得しておいてください。

@connection.post 
Faraday::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed 

私は間違っていないよ場合は、私が修正することができたら、 SSLエラーが発生しました。私は正しい動作をすることができる応答オブジェクトを受け取るべきですか?

編集1

私はrvm 1.27.0 (latest)

とともに、これは以下のように私のGemfile.lockが見えるものでも、ruby 2.3.1OpenSSL 0.9.8zh 14 Jan 2016を使用しています:あなたはあなたのSSL証明書ため、このエラーが出る

PATH 
    remote: . 
    specs: 
    mygem (0.1.0) 

GEM 
    remote: https://rubygems.org/ 
    specs: 
    coderay (1.1.1) 
    diff-lcs (1.2.5) 
    faraday (0.9.2) 
     multipart-post (>= 1.2, < 3) 
    faraday_middleware (0.10.0) 
     faraday (>= 0.7.4, < 0.10) 
    json (2.0.2) 
    method_source (0.8.2) 
    multipart-post (2.0.0) 
    pry (0.10.4) 
     coderay (~> 1.1.0) 
     method_source (~> 0.8.1) 
     slop (~> 3.4) 
    rake (10.5.0) 
    rspec (3.5.0) 
     rspec-core (~> 3.5.0) 
     rspec-expectations (~> 3.5.0) 
     rspec-mocks (~> 3.5.0) 
    rspec-core (3.5.1) 
     rspec-support (~> 3.5.0) 
    rspec-expectations (3.5.0) 
     diff-lcs (>= 1.2.0, < 2.0) 
     rspec-support (~> 3.5.0) 
    rspec-mocks (3.5.0) 
     diff-lcs (>= 1.2.0, < 2.0) 
     rspec-support (~> 3.5.0) 
    rspec-support (3.5.0) 
    slop (3.6.0) 

PLATFORMS 
    ruby 

DEPENDENCIES 
    bundler (~> 1.11) 
    faraday (~> 0.9.2) 
    faraday_middleware (~> 0.10.0) 
    json (~> 2.0, >= 2.0.2) 
    mygem 
    pry (~> 0.10.4) 
    rake (~> 10.0) 
    rspec (~> 3.0) 
    rspec-expectations (~> 3.5) 

BUNDLED WITH 
    1.12.5 

答えて

1

信頼できる認証局(CA)によって署名されていないか、まったく署名されていません。 {ssl: {verify: false}}Faraday.newに渡すと、強制的にCA検証をスキップできます。

@connection ||= Faraday.new(ssl: {verify: false}) do |f| 
    # ... 
end 

これは、SSL証明書を購入する前に、独自のWeb APIをテストするため大丈夫ですが、APIの他、独自のよりを呼び出すときにCAせずに、あなたがそのサイトの証明書かどうかを伝えることはできませんので、これをしません偽物です。

関連する問題