【发布时间】:2021-04-22 23:34:18
【问题描述】:
继上一个问题之后,我取得了一些进展,但仍然卡住了
我可以在测试类中使用这个SetUp方法获取accessToken
但是当我尝试运行测试 CanGetAllCountries 时,它仍然说它是未经授权的
如何通过accessToken授权第二次测试?
public class APITestCustomer
{
public static string baseUrl = "https://www.example.net/umbraco/api/";
[SetUp]
public void OAuthLogonSetup()
{
var client = new RestClient(baseUrl);
RestRequest request = new RestRequest("UsersApi/Logon") { Method = Method.POST };
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-type", "application/x-www-form-urlencoded");
request.AddParameter("Username", "xxxxxx");
request.AddParameter("Password", "xxxxxx");
request.AddParameter("grant_type", "client_credentials");
var response = client.Execute(request);
var responseJson = response.Content;
var token = JsonConvert.DeserializeObject<Dictionary<string, object>>(responseJson)["accessToken"].ToString();
//Assert.That(token.Contains("test"));
}
[Test]
public void CanGetAllCountries()
{
RestClient client = new RestClient(baseUrl);
RestRequest request = new RestRequest("CountryApi/GetAll", Method.GET);
request.AddHeader("Authorization", "Bearer");
IRestResponse response = client.Execute(request);
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
}
}
}
【问题讨论】:
-
只需像保存 url 一样保存令牌,不是静态的,而是类属性。或者只是将令牌作为 OAuthLogonSetup() 方法的结果返回:) 同样在 AddHeader 上,您应该添加与 Bearer: $"Bearer {token}" 连接的令牌字符串,例如。
-
@JesúsNarváez 谢谢你的回复,我想我已经试过了,你能举个例子吗?再次感谢。
-
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ACCESS_TOKEN);检查:docs.microsoft.com/en-us/dotnet/api/…
-
@JesúsNarváez 谢谢,也许我今天过得很糟糕,但你能告诉我我会把它放在哪里吗:D 谢谢
标签: c# oauth-2.0 restsharp web-api-testing umbraco8