public IList<FormResponse> GetForms(HttpRequestMessage request)
{
string storeCode = ExtractBasicAuthUserFromHeader(request);
List<Form> forms = _apiRepository.GetForms(storeCode); ///23424324
return forms;
}
private string ExtractBasicAuthUserFromHeader(HttpRequestMessage reqeust)
{
Encoding encoding = Encoding.GetEncoding("iso-8859-1");
string usernamePassword = encoding.GetString(Convert.FromBase64String(reqeust.Headers.Authorization.Parameter
));
return usernamePassword.Substring(0, usernamePassword.IndexOf(':'));
}
Я написал следующий тест для проверки выше
private readonly Mock<IApiRepository> _apiRepository = new Mock<IApiRepository>();
[TestInitialize]
public void Init()
{
_apiRepository.Setup(x => x.GetForms("23424324")).Returns(_forms); //skipping FromBase64String converation for understanding
}
[TestMethod]
public void GetForms_ReturnFormList()
{
HttpRequestMessage reqeust = new HttpRequestMessage(); ;
//Error CS0200 Property or indexer 'AuthenticationHeaderValue.Parameter' cannot be assigned to -- it is read only
reqeust.Headers.Authorization.Parameter = "23424324:12341234123";
IList<FormResponse> formList = _formService.GetForms(reqeust);
Assert.AreEqual(formList.Count, 2);
}
получить следующую ошибку
Ошибка CS0200 Свойство или индексатор 'AuthenticationHeaderValue.Parameter' не могут быть назначены - оно доступно только для чтения
интересно, как я могу издеваться над HttpRequestMessage reqeust = new HttpRequestMessage ();
добавить базовую строку reqeust.Headers.Authorization.Parameter
протестировать функциональность GetForms в классе услуг