protected MicroserviceResponse Execute(string url, Object content, HttpMethod requestMethod) { string accessToken = _httpContextAccessor.HttpContext.GetTokenAsync("access_token").Result; _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); Task <HttpResponseMessage> requestTask = null; switch (requestMethod) { case HttpMethod.Get: requestTask = _client.GetAsync(url); break; case HttpMethod.Post: requestTask = _client.PostAsync(url, new JsonContent(content)); break; case HttpMethod.Put: requestTask = _client.PutAsync(url, new JsonContent(content)); break; case HttpMethod.Delete: requestTask = _client.DeleteAsync(url); break; } HttpResponseMessage httpResponseMessage = requestTask.Result; string responseBody = httpResponseMessage.Content.ReadAsStringAsync().Result; MicroserviceResponse result = new MicroserviceResponse { ReturnData = responseBody, Code = httpResponseMessage.StatusCode }; return(result); }
public string GetData(HttpMethod method, string url) { var item = _table.ExecuteQuery(new TableQuery <JsonData>()).SingleOrDefault(x => x.Url == Uri.UnescapeDataString(url) && x.HttpMethod.Equals(method.ToString(), StringComparison.InvariantCultureIgnoreCase)); return(item?.Data); }
public async Task overwrites_existing_data_in_local_storage_when_same_key_is_used() { var original = new TestObject { Key = 123, Value = "String value 123" }; const HttpMethod httpMethod = HttpMethod.Get; var key = Uri.EscapeDataString("data?v=1.0&id=12345"); var url = $"api-stub/save?httpMethod={httpMethod}&url={key}"; var response = await _webApiClient.PostAsJsonAsync(url, original); response.EnsureSuccessStatusCode(); var expected = new TestObject { Key = 789, Value = "String value 789" }; response = await _webApiClient.PostAsJsonAsync(url, expected); response.EnsureSuccessStatusCode(); var data = _dataRepository.GetData(httpMethod, key); data.Should().BeEquivalentTo(JsonSerializer.Serialize(expected)); }
private static HttpRequest CreateStubRequest(HttpMethod httpMethod, string requestScheme, string host, string path) { var request = new Mock <HttpRequest>(); request.Setup(req => req.Method).Returns(httpMethod.ToString().ToUpper); request.Setup(req => req.Scheme).Returns(requestScheme); request.Setup(req => req.Host).Returns(new HostString(host)); request.Setup(req => req.Path).Returns(path); return(request.Object); }
public async Task InsertOrReplace(HttpMethod method, string url, object data) { var record = new JsonData { PartitionKey = _options.EnvironmentName, RowKey = $"{method}_{Uri.EscapeDataString(url)}", Url = Uri.UnescapeDataString(url), HttpMethod = method.ToString(), Data = JsonSerializer.Serialize(data) }; var operation = TableOperation.InsertOrReplace(record); await _table.ExecuteAsync(operation); }
public async Task deletes_existing_data_in_local_storage_when_same_key_is_used() { const HttpMethod httpMethod = HttpMethod.Get; var key = Uri.EscapeDataString("/data?v=1.0&id=12345"); await _dataRepository.InsertOrReplace(httpMethod, key, "test"); var response = await _webApiClient.DeleteAsync($"api-stub/delete?httpMethod={httpMethod}&url={key}"); response.EnsureSuccessStatusCode(); var data = _dataRepository.GetData(httpMethod, key); data.Should().BeNullOrEmpty(); }
public async Task WhenIMethodTheFollowingUrl(HttpMethod method, string url) { var client = _context.Get <HttpClient>(ContextKeys.HttpClient); HttpResponseMessage response = null; switch (method) { case HttpMethod.Get: response = await client.GetAsync(url); break; case HttpMethod.Post: if (!_context.TryGetValue <HttpContent>(ContextKeys.HttpResponse, out var postContent)) { Assert.Fail($"scenario context does not contain value for key [{ContextKeys.HttpContent}]"); } response = await client.PostAsync(url, postContent); break; case HttpMethod.Put: if (!_context.TryGetValue <HttpContent>(ContextKeys.HttpResponse, out var putContent)) { Assert.Fail($"scenario context does not contain value for key [{ContextKeys.HttpContent}]"); } response = await client.PutAsync(url, putContent); break; case HttpMethod.Delete: response = await client.DeleteAsync(url); break; default: Assert.Fail($"case for http method [{method}] has not been implemented"); break; } _context.Set(method, ContextKeys.HttpMethod); _context.Set(url, ContextKeys.HttpUri); _context.Set(response, ContextKeys.HttpResponse); }
public async Task saved_data_is_available_after_save_and_refresh() { var expected = new TestObject { Key = 123, Value = "String value 123" }; const HttpMethod httpMethod = HttpMethod.Get; var key = $"/{Guid.NewGuid()}"; var url = $"api-stub/save?httpMethod={httpMethod}&url={key}"; var response = await _webApiClient.PostAsJsonAsync(url, expected); response.EnsureSuccessStatusCode(); var data = await _wireMockApiClient.GetFromJsonAsync <TestObject>(key); data.Should().BeEquivalentTo(expected); }
[DisableConcurrentExecution(90)] //禁止使用並行 public string CallWebApi([DisplayData("服務端點", "http://localhost:8080/test.html?name=youname", "請求位置必須為 http or https")] Uri url, [DisplayData("請求方式", "POST", "常用的請求方式 GET、POST、PUT、DELETE ")] Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod method = Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod.Post, [DisplayData("請求內容", IsMultiLine = true)] string content = null, [DisplayData("內容類型", "application/x-www-form-urlencoded", "常見的有 application/x-www-form-urlencoded、multipart/form-data、text/plain、application/json 等", "application/x-www-form-urlencoded")] string contentType = "application/x-www-form-urlencoded", [DisplayData("內容編碼方式", "utf-8", "常見的有 UTF-8、Unicode、ASCII,錯誤的編碼會導致內容無法正確呈現", "utf-8", ConvertType = typeof(EncodingsInputDataList))] string contentEncoding = "UTF-8", [DisplayData("回應結果內容編碼", "utf-8", "常見的有 UTF-8、Unicode、ASCII,錯誤的編碼會導致內容無法正確呈現", "utf-8", ConvertType = typeof(EncodingsInputDataList))] string responseEncoding = "UTF-8", PerformContext context = null) { var defaultContentEncoding = Encoding.GetEncoding(contentEncoding) ?? Encoding.UTF8; var defaultResponseEncoding = Encoding.GetEncoding(responseEncoding) ?? Encoding.UTF8; context.WriteLine($"測試用,Now:{DateTime.Now}"); //Thread.Sleep(30000); return($"模擬呼叫Web API返回結果,目前時間:{DateTime.Now},內容編碼:{defaultContentEncoding},回傳編碼:{defaultResponseEncoding}"); }
public HttpVersionAndMethod(Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod method, int methodEnd) { throw null; }
public static HttpMethod MapMethod(KestrelMethod method) => method switch {
public async Task Delete(HttpMethod method, string url) { var record = _table.ExecuteQuery(new TableQuery <JsonData>()).Single(x => string.Equals(x.Url, url)); var operation = TableOperation.Delete(record); await _table.ExecuteAsync(operation); }
private void AddProductMessage(string data, string url, Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpMethod method) { var productMessage = new OutboxMessage(data, url, method); _context.OutboxMessages.Add(productMessage); }