2017-02-02 11 views
2

OAUTH2認証を使用するAPIでRequestsLibraryを使用しようとしています。OAUTH2認証要求ヘッダーを使用したロボットフレームワークのAPIテスト

認証は、認証情報が/ v1/authtokenエンドポイントに提供されているOAUTH2を介して行われます。 これ以降のAPÍBの呼び出しでは、http要求の 'Authorization'ヘッダにトークンを「ベアラ」として含める必要があります。

以下はテストケースです。私は次のエラーを受け取ります: 401!= 200

jmeterで資格情報が正常に動作し、アカウントの一覧が返されます。しかし、私はRFスクリプトの仕事を得ることができません。どんな助けもありがとう。

スクリプトで

、アクセストークンを返し${accessToken}コンソールへ

  1. ログイン:8ETFXTZOWQLrgsMj7c_KuCEeypdj-eO1rを...
  2. ${token}戻り、コンソールにログインします:ベアラ8ETFXTZOWQLrgsMj7c_KuCEeypdj-eO1rを...


*** Test Cases *** 

Get authToken 
    Create Session hook http://xxxx.azurewebsites.net verify=${True} 
    ${data}=  Create Dictionary  grant_type=client_credentials  client_id=yyy-zzzz  client_secret=xxxxxxxxxxxxxxx 
    ${headers}= Create Dictionary  Content-Type=application/x-www-form-urlencoded 
    ${resp}= post request hook /v1/authtoken data=${data} headers=${headers} 
    Should Be Equal As Strings ${resp.status_code}  200 
    Dictionary Should Contain Value  ${resp.json()} bearer 
    ${accessToken}= evaluate $resp.json().get("access_token") 
    Log to Console  ${accessToken} 
    ${Bearer}=  Set Variable Bearer 
    ${token}=  catenate Bearer ${accessToken} 
    Log to Console  ${token} 
    ${headers}= Create Dictionary Authorization=${token} 
    ${resp1}=  get request  hook /v1/integration/accounts headers=${headers} 
    Should Be Equal As Strings ${resp1.status_code} 200 
    #Log to Console ${resp1.json()} 
+0

サンディープ@Bryan @私は同じエラーを取得していますようにあなたの質問に対する答えを見つけることでした。親切に答えを共有する –

+0

申し訳ありません、私は離れていました。ちょうどこの議論を見ました....私はこれを試してみます。 –

+0

はい、これは私のために今働くようです。ありがとう。 しかし、auth2トークンを生成する私の純粋なpythonメソッドは、私ははるかに簡潔に言う必要があります! –

答えて

0

私はSalesforceの自動化にもOAuth 2.0認証を使用しています。

私の最初の答えは、クライアントベースまたはWebベースの認証を使用している場合は、その意志ログイン画面があるだろう、クライアントベースの認証をスキップし、ユーザー名/パスワードベースの認証

 Get authToken by Password Authentication 

RequestsLibrary.Create Session hook https://<url>/services/oauth2 verify=${True} 
${data}=  Create Dictionary  grant_type=password  client_id=1abc client_secret=2abc [email protected] password=keypass 
${headers}= Create Dictionary  Content-Type=application/x-www-form-urlencoded 
${resp}=  RequestsLibrary.Post Request hook /token data=${data} headers=${headers} 
Should Be Equal As Strings ${resp.status_code}  200 
${accessToken}= evaluate $resp.json().get("access_token") 
Log to Console  ${accessToken} 

に切り替えることであろうユーザーがユーザー名/パスワードを入力するために使用して、アプリが代理でリクエストを送信する権限を与えます。これらのページでは、リフレッシュ・トークンの使用またはユーザー・プロンプトのスキップについて主に説明します。

関連する問題