Browse Source

Add Functional Test to marketing

pull/223/head
Christian Arenas 7 years ago
parent
commit
31fd93dafe
5 changed files with 223 additions and 0 deletions
  1. +39
    -0
      test/Services/FunctionalTests/Services/Locations/LocationsScenariosBase.cs
  2. +45
    -0
      test/Services/FunctionalTests/Services/Locations/LocationsTestsStartup.cs
  3. +65
    -0
      test/Services/FunctionalTests/Services/Marketing/MarketingScenarios.cs
  4. +48
    -0
      test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs
  5. +26
    -0
      test/Services/FunctionalTests/Services/Marketing/MarketingTestsStartup.cs

+ 39
- 0
test/Services/FunctionalTests/Services/Locations/LocationsScenariosBase.cs View File

@ -0,0 +1,39 @@
namespace FunctionalTests.Services.Locations
{
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.TestHost;
using System;
using System.IO;
public class LocationsScenariosBase
{
public TestServer CreateServer()
{
var webHostBuilder = new WebHostBuilder();
webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\Locations");
webHostBuilder.UseStartup<LocationsTestsStartup>();
return new TestServer(webHostBuilder);
}
public static class Get
{
public static string Locations = "api/v1/locations";
public static string LocationBy(string id)
{
return $"api/v1/locations/{id}";
}
public static string UserLocationBy(Guid id)
{
return $"api/v1/locations/user/{id}";
}
}
public static class Post
{
public static string AddNewLocation = "api/v1/locations/";
}
}
}

+ 45
- 0
test/Services/FunctionalTests/Services/Locations/LocationsTestsStartup.cs View File

@ -0,0 +1,45 @@
namespace FunctionalTests.Services.Locations
{
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.eShopOnContainers.Services.Locations.API;
using System.Security.Claims;
using System.Threading.Tasks;
public class LocationsTestsStartup : Startup
{
public LocationsTestsStartup(IHostingEnvironment env) : base(env)
{
}
protected override void ConfigureAuth(IApplicationBuilder app)
{
if (Configuration["isTest"] == bool.TrueString.ToLowerInvariant())
{
app.UseMiddleware<LocationAuthorizeMiddleware>();
}
else
{
base.ConfigureAuth(app);
}
}
class LocationAuthorizeMiddleware
{
private readonly RequestDelegate _next;
public LocationAuthorizeMiddleware(RequestDelegate rd)
{
_next = rd;
}
public async Task Invoke(HttpContext httpContext)
{
var identity = new ClaimsIdentity("cookies");
identity.AddClaim(new Claim("sub", "4611ce3f-380d-4db5-8d76-87a8689058ed"));
httpContext.User.AddIdentity(identity);
await _next.Invoke(httpContext);
}
}
}
}

+ 65
- 0
test/Services/FunctionalTests/Services/Marketing/MarketingScenarios.cs View File

@ -0,0 +1,65 @@
namespace FunctionalTests.Services.Marketing
{
using UserLocationDTO = Microsoft.eShopOnContainers.Services.Marketing.API.Dto.UserLocationDTO;
using UserLocation = Microsoft.eShopOnContainers.Services.Locations.API.Model.UserLocation;
using LocationRequest = Microsoft.eShopOnContainers.Services.Locations.API.ViewModel.LocationRequest;
using FunctionalTests.Extensions;
using FunctionalTests.Services.Basket;
using FunctionalTests.Services.Locations;
using Microsoft.eShopOnContainers.Services.Basket.API.Model;
using Microsoft.eShopOnContainers.WebMVC.ViewModels;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using WebMVC.Models;
using Xunit;
public class MarketingScenarios : MarketingScenariosBase
{
[Fact]
public async Task Set_new_user_location_and_get_location_campaign_by_user_id()
{
using (var locationsServer = new LocationsScenariosBase().CreateServer())
using (var marketingServer = CreateServer())
{
var location = new LocationRequest
{
Longitude = -122.315752,
Latitude = 47.604610
};
var content = new StringContent(JsonConvert.SerializeObject(location),
Encoding.UTF8, "application/json");
var userId = new Guid("4611ce3f-380d-4db5-8d76-87a8689058ed");
// GIVEN a new location of user is created
var response = await locationsServer.CreateClient()
.PostAsync(LocationsScenariosBase.Post.AddNewLocation, content);
//Get location user from Location.API
var userLocationResponse = await locationsServer.CreateClient()
.GetAsync(LocationsScenariosBase.Get.UserLocationBy(userId));
var responseBody = await userLocationResponse.Content.ReadAsStringAsync();
var userLocation = JsonConvert.DeserializeObject<UserLocation>(responseBody);
await Task.Delay(5000);
//Get campaing from Marketing.API given a userId
var UserLocationCampaignResponse = await locationsServer.CreateClient()
.GetAsync(Get.UserCampaignByUserId(userId));
responseBody = await UserLocationCampaignResponse.Content.ReadAsStringAsync();
var userLocationCampaign = JsonConvert.DeserializeObject<UserLocationDTO>(responseBody);
// Assert
Assert.Equal(userLocation.LocationId, userLocationCampaign.LocationId);
}
}
}
}

+ 48
- 0
test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs View File

@ -0,0 +1,48 @@
namespace FunctionalTests.Services.Marketing
{
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.TestHost;
using System.IO;
public class MarketingScenariosBase
{
public static string CampaignsUrlBase => "api/v1/campaigns";
public TestServer CreateServer()
{
var webHostBuilder = new WebHostBuilder();
webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\Marketing");
webHostBuilder.UseStartup<MarketingTestsStartup>();
return new TestServer(webHostBuilder);
}
public static class Get
{
public static string Campaigns = CampaignsUrlBase;
public static string CampaignBy(int id)
=> $"{CampaignsUrlBase}/{id}";
public static string UserCampaignByUserId(System.Guid userId)
=> $"{CampaignsUrlBase}/user/{userId}";
}
public static class Post
{
public static string AddNewCampaign = CampaignsUrlBase;
}
public static class Put
{
public static string CampaignBy(int id)
=> $"{CampaignsUrlBase}/{id}";
}
public static class Delete
{
public static string CampaignBy(int id)
=> $"{CampaignsUrlBase}/{id}";
}
}
}

+ 26
- 0
test/Services/FunctionalTests/Services/Marketing/MarketingTestsStartup.cs View File

@ -0,0 +1,26 @@
using FunctionalTests.Middleware;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.eShopOnContainers.Services.Ordering.API;
namespace FunctionalTests.Services.Marketing
{
public class MarketingTestsStartup : Startup
{
public MarketingTestsStartup(IHostingEnvironment env) : base(env)
{
}
protected override void ConfigureAuth(IApplicationBuilder app)
{
if (Configuration["isTest"] == bool.TrueString.ToLowerInvariant())
{
app.UseMiddleware<AutoAuthorizeMiddleware>();
}
else
{
base.ConfigureAuth(app);
}
}
}
}

Loading…
Cancel
Save