public async Task GetTranslation_TooManyRequests() { //mock fake response and initialize test var fakeHandler = new FakeHttpMessageHandler(); fakeHandler.Response = new HttpResponseMessage((HttpStatusCode)429); var textToTranslate = "sample text to be translated"; var sampleTranslation = GetSampleTranslation_Error(textToTranslate); fakeHandler.Response.Content = new StringContent(JsonConvert.SerializeObject(sampleTranslation), Encoding.UTF8, "application/json"); HttpClient client = new HttpClient(fakeHandler); //execute try { var result = await ShakespeareTranslatorUtils.GetTranslationAsync(client, shakespeareTranslatorEndpoint, textToTranslate); } catch (HttpException ex) { Assert.AreEqual((HttpStatusCode)429, (HttpStatusCode)ex.GetHttpCode()); return; } }
public async Task <IHttpActionResult> GetPokemonDataAsync(string pokemonName) { //test api call get pokemon var pokeapiEndpoint = ConfigurationManager.AppSettings["PokeApiEndpoint"]; var shakesperareTranslatorEndpoint = ConfigurationManager.AppSettings["ShakespeareTranslatorEndpoint"]; //get pokemon data via PokeApi var pokemonDescription = ""; //get pokemon data try { var pokemon = await PokeApiUtils.GetPokemonDataAsync(Client, string.Format("{0}/pokemon/{1}", pokeapiEndpoint, pokemonName)); if (!string.IsNullOrEmpty(pokemon.species?.Url)) { //get species data var pokemonSpecies = await PokeApiUtils.GetPokemonSpeciesDataAsync(Client, pokemon.species.Url); //filter for english language and group results by version, to take only the most recent values List <string> flavorTexts = pokemonSpecies.flavorTextEntries.Where(t => t.language.Name == "en").GroupBy(g => g.version.Url).LastOrDefault()?.Select(s => s.flavorText).ToList(); pokemonDescription = string.Join("\n", flavorTexts); } } catch (HttpException ex) { return(Content((HttpStatusCode)ex.GetHttpCode(), ex.Message.ToString())); } catch (Exception ex) { return(Content(HttpStatusCode.InternalServerError, ex.Message.ToString())); } //get translation via ShakespeareTranslator var translatedDescription = ""; //get translation try { var translation = await ShakespeareTranslatorUtils.GetTranslationAsync(Client, shakesperareTranslatorEndpoint, pokemonDescription); translatedDescription = translation.contents.translated; } catch (HttpException ex) { return(Content((HttpStatusCode)ex.GetHttpCode(), ex.Message.ToString())); } catch (Exception ex) { return(Content(HttpStatusCode.InternalServerError, ex.Message.ToString())); } var response = new TranslatedPokemonResponseModel(pokemonName, translatedDescription); return(Ok(response)); }
public async Task ShakespeareTranslator_ValidInput() { //initialize test var textToTranslate = "sample text to be translated"; //var jsonContent = Helper.CreateRequestContent(new ShakespeareTranslator_InputModel(textToTranslate)); //execute var translation = await ShakespeareTranslatorUtils.GetTranslationAsync(Client, Client.BaseAddress.ToString(), textToTranslate); //var response = await Client.PostAsync("", jsonContent); //var responseContent = await response.Content.ReadAsStringAsync(); //var translation = JsonConvert.DeserializeObject<ShakespeareTranslator_ResponseModel>(responseContent); //assert //response.EnsureSuccessStatusCode(); Assert.IsFalse(string.IsNullOrEmpty(translation.contents.translated)); }
public async Task GetTranslation_ValidInput() { //mock fake response and initialize test var fakeHandler = new FakeHttpMessageHandler(); fakeHandler.Response.StatusCode = HttpStatusCode.OK; var textToTranslate = "sample text to be translated"; var sampleTranslation = GetSampleTranslation_Success(textToTranslate); fakeHandler.Response.Content = new StringContent(JsonConvert.SerializeObject(sampleTranslation), Encoding.UTF8, "application/json"); HttpClient client = new HttpClient(fakeHandler); //execute var result = await ShakespeareTranslatorUtils.GetTranslationAsync(client, shakespeareTranslatorEndpoint, textToTranslate); //assert Assert.IsTrue(result.success != null); Assert.AreEqual(textToTranslate, result.contents.text); }