oAuth 1.0 Аутентификация с использованием Karate Framework

Я не вижу примеров или документации, доступной в рамках карате для проверки подлинности 0auth 1.0. Я предоставляю детали авторизации в шапке как следующие и сталкивающиеся проблемы.

Given url 'https://api.twitter.com/1.1/statuses/update.json'
And header Content-Type = 'application/json'
And header Authorization = 'OAuth oauth_consumer_key="********",oauth_consumer_Secret="**********",oauth_token="********",oauth_token_secret="*********"'
And form field status = 'I am tweeting using karate'
When method post
Then status 201

1 ответ

Недавно было добавлено: коммит

Мясо в коде Java:

package demo.oauth;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import static org.apache.commons.codec.digest.DigestUtils.md5Hex;
import static org.apache.commons.codec.digest.DigestUtils.sha256Hex;

public class Signer {

public static void sign(String token, Map<String, String> params) {
        List<String> list = new ArrayList();
        String tokenClientSlat = "";
        for (String key : params.keySet()) {
            if (key.equals("token_client_salt")) {
                tokenClientSlat = params.get(key);
            }
            String paramString = key + "=" + params.get(key);
            list.add(paramString);
        }
        Collections.sort(list);
        StringBuilder sb = new StringBuilder();
        for (String s : list) {
            sb.append(s);
        }
        sb.append(token);
        String sig = md5Hex(sb.toString());
        String tokenSig = sha256Hex(sig + tokenClientSlat);
        params.put("sig", sig);
        params.put("__NStokensig", tokenSig);
    }        
}

И тогда особенность:

* def Signer = Java.type('demo.oauth.Signer')    
* def params =
"""
{ 
  'userId': '399645532', 
  'os':'android', 
  'client_key': '3c2cd3f3',
  'token': '141a649988c946ae9b5356049c316c5d-838424771',
  'token_client_salt': 'd340a54c43d5642e21289f7ede858995'
}
"""
* eval Signer.sign('382700b563f4', params)
* path 'echo'
* form fields params
* method post
* status 200
Другие вопросы по тегам