public async Task IntegrationTestAsync() { #region test get all var response = await client.GetAsync("/vehicles"); try { Assert.AreEqual((int)response.StatusCode, 200); } catch (Exception ex) { Console.WriteLine(ex); return; } var data = await response.Content.ReadAsStreamAsync(); var vehicles = await JsonSerializer.DeserializeAsync <IEnumerable <Vehicle> >(data); var initialCount = vehicles.Count(); #endregion test get all #region test post var newVehicle = new Vehicle { CanBeRented = true, RentPricePerHour = 222.421m, ManufacturerDetails = new ManufacturerDetails { VIN = RandomStringsGenerator.GetRandomString(17), DateOfManufacture = new DateTime(2002, 2, 1), Mark = "Dacia", Model = "Duster" } }; var jsonObject = JsonSerializer.Serialize(newVehicle); response = await client.PostAsync("/vehicles", new StringContent( jsonObject.ToString(), Encoding.UTF8, jsonContentType)); try { Assert.AreEqual((int)response.StatusCode, 201); } catch (Exception ex) { Console.WriteLine(ex); return; } #endregion test post #region test get // get the id of the added vehicle from Location header var id = response.Headers.Location.ToString().Split("/").Last(); response = await client.GetAsync($"/vehicles/{id}"); try { Assert.AreEqual((int)response.StatusCode, 200); } catch (Exception ex) { Console.WriteLine(ex); return; } #endregion test get #region test the vehicle is Dacia by VIN // the vehicle added in the last call data = await response.Content.ReadAsStreamAsync(); var vehicleDacia = await JsonSerializer.DeserializeAsync <Vehicle>(data); try { Assert.AreEqual(newVehicle.ManufacturerDetails.VIN, vehicleDacia.ManufacturerDetails.VIN); } catch (Exception ex) { Console.WriteLine(ex); return; } #endregion test the vehicle is Dacia by VIN #region test put vehicleDacia.ManufacturerDetails.Mark = "Renault"; vehicleDacia.ManufacturerDetails.Model = "Captur"; jsonObject = JsonSerializer.Serialize(vehicleDacia); response = await client.PutAsync($"/vehicles/{vehicleDacia.Id}", new StringContent( jsonObject.ToString(), Encoding.UTF8, jsonContentType)); try { Assert.AreEqual((int)response.StatusCode, 204); } catch (Exception ex) { Console.WriteLine(ex); return; } #endregion test put #region test vehicle is Renault and id didn't changed response = await client.GetAsync($"/vehicles/{vehicleDacia.Id}"); data = await response.Content.ReadAsStreamAsync(); var vehicleRenault = await JsonSerializer.DeserializeAsync <Vehicle>(data); try { Assert.AreEqual(vehicleDacia.Id, vehicleRenault.Id); } catch (Exception ex) { Console.WriteLine(ex); return; } try { Assert.AreEqual("Renault", vehicleRenault.ManufacturerDetails.Mark); } catch (Exception ex) { Console.WriteLine(ex); return; } #endregion test vehicle is Renault by VIN #region test delete response = await client.DeleteAsync($"/vehicles/{vehicleRenault.Id}"); try { Assert.AreEqual((int)response.StatusCode, 204); } catch (Exception ex) { Console.WriteLine(ex); return; } #endregion test delete #region test count is initialCount response = await client.GetAsync("/vehicles"); data = await response.Content.ReadAsStreamAsync(); vehicles = await JsonSerializer.DeserializeAsync <IEnumerable <Vehicle> >(data); try { Assert.AreEqual(initialCount, vehicles.Count()); } catch (Exception ex) { Console.WriteLine(ex); return; } #endregion test count is initialCount }
public void Setup() { sut = new RandomStringsGenerator(4, 7, new Random(0)); }