Merge pull request #51 from dotnet-architecture/dev
eShopOnContainers fork
This commit is contained in:
		
						commit
						3f0c46741a
					
				| @ -7,7 +7,6 @@ | ||||
| docker-compose*.yml | ||||
| docker-compose.dcproj | ||||
| *.sln | ||||
| !eShopOnContainers-ServicesAndWebApps.sln | ||||
| *.md | ||||
| hosts | ||||
| LICENSE | ||||
| @ -32,3 +31,12 @@ cli-linux | ||||
| global.json | ||||
| **/appsettings.localhost.json | ||||
| src/Web/WebSPA/wwwroot/ | ||||
| packages/ | ||||
| csproj-files/ | ||||
| test-results/ | ||||
| TestResults/ | ||||
| src/Mobile/ | ||||
| src/Web/Catalog.WebForms/ | ||||
| src/Web/WebMonolithic/ | ||||
| src/BuildingBlocks/CommandBus/ | ||||
| src/Services/Marketing/Infrastructure/ | ||||
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -26,6 +26,9 @@ bld/ | ||||
| # Visual Studio 2015 cache/options directory | ||||
| .vs/ | ||||
| 
 | ||||
| # Dockerfile projects folder for restore-packages script | ||||
| csproj-files/ | ||||
| 
 | ||||
| # .js files created on build: | ||||
| src/Web/WebMVC/wwwroot/js/site* | ||||
| 
 | ||||
| @ -42,6 +45,8 @@ src/Web/WebMVC/wwwroot/js/site* | ||||
| *.VisualState.xml | ||||
| TestResult.xml | ||||
| 
 | ||||
| tests-results/ | ||||
| 
 | ||||
| # Build Results of an ATL Project | ||||
| [Dd]ebugPS/ | ||||
| [Rr]eleasePS/ | ||||
|  | ||||
| @ -50,31 +50,3 @@ jobs: | ||||
|     inputs: | ||||
|       pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||
|       artifactName: helm | ||||
| - job: BuildWindows | ||||
|   pool: | ||||
|     vmImage: 'vs2017-win2016' | ||||
|   steps: | ||||
|   - task: DockerCompose@0 | ||||
|     displayName: Compose build apigws | ||||
|     inputs: | ||||
|       dockerComposeCommand: 'build mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw' | ||||
|       containerregistrytype: Container Registry | ||||
|       dockerRegistryEndpoint: $(registryEndpoint) | ||||
|       dockerComposeFile: docker-compose.yml | ||||
|       qualifyImageNames: true | ||||
|       projectName: "" | ||||
|       dockerComposeFileArgs: | | ||||
|         TAG=$(Build.SourceBranchName) | ||||
|         PLATFORM=win | ||||
|   - task: DockerCompose@0 | ||||
|     displayName: Compose push apigws | ||||
|     inputs: | ||||
|       dockerComposeCommand: 'push mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw' | ||||
|       containerregistrytype: Container Registry | ||||
|       dockerRegistryEndpoint: $(registryEndpoint) | ||||
|       dockerComposeFile: docker-compose.yml | ||||
|       qualifyImageNames: true | ||||
|       projectName: "" | ||||
|       dockerComposeFileArgs: | | ||||
|         TAG=$(Build.SourceBranchName) | ||||
|         PLATFORM=win | ||||
							
								
								
									
										2
									
								
								cli-windows/set-dockernat-networkategory-to-private.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								cli-windows/set-dockernat-networkategory-to-private.ps1
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
|  #Requires -RunAsAdministrator | ||||
|  Get-NetConnectionProfile | Where-Object { $_.InterfaceAlias -match "(DockerNAT)" } | ForEach-Object { Set-NetConnectionProfile -InterfaceIndex $_.InterfaceIndex -NetworkCategory Private } | ||||
| @ -110,6 +110,7 @@ services: | ||||
|       - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} | ||||
|       - OrchestratorType=${ORCHESTRATOR_TYPE} | ||||
|       - UseLoadTest=${USE_LOADTEST:-False} | ||||
|       - Serilog__MinimumLevel__Override__Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ=Verbose | ||||
|     ports: | ||||
|       - "5102:80"   # Important: In a production environment your should remove the external port (5102) kept here for microservice debugging purposes.  | ||||
|                     # The API Gateway redirects and access through the internal port (80). | ||||
| @ -130,6 +131,7 @@ services: | ||||
|       - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} | ||||
|       - OrchestratorType=${ORCHESTRATOR_TYPE} | ||||
|       - UseLoadTest=${USE_LOADTEST:-False} | ||||
|       - Serilog__MinimumLevel__Override__Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ=Verbose | ||||
|     ports: | ||||
|       - "5111:80" | ||||
| 
 | ||||
| @ -168,6 +170,8 @@ services: | ||||
|       - AzureServiceBusEnabled=False | ||||
|       - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} | ||||
|       - OrchestratorType=${ORCHESTRATOR_TYPE} | ||||
|       - Serilog__MinimumLevel__Override__Payment.API.IntegrationEvents.EventHandling=Verbose | ||||
|       - Serilog__MinimumLevel__Override__Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ=Verbose | ||||
|     ports: | ||||
|       - "5108:80"   # Important: In a production environment your should remove the external port (5108) kept here for microservice debugging purposes.  | ||||
|                     # The API Gateway redirects and access through the internal port (80). | ||||
| @ -326,40 +330,40 @@ services: | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Production | ||||
|       - ASPNETCORE_URLS=http://0.0.0.0:80 | ||||
|       - HealthChecks-UI__HealthChecks__1__Name=WebMVC HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__1__Uri=http://webmvc/hc | ||||
|       - HealthChecks-UI__HealthChecks__2__Name=WebSPA HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__2__Uri=http://webspa/hc | ||||
|       - HealthChecks-UI__HealthChecks__3__Name=Web Shopping Aggregator GW HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__3__Uri=http://webshoppingagg/hc | ||||
|       - HealthChecks-UI__HealthChecks__4__Name=Mobile Shopping Aggregator HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__4__Uri=http://mobileshoppingagg/hc | ||||
|       - HealthChecks-UI__HealthChecks__5__Name=Mobile Shopping API GW HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__5__Uri=http://mobileshoppingapigw/hc | ||||
|       - HealthChecks-UI__HealthChecks__6__Name=Mobile Marketing API GW HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__6__Uri=http://mobilemarketingapigw/hc | ||||
|       - HealthChecks-UI__HealthChecks__7__Name=Web Shopping API GW HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__7__Uri=http://webshoppingapigw/hc | ||||
|       - HealthChecks-UI__HealthChecks__8__Name=Web Marketing API GW HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__8__Uri=http://webmarketingapigw/hc | ||||
|       - HealthChecks-UI__HealthChecks__9__Name=Ordering HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__9__Uri=http://ordering.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__10__Name=Ordering HTTP Background Check | ||||
|       - HealthChecks-UI__HealthChecks__10__Uri=http://ordering.backgroundtasks/hc | ||||
|       - HealthChecks-UI__HealthChecks__11__Name=Basket HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__11__Uri=http://basket.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__12__Name=Catalog HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__12__Uri=http://catalog.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__13__Name=Identity HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__13__Uri=http://identity.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__14__Name=Marketing HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__14__Uri=http://marketing.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__15__Name=Locations HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__15__Uri=http://locations.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__16__Name=Payments HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__16__Uri=http://payment.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__17__Name=Ordering SignalRHub HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__17__Uri=http://ordering.signalrhub/hc       | ||||
|       - HealthChecks-UI__HealthChecks__0__Name=WebMVC HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__0__Uri=http://webmvc/hc | ||||
|       - HealthChecks-UI__HealthChecks__1__Name=WebSPA HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__1__Uri=http://webspa/hc | ||||
|       - HealthChecks-UI__HealthChecks__2__Name=Web Shopping Aggregator GW HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__2__Uri=http://webshoppingagg/hc | ||||
|       - HealthChecks-UI__HealthChecks__3__Name=Mobile Shopping Aggregator HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__3__Uri=http://mobileshoppingagg/hc | ||||
|       - HealthChecks-UI__HealthChecks__4__Name=Mobile Shopping API GW HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__4__Uri=http://mobileshoppingapigw/hc | ||||
|       - HealthChecks-UI__HealthChecks__5__Name=Mobile Marketing API GW HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__5__Uri=http://mobilemarketingapigw/hc | ||||
|       - HealthChecks-UI__HealthChecks__6__Name=Web Shopping API GW HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__6__Uri=http://webshoppingapigw/hc | ||||
|       - HealthChecks-UI__HealthChecks__7__Name=Web Marketing API GW HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__7__Uri=http://webmarketingapigw/hc | ||||
|       - HealthChecks-UI__HealthChecks__8__Name=Ordering HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__8__Uri=http://ordering.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__9__Name=Ordering HTTP Background Check | ||||
|       - HealthChecks-UI__HealthChecks__9__Uri=http://ordering.backgroundtasks/hc | ||||
|       - HealthChecks-UI__HealthChecks__10__Name=Basket HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__10__Uri=http://basket.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__11__Name=Catalog HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__11__Uri=http://catalog.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__12__Name=Identity HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__12__Uri=http://identity.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__13__Name=Marketing HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__13__Uri=http://marketing.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__14__Name=Locations HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__14__Uri=http://locations.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__15__Name=Payments HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__15__Uri=http://payment.api/hc | ||||
|       - HealthChecks-UI__HealthChecks__16__Name=Ordering SignalRHub HTTP Check | ||||
|       - HealthChecks-UI__HealthChecks__16__Uri=http://ordering.signalrhub/hc       | ||||
|       - OrderingBackgroundTasksUrl=http://ordering.backgroundtasks/hc | ||||
|       - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} | ||||
|       - OrchestratorType=${ORCHESTRATOR_TYPE} | ||||
|  | ||||
| @ -45,7 +45,7 @@ if ([string]::IsNullOrEmpty($dns)) { | ||||
| 
 | ||||
| if ($clean) { | ||||
|     Write-Host "Cleaning previous helm releases..." -ForegroundColor Green | ||||
|     helm delete --purge $(helm ls -q)  | ||||
|     helm delete --purge $(helm ls -q eshop)  | ||||
|     Write-Host "Previous releases deleted" -ForegroundColor Green | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										1
									
								
								restore-packages.cmd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								restore-packages.cmd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| for /R %%f in (*.csproj) do dotnet restore --no-dependencies %%f | ||||
| @ -1,6 +1,6 @@ | ||||
| $startTime = $(Get-Date) | ||||
| 
 | ||||
| docker-compose build | ||||
| docker-compose build --build-arg RUN=scripts/restore-packages | ||||
| 
 | ||||
| $elapsedTime = $(Get-Date) - $startTime | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										1
									
								
								scripts/restore-packages
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								scripts/restore-packages
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| echo RESTORING ALL PACKAGES...; for f in /src/csproj-files/*.csproj; do dotnet restore $f; done | ||||
							
								
								
									
										1
									
								
								scripts/restore-packages.cmd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								scripts/restore-packages.cmd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| for %%p in (csproj-files\*.csproj) do dotnet restore %%p | ||||
| @ -4,13 +4,23 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/ApiGateways/ApiGw-Base/ | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -4,13 +4,23 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/ApiGateways/Mobile.Bff.Shopping/aggregator | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build --no-restore -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -4,13 +4,23 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/ApiGateways/Web.Bff.Shopping/aggregator | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build --no-restore -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -80,13 +80,16 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | ||||
|                     _logger.LogWarning(ex, "Could not publish event: {EventId} after {Timeout}s ({ExceptionMessage})", @event.Id, $"{time.TotalSeconds:n1}", ex.Message); | ||||
|                 }); | ||||
| 
 | ||||
|             var eventName = @event.GetType().Name; | ||||
| 
 | ||||
|             _logger.LogTrace("Creating RabbitMQ channel to publish event: {EventId} ({EventName})", @event.Id, eventName); | ||||
| 
 | ||||
|             using (var channel = _persistentConnection.CreateModel()) | ||||
|             { | ||||
|                 var eventName = @event.GetType() | ||||
|                     .Name; | ||||
| 
 | ||||
|                 channel.ExchangeDeclare(exchange: BROKER_NAME, | ||||
|                                     type: "direct"); | ||||
|                 _logger.LogTrace("Declaring RabbitMQ exchange to publish event: {EventId}", @event.Id); | ||||
| 
 | ||||
|                 channel.ExchangeDeclare(exchange: BROKER_NAME, type: "direct"); | ||||
| 
 | ||||
|                 var message = JsonConvert.SerializeObject(@event); | ||||
|                 var body = Encoding.UTF8.GetBytes(message); | ||||
| @ -96,7 +99,10 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | ||||
|                     var properties = channel.CreateBasicProperties(); | ||||
|                     properties.DeliveryMode = 2; // persistent | ||||
| 
 | ||||
|                     channel.BasicPublish(exchange: BROKER_NAME, | ||||
|                     _logger.LogTrace("Publishing event to RabbitMQ: {EventId}", @event.Id); | ||||
| 
 | ||||
|                     channel.BasicPublish( | ||||
|                         exchange: BROKER_NAME, | ||||
|                         routingKey: eventName, | ||||
|                         mandatory: true, | ||||
|                         basicProperties: properties, | ||||
| @ -176,6 +182,8 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | ||||
| 
 | ||||
|         private void StartBasicConsume() | ||||
|         { | ||||
|             _logger.LogTrace("Starting RabbitMQ basic consume"); | ||||
| 
 | ||||
|             if (_consumerChannel != null) | ||||
|             { | ||||
|                 var consumer = new AsyncEventingBasicConsumer(_consumerChannel); | ||||
| @ -225,6 +233,8 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | ||||
|                 _persistentConnection.TryConnect(); | ||||
|             } | ||||
| 
 | ||||
|             _logger.LogTrace("Creating RabbitMQ consumer channel"); | ||||
| 
 | ||||
|             var channel = _persistentConnection.CreateModel(); | ||||
| 
 | ||||
|             channel.ExchangeDeclare(exchange: BROKER_NAME, | ||||
| @ -238,6 +248,8 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | ||||
| 
 | ||||
|             channel.CallbackException += (sender, ea) => | ||||
|             { | ||||
|                 _logger.LogWarning(ea.Exception, "Recreating RabbitMQ consumer channel"); | ||||
| 
 | ||||
|                 _consumerChannel.Dispose(); | ||||
|                 _consumerChannel = CreateConsumerChannel(); | ||||
|                 StartBasicConsume(); | ||||
| @ -248,6 +260,8 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | ||||
| 
 | ||||
|         private async Task ProcessEvent(string eventName, string message) | ||||
|         { | ||||
|             _logger.LogTrace("Processing RabbitMQ event: {EventName}", eventName); | ||||
| 
 | ||||
|             if (_subsManager.HasSubscriptionsForEvent(eventName)) | ||||
|             { | ||||
|                 using (var scope = _autofac.BeginLifetimeScope(AUTOFAC_SCOPE_NAME)) | ||||
| @ -274,6 +288,10 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 _logger.LogWarning("No subscription for RabbitMQ event: {EventName}", eventName); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -12,7 +12,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF | ||||
|     public class IntegrationEventLogEntry | ||||
|     { | ||||
|         private IntegrationEventLogEntry() { } | ||||
|         public IntegrationEventLogEntry(IntegrationEvent @event) | ||||
|         public IntegrationEventLogEntry(IntegrationEvent @event, Guid transactionId) | ||||
|         { | ||||
|             EventId = @event.Id;             | ||||
|             CreationTime = @event.CreationDate; | ||||
| @ -20,7 +20,9 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF | ||||
|             Content = JsonConvert.SerializeObject(@event); | ||||
|             State = EventStateEnum.NotPublished; | ||||
|             TimesSent = 0; | ||||
|             TransactionId = transactionId.ToString(); | ||||
|         } | ||||
| 
 | ||||
|         public Guid EventId { get; private set; } | ||||
|         public string EventTypeName { get; private set; } | ||||
|         [NotMapped] | ||||
| @ -31,6 +33,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF | ||||
|         public int TimesSent { get; set; } | ||||
|         public DateTime CreationTime { get; private set; } | ||||
|         public string Content { get; private set; } | ||||
|         public string TransactionId { get; private set; } | ||||
| 
 | ||||
|         public IntegrationEventLogEntry DeserializeJsonContent(Type type) | ||||
|         { | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | ||||
| using Microsoft.EntityFrameworkCore.Storage; | ||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Data.Common; | ||||
| @ -9,8 +10,8 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF.Servi | ||||
| { | ||||
|     public interface IIntegrationEventLogService | ||||
|     { | ||||
|         Task<IEnumerable<IntegrationEventLogEntry>> RetrieveEventLogsPendingToPublishAsync(); | ||||
|         Task SaveEventAsync(IntegrationEvent @event, DbTransaction transaction); | ||||
|         Task<IEnumerable<IntegrationEventLogEntry>> RetrieveEventLogsPendingToPublishAsync(Guid transactionId); | ||||
|         Task SaveEventAsync(IntegrationEvent @event, IDbContextTransaction transaction); | ||||
|         Task MarkEventAsPublishedAsync(Guid eventId); | ||||
|         Task MarkEventAsInProgressAsync(Guid eventId); | ||||
|         Task MarkEventAsFailedAsync(Guid eventId); | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.EntityFrameworkCore.Diagnostics; | ||||
| using Microsoft.EntityFrameworkCore.Storage; | ||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus; | ||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | ||||
| using Newtonsoft.Json; | ||||
| @ -34,25 +35,24 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF.Servi | ||||
|                 .ToList(); | ||||
|         } | ||||
| 
 | ||||
|         public async Task<IEnumerable<IntegrationEventLogEntry>> RetrieveEventLogsPendingToPublishAsync() | ||||
|         public async Task<IEnumerable<IntegrationEventLogEntry>> RetrieveEventLogsPendingToPublishAsync(Guid transactionId) | ||||
|         { | ||||
|             var tid = transactionId.ToString(); | ||||
| 
 | ||||
|             return await _integrationEventLogContext.IntegrationEventLogs | ||||
|                 .Where(e => e.State == EventStateEnum.NotPublished) | ||||
|                 .Where(e => e.TransactionId == tid && e.State == EventStateEnum.NotPublished) | ||||
|                 .OrderBy(o => o.CreationTime) | ||||
|                 .Select(e => e.DeserializeJsonContent(_eventTypes.Find(t=> t.Name == e.EventTypeShortName))) | ||||
|                 .ToListAsync();               | ||||
|         } | ||||
| 
 | ||||
|         public Task SaveEventAsync(IntegrationEvent @event, DbTransaction transaction) | ||||
|         public Task SaveEventAsync(IntegrationEvent @event, IDbContextTransaction transaction) | ||||
|         { | ||||
|             if (transaction == null) | ||||
|             { | ||||
|                 throw new ArgumentNullException(nameof(transaction), $"A {typeof(DbTransaction).FullName} is required as a pre-requisite to save the event."); | ||||
|             } | ||||
|             if (transaction == null) throw new ArgumentNullException(nameof(transaction)); | ||||
| 
 | ||||
|             var eventLogEntry = new IntegrationEventLogEntry(@event); | ||||
|             var eventLogEntry = new IntegrationEventLogEntry(@event, transaction.TransactionId); | ||||
| 
 | ||||
|             _integrationEventLogContext.Database.UseTransaction(transaction); | ||||
|             _integrationEventLogContext.Database.UseTransaction(transaction.GetDbTransaction()); | ||||
|             _integrationEventLogContext.IntegrationEventLogs.Add(eventLogEntry); | ||||
| 
 | ||||
|             return _integrationEventLogContext.SaveChangesAsync(); | ||||
|  | ||||
| @ -4,19 +4,29 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/Services/Basket/Basket.API | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM build as functionaltest | ||||
| WORKDIR /src/src/Services/Basket/Basket.FunctionalTests | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build as unittest | ||||
| WORKDIR /src/src/Services/Basket/Basket.UnitTests | ||||
| 
 | ||||
| FROM build as functionaltest | ||||
| WORKDIR /src/src/Services/Basket/Basket.FunctionalTests | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -4,10 +4,21 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/Services/Catalog/Catalog.API | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build --no-restore -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build as unittest | ||||
| WORKDIR /src/src/Services/Catalog/Catalog.UnitTests | ||||
| @ -16,7 +27,6 @@ FROM build as functionaltest | ||||
| WORKDIR /src/src/Services/Catalog/Catalog.FunctionalTests | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -0,0 +1,50 @@ | ||||
| // <auto-generated /> | ||||
| using System; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.EntityFrameworkCore.Infrastructure; | ||||
| using Microsoft.EntityFrameworkCore.Metadata; | ||||
| using Microsoft.EntityFrameworkCore.Migrations; | ||||
| using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||
| using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; | ||||
| 
 | ||||
| namespace Catalog.API.Infrastructure.IntegrationEventMigrations | ||||
| { | ||||
|     [DbContext(typeof(IntegrationEventLogContext))] | ||||
|     [Migration("20190507184807_AddTransactionId")] | ||||
|     partial class AddTransactionId | ||||
|     { | ||||
|         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||
|         { | ||||
| #pragma warning disable 612, 618 | ||||
|             modelBuilder | ||||
|                 .HasAnnotation("ProductVersion", "2.2.3-servicing-35854") | ||||
|                 .HasAnnotation("Relational:MaxIdentifierLength", 128) | ||||
|                 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); | ||||
| 
 | ||||
|             modelBuilder.Entity("Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF.IntegrationEventLogEntry", b => | ||||
|                 { | ||||
|                     b.Property<Guid>("EventId") | ||||
|                         .ValueGeneratedOnAdd(); | ||||
| 
 | ||||
|                     b.Property<string>("Content") | ||||
|                         .IsRequired(); | ||||
| 
 | ||||
|                     b.Property<DateTime>("CreationTime"); | ||||
| 
 | ||||
|                     b.Property<string>("EventTypeName") | ||||
|                         .IsRequired(); | ||||
| 
 | ||||
|                     b.Property<int>("State"); | ||||
| 
 | ||||
|                     b.Property<int>("TimesSent"); | ||||
| 
 | ||||
|                     b.Property<string>("TransactionId"); | ||||
| 
 | ||||
|                     b.HasKey("EventId"); | ||||
| 
 | ||||
|                     b.ToTable("IntegrationEventLog"); | ||||
|                 }); | ||||
| #pragma warning restore 612, 618 | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,22 @@ | ||||
| using Microsoft.EntityFrameworkCore.Migrations; | ||||
| 
 | ||||
| namespace Catalog.API.Infrastructure.IntegrationEventMigrations | ||||
| { | ||||
|     public partial class AddTransactionId : Migration | ||||
|     { | ||||
|         protected override void Up(MigrationBuilder migrationBuilder) | ||||
|         { | ||||
|             migrationBuilder.AddColumn<string>( | ||||
|                 name: "TransactionId", | ||||
|                 table: "IntegrationEventLog", | ||||
|                 nullable: true); | ||||
|         } | ||||
| 
 | ||||
|         protected override void Down(MigrationBuilder migrationBuilder) | ||||
|         { | ||||
|             migrationBuilder.DropColumn( | ||||
|                 name: "TransactionId", | ||||
|                 table: "IntegrationEventLog"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,18 @@ | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.EntityFrameworkCore.Design; | ||||
| using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; | ||||
| 
 | ||||
| namespace Catalog.API.Infrastructure.IntegrationEventMigrations | ||||
| { | ||||
|     public class IntegrationEventLogContextDesignTimeFactory : IDesignTimeDbContextFactory<IntegrationEventLogContext> | ||||
|     { | ||||
|         public IntegrationEventLogContext CreateDbContext(string[] args) | ||||
|         { | ||||
|             var optionsBuilder = new DbContextOptionsBuilder<IntegrationEventLogContext>(); | ||||
| 
 | ||||
|             optionsBuilder.UseSqlServer(".", options => options.MigrationsAssembly(GetType().Assembly.GetName().Name)); | ||||
| 
 | ||||
|             return new IntegrationEventLogContext(optionsBuilder.Options); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -1,8 +1,9 @@ | ||||
| using System; | ||||
| // <auto-generated /> | ||||
| using System; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.EntityFrameworkCore.Infrastructure; | ||||
| using Microsoft.EntityFrameworkCore.Metadata; | ||||
| using Microsoft.EntityFrameworkCore.Migrations; | ||||
| using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||
| using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; | ||||
| 
 | ||||
| namespace Catalog.API.Migrations | ||||
| @ -12,8 +13,10 @@ namespace Catalog.API.Migrations | ||||
|     { | ||||
|         protected override void BuildModel(ModelBuilder modelBuilder) | ||||
|         { | ||||
| #pragma warning disable 612, 618 | ||||
|             modelBuilder | ||||
|                 .HasAnnotation("ProductVersion", "1.1.1") | ||||
|                 .HasAnnotation("ProductVersion", "2.2.3-servicing-35854") | ||||
|                 .HasAnnotation("Relational:MaxIdentifierLength", 128) | ||||
|                 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); | ||||
| 
 | ||||
|             modelBuilder.Entity("Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF.IntegrationEventLogEntry", b => | ||||
| @ -33,10 +36,13 @@ namespace Catalog.API.Migrations | ||||
| 
 | ||||
|                     b.Property<int>("TimesSent"); | ||||
| 
 | ||||
|                     b.Property<string>("TransactionId"); | ||||
| 
 | ||||
|                     b.HasKey("EventId"); | ||||
| 
 | ||||
|                     b.ToTable("IntegrationEventLog"); | ||||
|                 }); | ||||
| #pragma warning restore 612, 618 | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -62,7 +62,7 @@ namespace Catalog.API.IntegrationEvents | ||||
|             { | ||||
|                 // Achieving atomicity between original catalog database operation and the IntegrationEventLog thanks to a local transaction | ||||
|                 await _catalogContext.SaveChangesAsync(); | ||||
|                 await _eventLogService.SaveEventAsync(evt, _catalogContext.Database.CurrentTransaction.GetDbTransaction()); | ||||
|                 await _eventLogService.SaveEventAsync(evt, _catalogContext.Database.CurrentTransaction); | ||||
|             }); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -15,6 +15,7 @@ using Microsoft.AspNetCore.Mvc; | ||||
| using Microsoft.eShopOnContainers.Services.Identity.API.Models; | ||||
| using Microsoft.eShopOnContainers.Services.Identity.API.Models.AccountViewModels; | ||||
| using Microsoft.eShopOnContainers.Services.Identity.API.Services; | ||||
| using Microsoft.Extensions.Configuration; | ||||
| using Microsoft.Extensions.Logging; | ||||
| 
 | ||||
| namespace Microsoft.eShopOnContainers.Services.Identity.API.Controllers | ||||
| @ -32,6 +33,7 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Controllers | ||||
|         private readonly IClientStore _clientStore; | ||||
|         private readonly ILogger<AccountController> _logger; | ||||
|         private readonly UserManager<ApplicationUser> _userManager; | ||||
|         private readonly IConfiguration _configuration; | ||||
| 
 | ||||
|         public AccountController( | ||||
| 
 | ||||
| @ -40,13 +42,15 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Controllers | ||||
|             IIdentityServerInteractionService interaction, | ||||
|             IClientStore clientStore, | ||||
|             ILogger<AccountController> logger, | ||||
|             UserManager<ApplicationUser> userManager) | ||||
|             UserManager<ApplicationUser> userManager, | ||||
|             IConfiguration configuration) | ||||
|         { | ||||
|             _loginService = loginService; | ||||
|             _interaction = interaction; | ||||
|             _clientStore = clientStore; | ||||
|             _logger = logger; | ||||
|             _userManager = userManager; | ||||
|             _configuration = configuration; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
| @ -81,20 +85,21 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API.Controllers | ||||
| 
 | ||||
|                 if (await _loginService.ValidateCredentials(user, model.Password)) | ||||
|                 { | ||||
|                     var tokenLifetime = _configuration.GetValue("TokenLifetimeMinutes", 120); | ||||
| 
 | ||||
|                     var props = new AuthenticationProperties | ||||
|                     { | ||||
|                         ExpiresUtc = DateTimeOffset.UtcNow.AddHours(2), | ||||
|                         ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(tokenLifetime), | ||||
|                         AllowRefresh = true, | ||||
|                         RedirectUri = model.ReturnUrl | ||||
|                     }; | ||||
| 
 | ||||
|                     if (model.RememberMe) | ||||
|                     { | ||||
|                         props = new AuthenticationProperties | ||||
|                         { | ||||
|                             IsPersistent = true, | ||||
|                             ExpiresUtc = DateTimeOffset.UtcNow.AddYears(10) | ||||
|                         }; | ||||
|                         var permanentTokenLifetime = _configuration.GetValue("PermanentTokenLifetimeDays", 365); | ||||
| 
 | ||||
|                         props.ExpiresUtc = DateTimeOffset.UtcNow.AddDays(permanentTokenLifetime); | ||||
|                         props.IsPersistent = true; | ||||
|                     }; | ||||
| 
 | ||||
|                     await _loginService.SignInAsync(user, props); | ||||
|  | ||||
| @ -4,13 +4,23 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/Services/Identity/Identity.API | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build --no-restore -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -25,5 +25,7 @@ | ||||
|     "Name": "eshop", | ||||
|     "ClientId": "your-clien-id", | ||||
|     "ClientSecret": "your-client-secret" | ||||
|   } | ||||
|   }, | ||||
|   "TokenLifetimeMinutes": 120, | ||||
|   "PermanentTokenLifetimeDays": 365 | ||||
| } | ||||
|  | ||||
| @ -4,16 +4,26 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/Services/Location/Locations.API | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build --no-restore -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build as functionaltest | ||||
| WORKDIR /src/src/Services/Location/Locations.FunctionalTests | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -4,16 +4,26 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/Services/Marketing/Marketing.API | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build --no-restore -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build as functionaltest | ||||
| WORKDIR /src/src/Services/Marketing/Marketing.FunctionalTests | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -19,7 +19,7 @@ | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.App" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.2.0" /> | ||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> | ||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.2.0" /> | ||||
|     <PackageReference Include="xunit" Version="2.4.1" /> | ||||
|     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> | ||||
| @ -30,7 +30,6 @@ | ||||
|   </ItemGroup> | ||||
| 
 | ||||
|   <ItemGroup> | ||||
|     <ProjectReference Include="..\..\..\Web\WebMVC\WebMVC.csproj" /> | ||||
|     <ProjectReference Include="..\Marketing.API\Marketing.API.csproj" /> | ||||
|   </ItemGroup> | ||||
| 
 | ||||
|  | ||||
| @ -28,7 +28,7 @@ namespace Marketing.FunctionalTests | ||||
|         [Fact] | ||||
|         public async Task Post_add_new_user_location_rule_and_response_ok_status_code() | ||||
|         { | ||||
|             var campaignId = 81; | ||||
|             var campaignId = 2; | ||||
| 
 | ||||
|             using (var server = CreateServer()) | ||||
|             { | ||||
| @ -44,7 +44,7 @@ namespace Marketing.FunctionalTests | ||||
|         [Fact] | ||||
|         public async Task Delete_delete_user_location_role_and_response_not_content_status_code() | ||||
|         { | ||||
|             var campaignId = 81; | ||||
|             var campaignId = 2; | ||||
| 
 | ||||
|             using (var server = CreateServer()) | ||||
|             { | ||||
|  | ||||
| @ -42,6 +42,8 @@ namespace Ordering.API.Application.Behaviors | ||||
| 
 | ||||
|                 await strategy.ExecuteAsync(async () => | ||||
|                 { | ||||
|                     Guid transactionId; | ||||
| 
 | ||||
|                     using (var transaction = await _dbContext.BeginTransactionAsync()) | ||||
|                     using (LogContext.PushProperty("TransactionContext", transaction.TransactionId)) | ||||
|                     { | ||||
| @ -52,9 +54,11 @@ namespace Ordering.API.Application.Behaviors | ||||
|                         _logger.LogInformation("----- Commit transaction {TransactionId} for {CommandName}", transaction.TransactionId, typeName); | ||||
| 
 | ||||
|                         await _dbContext.CommitTransactionAsync(transaction); | ||||
| 
 | ||||
|                         transactionId = transaction.TransactionId; | ||||
|                     } | ||||
| 
 | ||||
|                     await _orderingIntegrationEventService.PublishEventsThroughEventBusAsync(); | ||||
|                     await _orderingIntegrationEventService.PublishEventsThroughEventBusAsync(transactionId); | ||||
|                 }); | ||||
| 
 | ||||
|                 return response; | ||||
|  | ||||
| @ -33,7 +33,7 @@ namespace Ordering.API.Application.Commands | ||||
|             } | ||||
| 
 | ||||
|             orderToUpdate.SetCancelledStatus(); | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(); | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -58,7 +58,7 @@ | ||||
|             _orderRepository.Add(order); | ||||
| 
 | ||||
|             return await _orderRepository.UnitOfWork | ||||
|                 .SaveEntitiesAsync(); | ||||
|                 .SaveEntitiesAsync(cancellationToken); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -96,7 +96,7 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands | ||||
|                         command); | ||||
| 
 | ||||
|                     // Send the embeded business command to mediator so it runs its related CommandHandler  | ||||
|                     var result = await _mediator.Send(command); | ||||
|                     var result = await _mediator.Send(command, cancellationToken); | ||||
| 
 | ||||
|                     _logger.LogInformation( | ||||
|                         "----- Command result: {@Result} - {CommandName} - {IdProperty}: {CommandId} ({@Command})", | ||||
|  | ||||
| @ -33,7 +33,7 @@ namespace Ordering.API.Application.Commands | ||||
|             } | ||||
| 
 | ||||
|             orderToUpdate.SetAwaitingValidationStatus(); | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(); | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -27,7 +27,7 @@ namespace Ordering.API.Application.Commands | ||||
|         public async Task<bool> Handle(SetPaidOrderStatusCommand command, CancellationToken cancellationToken) | ||||
|         { | ||||
|             // Simulate a work time for validating the payment | ||||
|             await Task.Delay(10000); | ||||
|             await Task.Delay(10000, cancellationToken); | ||||
| 
 | ||||
|             var orderToUpdate = await _orderRepository.GetAsync(command.OrderNumber); | ||||
|             if(orderToUpdate == null) | ||||
| @ -36,7 +36,7 @@ namespace Ordering.API.Application.Commands | ||||
|             } | ||||
| 
 | ||||
|             orderToUpdate.SetPaidStatus(); | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(); | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -27,7 +27,7 @@ namespace Ordering.API.Application.Commands | ||||
|         public async Task<bool> Handle(SetStockConfirmedOrderStatusCommand command, CancellationToken cancellationToken) | ||||
|         { | ||||
|             // Simulate a work time for confirming the stock | ||||
|             await Task.Delay(10000); | ||||
|             await Task.Delay(10000, cancellationToken); | ||||
| 
 | ||||
|             var orderToUpdate = await _orderRepository.GetAsync(command.OrderNumber); | ||||
|             if(orderToUpdate == null) | ||||
| @ -36,7 +36,7 @@ namespace Ordering.API.Application.Commands | ||||
|             } | ||||
| 
 | ||||
|             orderToUpdate.SetStockConfirmedStatus(); | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(); | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -27,7 +27,7 @@ namespace Ordering.API.Application.Commands | ||||
|         public async Task<bool> Handle(SetStockRejectedOrderStatusCommand command, CancellationToken cancellationToken) | ||||
|         { | ||||
|             // Simulate a work time for rejecting the stock | ||||
|             await Task.Delay(10000); | ||||
|             await Task.Delay(10000, cancellationToken); | ||||
| 
 | ||||
|             var orderToUpdate = await _orderRepository.GetAsync(command.OrderNumber); | ||||
|             if(orderToUpdate == null) | ||||
| @ -37,7 +37,7 @@ namespace Ordering.API.Application.Commands | ||||
| 
 | ||||
|             orderToUpdate.SetCancelledStatusWhenStockIsRejected(command.OrderStockItems); | ||||
| 
 | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(); | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -33,7 +33,7 @@ namespace Ordering.API.Application.Commands | ||||
|             } | ||||
| 
 | ||||
|             orderToUpdate.SetShippedStatus(); | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(); | ||||
|             return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -56,7 +56,7 @@ namespace Ordering.API.Application.DomainEventHandlers.OrderStartedEvent | ||||
|                 _buyerRepository.Add(buyer); | ||||
| 
 | ||||
|             await _buyerRepository.UnitOfWork | ||||
|                 .SaveEntitiesAsync(); | ||||
|                 .SaveEntitiesAsync(cancellationToken); | ||||
| 
 | ||||
|             var orderStatusChangedTosubmittedIntegrationEvent = new OrderStatusChangedToSubmittedIntegrationEvent(orderStartedEvent.Order.Id, orderStartedEvent.Order.OrderStatus.Name, buyer.Name); | ||||
|             await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedTosubmittedIntegrationEvent); | ||||
|  | ||||
| @ -1,11 +1,12 @@ | ||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | ||||
| using System; | ||||
| using System.Threading.Tasks; | ||||
| 
 | ||||
| namespace Ordering.API.Application.IntegrationEvents | ||||
| { | ||||
|     public interface IOrderingIntegrationEventService | ||||
|     { | ||||
|         Task PublishEventsThroughEventBusAsync(); | ||||
|         Task PublishEventsThroughEventBusAsync(Guid transactionId); | ||||
|         Task AddAndSaveEventAsync(IntegrationEvent evt); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -39,11 +39,11 @@ namespace Ordering.API.Application.IntegrationEvents | ||||
|             _logger = logger ?? throw new ArgumentNullException(nameof(logger)); | ||||
|         } | ||||
| 
 | ||||
|         public async Task PublishEventsThroughEventBusAsync() | ||||
|         public async Task PublishEventsThroughEventBusAsync(Guid transactionId) | ||||
|         { | ||||
|             var pendindLogEvents = await _eventLogService.RetrieveEventLogsPendingToPublishAsync(); | ||||
|             var pendingLogEvents = await _eventLogService.RetrieveEventLogsPendingToPublishAsync(transactionId); | ||||
| 
 | ||||
|             foreach (var logEvt in pendindLogEvents) | ||||
|             foreach (var logEvt in pendingLogEvents) | ||||
|             { | ||||
|                 _logger.LogInformation("----- Publishing integration event: {IntegrationEventId} from {AppName} - ({@IntegrationEvent})", logEvt.EventId, Program.AppName, logEvt.IntegrationEvent); | ||||
| 
 | ||||
| @ -66,7 +66,7 @@ namespace Ordering.API.Application.IntegrationEvents | ||||
|         { | ||||
|             _logger.LogInformation("----- Enqueuing integration event {IntegrationEventId} to repository ({@IntegrationEvent})", evt.Id, evt); | ||||
| 
 | ||||
|             await _eventLogService.SaveEventAsync(evt, _orderingContext.GetCurrentTransaction.GetDbTransaction()); | ||||
|             await _eventLogService.SaveEventAsync(evt, _orderingContext.GetCurrentTransaction()); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -4,19 +4,29 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/Services/Ordering/Ordering.API | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM build as functionaltest | ||||
| WORKDIR /src/src/Services/Ordering/Ordering.FunctionalTests | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build as unittest | ||||
| WORKDIR /src/src/Services/Ordering/Ordering.UnitTests | ||||
| 
 | ||||
| FROM build as functionaltest | ||||
| WORKDIR /src/src/Services/Ordering/Ordering.FunctionalTests | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -0,0 +1,50 @@ | ||||
| // <auto-generated /> | ||||
| using System; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.EntityFrameworkCore.Infrastructure; | ||||
| using Microsoft.EntityFrameworkCore.Metadata; | ||||
| using Microsoft.EntityFrameworkCore.Migrations; | ||||
| using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||
| using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; | ||||
| 
 | ||||
| namespace Ordering.API.Infrastructure.IntegrationEventMigrations | ||||
| { | ||||
|     [DbContext(typeof(IntegrationEventLogContext))] | ||||
|     [Migration("20190507185219_AddTransactionId")] | ||||
|     partial class AddTransactionId | ||||
|     { | ||||
|         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||
|         { | ||||
| #pragma warning disable 612, 618 | ||||
|             modelBuilder | ||||
|                 .HasAnnotation("ProductVersion", "2.2.3-servicing-35854") | ||||
|                 .HasAnnotation("Relational:MaxIdentifierLength", 128) | ||||
|                 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); | ||||
| 
 | ||||
|             modelBuilder.Entity("Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF.IntegrationEventLogEntry", b => | ||||
|                 { | ||||
|                     b.Property<Guid>("EventId") | ||||
|                         .ValueGeneratedOnAdd(); | ||||
| 
 | ||||
|                     b.Property<string>("Content") | ||||
|                         .IsRequired(); | ||||
| 
 | ||||
|                     b.Property<DateTime>("CreationTime"); | ||||
| 
 | ||||
|                     b.Property<string>("EventTypeName") | ||||
|                         .IsRequired(); | ||||
| 
 | ||||
|                     b.Property<int>("State"); | ||||
| 
 | ||||
|                     b.Property<int>("TimesSent"); | ||||
| 
 | ||||
|                     b.Property<string>("TransactionId"); | ||||
| 
 | ||||
|                     b.HasKey("EventId"); | ||||
| 
 | ||||
|                     b.ToTable("IntegrationEventLog"); | ||||
|                 }); | ||||
| #pragma warning restore 612, 618 | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,22 @@ | ||||
| using Microsoft.EntityFrameworkCore.Migrations; | ||||
| 
 | ||||
| namespace Ordering.API.Infrastructure.IntegrationEventMigrations | ||||
| { | ||||
|     public partial class AddTransactionId : Migration | ||||
|     { | ||||
|         protected override void Up(MigrationBuilder migrationBuilder) | ||||
|         { | ||||
|             migrationBuilder.AddColumn<string>( | ||||
|                 name: "TransactionId", | ||||
|                 table: "IntegrationEventLog", | ||||
|                 nullable: true); | ||||
|         } | ||||
| 
 | ||||
|         protected override void Down(MigrationBuilder migrationBuilder) | ||||
|         { | ||||
|             migrationBuilder.DropColumn( | ||||
|                 name: "TransactionId", | ||||
|                 table: "IntegrationEventLog"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,18 @@ | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.EntityFrameworkCore.Design; | ||||
| using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; | ||||
| 
 | ||||
| namespace Catalog.API.Infrastructure.IntegrationEventMigrations | ||||
| { | ||||
|     public class IntegrationEventLogContextDesignTimeFactory : IDesignTimeDbContextFactory<IntegrationEventLogContext> | ||||
|     { | ||||
|         public IntegrationEventLogContext CreateDbContext(string[] args) | ||||
|         { | ||||
|             var optionsBuilder = new DbContextOptionsBuilder<IntegrationEventLogContext>(); | ||||
| 
 | ||||
|             optionsBuilder.UseSqlServer(".", options => options.MigrationsAssembly(GetType().Assembly.GetName().Name)); | ||||
| 
 | ||||
|             return new IntegrationEventLogContext(optionsBuilder.Options); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -1,8 +1,9 @@ | ||||
| using System; | ||||
| // <auto-generated /> | ||||
| using System; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.EntityFrameworkCore.Infrastructure; | ||||
| using Microsoft.EntityFrameworkCore.Metadata; | ||||
| using Microsoft.EntityFrameworkCore.Migrations; | ||||
| using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||
| using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; | ||||
| 
 | ||||
| namespace Ordering.API.Infrastructure.IntegrationEventMigrations | ||||
| @ -12,8 +13,10 @@ namespace Ordering.API.Infrastructure.IntegrationEventMigrations | ||||
|     { | ||||
|         protected override void BuildModel(ModelBuilder modelBuilder) | ||||
|         { | ||||
| #pragma warning disable 612, 618 | ||||
|             modelBuilder | ||||
|                 .HasAnnotation("ProductVersion", "1.1.1") | ||||
|                 .HasAnnotation("ProductVersion", "2.2.3-servicing-35854") | ||||
|                 .HasAnnotation("Relational:MaxIdentifierLength", 128) | ||||
|                 .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); | ||||
| 
 | ||||
|             modelBuilder.Entity("Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF.IntegrationEventLogEntry", b => | ||||
| @ -33,10 +36,13 @@ namespace Ordering.API.Infrastructure.IntegrationEventMigrations | ||||
| 
 | ||||
|                     b.Property<int>("TimesSent"); | ||||
| 
 | ||||
|                     b.Property<string>("TransactionId"); | ||||
| 
 | ||||
|                     b.HasKey("EventId"); | ||||
| 
 | ||||
|                     b.ToTable("IntegrationEventLog"); | ||||
|                 }); | ||||
| #pragma warning restore 612, 618 | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -4,13 +4,23 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/Services/Ordering/Ordering.BackgroundTasks | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build --no-restore -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore  -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -29,7 +29,7 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Infrastructure | ||||
| 
 | ||||
|         private OrderingContext(DbContextOptions<OrderingContext> options) : base(options) { } | ||||
| 
 | ||||
|         public IDbContextTransaction GetCurrentTransaction => _currentTransaction; | ||||
|         public IDbContextTransaction GetCurrentTransaction() => _currentTransaction; | ||||
| 
 | ||||
|         public bool HasActiveTransaction => _currentTransaction != null; | ||||
| 
 | ||||
| @ -64,7 +64,7 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Infrastructure | ||||
| 
 | ||||
|             // After executing this line all the changes (from the Command Handler and Domain Event Handlers)  | ||||
|             // performed through the DbContext will be committed | ||||
|             var result = await base.SaveChangesAsync(); | ||||
|             var result = await base.SaveChangesAsync(cancellationToken); | ||||
| 
 | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
| @ -4,13 +4,23 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/Services/Ordering/Ordering.SignalrHub | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build  --no-restore  Ordering.SignalrHub.csproj -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish  --no-restore  Ordering.SignalrHub.csproj -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -4,13 +4,23 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/Services/Payment/Payment.API | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build --no-restore -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -23,6 +23,8 @@ | ||||
|             _eventBus = eventBus; | ||||
|             _settings = settings.Value; | ||||
|             _logger = logger ?? throw new System.ArgumentNullException(nameof(logger)); | ||||
| 
 | ||||
|             _logger.LogTrace("PaymentSettings: {@PaymentSettings}", _settings); | ||||
|         } | ||||
| 
 | ||||
|         public async Task Handle(OrderStatusChangedToStockConfirmedIntegrationEvent @event) | ||||
|  | ||||
| @ -4,14 +4,23 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| COPY ["src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj", "src/Services/Webhooks/Webhooks.API/"] | ||||
| RUN dotnet restore "src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj" | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR "/src/src/Services/Webhooks/Webhooks.API" | ||||
| RUN dotnet build "Webhooks.API.csproj" -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish "Webhooks.API.csproj" -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -6,19 +6,29 @@ using System.Threading.Tasks; | ||||
| using Microsoft.AspNetCore.Authentication; | ||||
| using Microsoft.AspNetCore.Authentication.OpenIdConnect; | ||||
| using Microsoft.AspNetCore.Authentication.Cookies; | ||||
| using Microsoft.Extensions.Logging; | ||||
| using System; | ||||
| 
 | ||||
| namespace Microsoft.eShopOnContainers.WebMVC.Controllers | ||||
| { | ||||
|     [Authorize] | ||||
|     public class AccountController : Controller | ||||
|     { | ||||
|         private readonly ILogger<AccountController> _logger; | ||||
| 
 | ||||
|         public AccountController(ILogger<AccountController> logger) | ||||
|         { | ||||
|             _logger = logger ?? throw new ArgumentNullException(nameof(logger)); | ||||
|         } | ||||
| 
 | ||||
|         [Authorize] | ||||
|         public async Task<IActionResult> SignIn(string returnUrl) | ||||
|         { | ||||
|             var user = User as ClaimsPrincipal; | ||||
| 
 | ||||
|             var token = await HttpContext.GetTokenAsync("access_token"); | ||||
| 
 | ||||
|             _logger.LogInformation("----- User {@User} authenticated into {AppName}", user, Program.AppName); | ||||
| 
 | ||||
|             if (token != null) | ||||
|             { | ||||
|                 ViewData["access_token"] = token; | ||||
|  | ||||
| @ -4,12 +4,23 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/Web/WebMVC | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -238,6 +238,7 @@ namespace Microsoft.eShopOnContainers.WebMVC | ||||
|             var useLoadTest = configuration.GetValue<bool>("UseLoadTest"); | ||||
|             var identityUrl = configuration.GetValue<string>("IdentityUrl"); | ||||
|             var callBackUrl = configuration.GetValue<string>("CallBackUrl"); | ||||
|             var sessionCookieLifetime = configuration.GetValue("SessionCookieLifetimeMinutes", 60); | ||||
| 
 | ||||
|             // Add Authentication services           | ||||
| 
 | ||||
| @ -246,7 +247,7 @@ namespace Microsoft.eShopOnContainers.WebMVC | ||||
|                 options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; | ||||
|                 options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; | ||||
|             }) | ||||
|             .AddCookie(setup=>setup.ExpireTimeSpan = TimeSpan.FromHours(2)) | ||||
|             .AddCookie(setup=>setup.ExpireTimeSpan = TimeSpan.FromMinutes(sessionCookieLifetime)) | ||||
|             .AddOpenIdConnect(options => | ||||
|             { | ||||
|                 options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; | ||||
|  | ||||
| @ -1,6 +1,8 @@ | ||||
| @model CampaignItem | ||||
| 
 | ||||
| @{ | ||||
|     ViewData["Title"] = "Campaign details"; | ||||
|     @model CampaignItem | ||||
| 
 | ||||
|     var headerList= new List<Header>() { | ||||
|         new Header() { Controller = "Catalog", Text = "Back to catalog" }, | ||||
|         new Header() { Controller = "Campaigns", Text = "Back to Campaigns" } }; | ||||
|  | ||||
| @ -1,6 +1,8 @@ | ||||
| @model WebMVC.ViewModels.CampaignViewModel | ||||
| 
 | ||||
| @{ | ||||
|     ViewData["Title"] = "Campaigns"; | ||||
|     @model WebMVC.ViewModels.CampaignViewModel | ||||
| 
 | ||||
|     var headerList= new List<Header>() { | ||||
|         new Header() { Controller = "Catalog", Text = "Back to catalog" } }; | ||||
| } | ||||
| @ -11,7 +13,7 @@ | ||||
|     </div> | ||||
| </section> | ||||
| 
 | ||||
| <partial name="_Header" model="headerList"/> | ||||
| <partial name="_Header" model="headerList" /> | ||||
| 
 | ||||
| <div class="container"> | ||||
|     <br /> | ||||
| @ -59,7 +61,7 @@ | ||||
|         @foreach (var catalogItem in Model.CampaignItems) | ||||
|                 { | ||||
|         <div class="esh-campaigns-item col-md-4"> | ||||
|                         <partial name="_campaign" model="catalogItem"/> | ||||
|             <partial name="_campaign" model="catalogItem" /> | ||||
|         </div> | ||||
|                 } | ||||
|     </div> | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| @{ | ||||
| @model Microsoft.eShopOnContainers.WebMVC.ViewModels.CatalogViewModels.IndexViewModel | ||||
| 
 | ||||
| @{ | ||||
|     ViewData["Title"] = "Catalog"; | ||||
|     @model Microsoft.eShopOnContainers.WebMVC.ViewModels.CatalogViewModels.IndexViewModel | ||||
| } | ||||
| <section class="esh-catalog-hero"> | ||||
|     <div class="container"> | ||||
| @ -41,12 +42,12 @@ | ||||
|         @foreach (var catalogItem in Model.CatalogItems) | ||||
|             { | ||||
|         <div class="esh-catalog-item col-md-4"> | ||||
|                     <partial name="_product" model="catalogItem"/> | ||||
|             <partial name="_product" model="catalogItem" /> | ||||
|         </div> | ||||
|             } | ||||
|     </div> | ||||
| 
 | ||||
|         <partial name="_pagination" for="PaginationInfo"/> | ||||
|     <partial name="_pagination" for="PaginationInfo" /> | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|  | ||||
| @ -74,11 +74,11 @@ | ||||
|         <script src="~/js/site.js" asp-append-version="true"></script> | ||||
|     </environment> | ||||
|     <environment names="Staging,Production"> | ||||
|         <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js" | ||||
|         <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" | ||||
|                 asp-fallback-src="~/lib/jquery/jquery.min.js" | ||||
|                 asp-fallback-test="window.jQuery"> | ||||
|         </script> | ||||
|         <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js" | ||||
|         <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js" | ||||
|                 asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js" | ||||
|                 asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"> | ||||
|         </script> | ||||
|  | ||||
| @ -27,5 +27,6 @@ | ||||
|     "InstrumentationKey": "" | ||||
|   }, | ||||
|   "HttpClientRetryCount": 8, | ||||
|   "HttpClientExceptionsAllowedBeforeBreaking": 7 | ||||
|   "HttpClientExceptionsAllowedBeforeBreaking": 7, | ||||
|   "SessionCookieLifetimeMinutes": 60 | ||||
| } | ||||
| @ -3,7 +3,7 @@ | ||||
|   "defaultProvider": "cdnjs", | ||||
|   "libraries": [ | ||||
|     { | ||||
|       "library": "jquery@3.3.1", | ||||
|       "library": "jquery@3.4.1", | ||||
|       "destination": "wwwroot/lib/jquery/" | ||||
|     }, | ||||
|     { | ||||
|  | ||||
| @ -3,23 +3,33 @@ FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base | ||||
| WORKDIR /app | ||||
| EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS dotnet-build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| FROM ${NODE_IMAGE} as node-build | ||||
| WORKDIR /web | ||||
| COPY src/Web/WebSPA . | ||||
| RUN npm install | ||||
| RUN npm run build:prod | ||||
| 
 | ||||
| FROM dotnet-build as publish | ||||
| WORKDIR /src/src/Web/WebSPA/wwwroot | ||||
| COPY --from=node-build /web/wwwroot . | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| COPY --from=node-build /web/wwwroot /src/src/Web/WebSPA/wwwroot/ | ||||
| WORKDIR /src/src/Web/WebSPA | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
| COPY --from=publish /app . | ||||
|  | ||||
							
								
								
									
										18
									
								
								src/Web/WebSPA/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										18
									
								
								src/Web/WebSPA/package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -2371,7 +2371,7 @@ | ||||
|     "arr-flatten": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", | ||||
|       "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" | ||||
|       "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" | ||||
|     }, | ||||
|     "arr-union": { | ||||
|       "version": "3.1.0", | ||||
| @ -2835,7 +2835,7 @@ | ||||
|     "bn.js": { | ||||
|       "version": "4.11.8", | ||||
|       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", | ||||
|       "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", | ||||
|       "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "body-parser": { | ||||
| @ -3344,7 +3344,7 @@ | ||||
|     "cipher-base": { | ||||
|       "version": "1.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", | ||||
|       "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", | ||||
|       "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "inherits": "^2.0.1", | ||||
| @ -5864,7 +5864,7 @@ | ||||
|     "globals": { | ||||
|       "version": "9.18.0", | ||||
|       "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", | ||||
|       "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", | ||||
|       "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "globby": { | ||||
| @ -6730,7 +6730,7 @@ | ||||
|     "is-plain-object": { | ||||
|       "version": "2.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", | ||||
|       "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", | ||||
|       "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", | ||||
|       "requires": { | ||||
|         "isobject": "^3.0.1" | ||||
|       } | ||||
| @ -6941,9 +6941,9 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "jquery": { | ||||
|       "version": "3.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", | ||||
|       "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" | ||||
|       "version": "3.4.1", | ||||
|       "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", | ||||
|       "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" | ||||
|     }, | ||||
|     "js-base64": { | ||||
|       "version": "2.5.1", | ||||
| @ -7786,7 +7786,7 @@ | ||||
|     "minimatch": { | ||||
|       "version": "3.0.4", | ||||
|       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", | ||||
|       "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", | ||||
|       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", | ||||
|       "requires": { | ||||
|         "brace-expansion": "^1.1.7" | ||||
|       } | ||||
|  | ||||
| @ -44,7 +44,7 @@ | ||||
|     "file-loader": "2.0.0", | ||||
|     "font-awesome": "4.7.0", | ||||
|     "isomorphic-fetch": "2.2.1", | ||||
|     "jquery": "^3.3.1", | ||||
|     "jquery": "3.4.1", | ||||
|     "ngx-toastr": "^9.0.2", | ||||
|     "normalize.css": "8.0.0", | ||||
|     "popper.js": "^1.14.4", | ||||
|  | ||||
| @ -4,13 +4,23 @@ EXPOSE 80 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR /src/src/Web/WebStatus | ||||
| RUN dotnet restore -nowarn:msb3202,nu1503 | ||||
| RUN dotnet build --no-restore -c Release -o /app | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish --no-restore -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
							
								
								
									
										37
									
								
								src/Web/WebStatus/Views/Shared/Error.cshtml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/Web/WebStatus/Views/Shared/Error.cshtml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | ||||
|  | ||||
| @{ | ||||
|     Layout = null; | ||||
| } | ||||
| 
 | ||||
| <!DOCTYPE html> | ||||
| 
 | ||||
| <html> | ||||
| <head> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
|     <title>Error</title> | ||||
|     <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" /> | ||||
| 
 | ||||
|     <environment names="Development"> | ||||
|         <link rel="stylesheet" href="~/css/site.min.css" type="text/css" /> | ||||
|     </environment> | ||||
|     <environment names="Staging,Production"> | ||||
|         <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" /> | ||||
|     </environment> | ||||
| 
 | ||||
| </head> | ||||
| <body> | ||||
|     <div class="container"> | ||||
|         <h1 class="text-danger">Error.</h1> | ||||
|         <h2 class="text-danger">An error occurred while processing your request.</h2> | ||||
| 
 | ||||
|         <h3>Development Mode</h3> | ||||
| 
 | ||||
|         <p> | ||||
|             Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred. | ||||
|         </p> | ||||
|         <p> | ||||
|             <strong>Development environment should not be enabled in deployed applications</strong>, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>, and restarting the application. | ||||
|         </p> | ||||
|     </div> | ||||
| </body> | ||||
| </html> | ||||
| @ -4,12 +4,6 @@ | ||||
|     <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> | ||||
|     <DockerComposeProjectPath>..\..\..\docker-compose.dcproj</DockerComposeProjectPath> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <Compile Remove="Views\**" /> | ||||
|     <Content Remove="Views\**" /> | ||||
|     <EmbeddedResource Remove="Views\**" /> | ||||
|     <None Remove="Views\**" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI" Version="2.2.22" /> | ||||
|     <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="2.2.3" /> | ||||
|  | ||||
| @ -1,5 +1,75 @@ | ||||
| { | ||||
|   "HealthChecks-UI": { | ||||
|     "HealthChecks": [ | ||||
|       { | ||||
|         "Name": "Ordering HTTP Check", | ||||
|         "Uri": "http://localhost:5102/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Ordering HTTP Background Check", | ||||
|         "Uri": "http://localhost:5111/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Basket HTTP Check", | ||||
|         "Uri": "http://localhost:5103/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Catalog HTTP Check", | ||||
|         "Uri": "http://localhost:5101/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Identity HTTP Check", | ||||
|         "Uri": "http://localhost:5105/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Marketing HTTP Check", | ||||
|         "Uri": "http://localhost:5110/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Locations HTTP Check", | ||||
|         "Uri": "http://localhost:5109/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Payments HTTP Check", | ||||
|         "Uri": "http://localhost:5108/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "WebMVC HTTP Check", | ||||
|         "Uri": "http://localhost:5100/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "WebSPA HTTP Check", | ||||
|         "Uri": "http://localhost:5104/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "SignalR HTTP Check", | ||||
|         "Uri": "http://localhost:5112/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Mobile Shopping API GW HTTP Check", | ||||
|         "Uri": "http://localhost:5200/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Mobile Marketing API GW HTTP Check", | ||||
|         "Uri": "http://localhost:5201/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Web Shopping API GW HTTP Check", | ||||
|         "Uri": "http://localhost:5202/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Web Marketing API GW HTTP Check", | ||||
|         "Uri": "http://localhost:5203/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Mobile Shopping Aggregator HTTP Check", | ||||
|         "Uri": "http://localhost:5120/hc" | ||||
|       }, | ||||
|       { | ||||
|         "Name": "Web Shopping Aggregator HTTP Check", | ||||
|         "Uri": "http://localhost:5121/hc" | ||||
|       } | ||||
|     ], | ||||
|     "EvaluationTimeOnSeconds": 10, | ||||
|     "MinimumSecondsBetweenFailureNotifications": 60 | ||||
|   }, | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
|   "defaultProvider": "cdnjs", | ||||
|   "libraries": [ | ||||
|     { | ||||
|       "library": "jquery@3.3.1", | ||||
|       "library": "jquery@3.4.1", | ||||
|       "destination": "wwwroot/lib/jquery/" | ||||
|     }, | ||||
|     { | ||||
|  | ||||
| @ -5,14 +5,23 @@ EXPOSE 443 | ||||
| 
 | ||||
| FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build | ||||
| WORKDIR /src | ||||
| COPY ["src/Web/WebhookClient/WebhookClient.csproj", "src/Web/WebhookClient/"] | ||||
| RUN dotnet restore "src/Web/WebhookClient/WebhookClient.csproj" | ||||
| 
 | ||||
| COPY scripts scripts/ | ||||
| 
 | ||||
| COPY src/ApiGateways/*/*.csproj /src/csproj-files/ | ||||
| COPY src/ApiGateways/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/BuildingBlocks/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Services/*/*/*.csproj /src/csproj-files/ | ||||
| COPY src/Web/*/*.csproj /src/csproj-files/ | ||||
| 
 | ||||
| ARG RUN=pwd | ||||
| RUN ${RUN} | ||||
| 
 | ||||
| COPY . . | ||||
| WORKDIR "/src/src/Web/WebhookClient" | ||||
| RUN dotnet build "WebhookClient.csproj" -c Release -o /app | ||||
| WORKDIR /src/src/Web/WebhookClient | ||||
| RUN dotnet publish -c Release -o /app | ||||
| 
 | ||||
| FROM build AS publish | ||||
| RUN dotnet publish "WebhookClient.csproj" -c Release -o /app | ||||
| 
 | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
|  | ||||
| @ -59,11 +59,11 @@ | ||||
|         <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script> | ||||
|     </environment> | ||||
|     <environment exclude="Development"> | ||||
|         <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" | ||||
|         <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" | ||||
|                 asp-fallback-src="~/lib/jquery/dist/jquery.min.js" | ||||
|                 asp-fallback-test="window.jQuery" | ||||
|                 crossorigin="anonymous" | ||||
|                 integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="> | ||||
|                 integrity="sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw=="> | ||||
|         </script> | ||||
|         <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.bundle.min.js" | ||||
|                 asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js" | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /*! | ||||
|  * jQuery JavaScript Library v3.3.1 | ||||
|  * jQuery JavaScript Library v3.4.1 | ||||
|  * https://jquery.com/
 | ||||
|  * | ||||
|  * Includes Sizzle.js | ||||
| @ -9,7 +9,7 @@ | ||||
|  * Released under the MIT license | ||||
|  * https://jquery.org/license
 | ||||
|  * | ||||
|  * Date: 2018-01-20T17:24Z | ||||
|  * Date: 2019-05-01T21:04Z | ||||
|  */ | ||||
| ( function( global, factory ) { | ||||
| 
 | ||||
| @ -91,20 +91,33 @@ var isWindow = function isWindow( obj ) { | ||||
| 	var preservedScriptAttributes = { | ||||
| 		type: true, | ||||
| 		src: true, | ||||
| 		nonce: true, | ||||
| 		noModule: true | ||||
| 	}; | ||||
| 
 | ||||
| 	function DOMEval( code, doc, node ) { | ||||
| 	function DOMEval( code, node, doc ) { | ||||
| 		doc = doc || document; | ||||
| 
 | ||||
| 		var i, | ||||
| 		var i, val, | ||||
| 			script = doc.createElement( "script" ); | ||||
| 
 | ||||
| 		script.text = code; | ||||
| 		if ( node ) { | ||||
| 			for ( i in preservedScriptAttributes ) { | ||||
| 				if ( node[ i ] ) { | ||||
| 					script[ i ] = node[ i ]; | ||||
| 
 | ||||
| 				// Support: Firefox 64+, Edge 18+
 | ||||
| 				// Some browsers don't support the "nonce" property on scripts.
 | ||||
| 				// On the other hand, just using `getAttribute` is not enough as
 | ||||
| 				// the `nonce` attribute is reset to an empty string whenever it
 | ||||
| 				// becomes browsing-context connected.
 | ||||
| 				// See https://github.com/whatwg/html/issues/2369
 | ||||
| 				// See https://html.spec.whatwg.org/#nonce-attributes
 | ||||
| 				// The `node.getAttribute` check was added for the sake of
 | ||||
| 				// `jQuery.globalEval` so that it can fake a nonce-containing node
 | ||||
| 				// via an object.
 | ||||
| 				val = node[ i ] || node.getAttribute && node.getAttribute( i ); | ||||
| 				if ( val ) { | ||||
| 					script.setAttribute( i, val ); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @ -129,7 +142,7 @@ function toType( obj ) { | ||||
| 
 | ||||
| 
 | ||||
| var | ||||
| 	version = "3.3.1", | ||||
| 	version = "3.4.1", | ||||
| 
 | ||||
| 	// Define a local copy of jQuery
 | ||||
| 	jQuery = function( selector, context ) { | ||||
| @ -258,25 +271,28 @@ jQuery.extend = jQuery.fn.extend = function() { | ||||
| 
 | ||||
| 			// Extend the base object
 | ||||
| 			for ( name in options ) { | ||||
| 				src = target[ name ]; | ||||
| 				copy = options[ name ]; | ||||
| 
 | ||||
| 				// Prevent Object.prototype pollution
 | ||||
| 				// Prevent never-ending loop
 | ||||
| 				if ( target === copy ) { | ||||
| 				if ( name === "__proto__" || target === copy ) { | ||||
| 					continue; | ||||
| 				} | ||||
| 
 | ||||
| 				// Recurse if we're merging plain objects or arrays
 | ||||
| 				if ( deep && copy && ( jQuery.isPlainObject( copy ) || | ||||
| 					( copyIsArray = Array.isArray( copy ) ) ) ) { | ||||
| 					src = target[ name ]; | ||||
| 
 | ||||
| 					if ( copyIsArray ) { | ||||
| 						copyIsArray = false; | ||||
| 						clone = src && Array.isArray( src ) ? src : []; | ||||
| 
 | ||||
| 					// Ensure proper type for the source value
 | ||||
| 					if ( copyIsArray && !Array.isArray( src ) ) { | ||||
| 						clone = []; | ||||
| 					} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { | ||||
| 						clone = {}; | ||||
| 					} else { | ||||
| 						clone = src && jQuery.isPlainObject( src ) ? src : {}; | ||||
| 						clone = src; | ||||
| 					} | ||||
| 					copyIsArray = false; | ||||
| 
 | ||||
| 					// Never move original objects, clone them
 | ||||
| 					target[ name ] = jQuery.extend( deep, clone, copy ); | ||||
| @ -329,9 +345,6 @@ jQuery.extend( { | ||||
| 	}, | ||||
| 
 | ||||
| 	isEmptyObject: function( obj ) { | ||||
| 
 | ||||
| 		/* eslint-disable no-unused-vars */ | ||||
| 		// See https://github.com/eslint/eslint/issues/6125
 | ||||
| 		var name; | ||||
| 
 | ||||
| 		for ( name in obj ) { | ||||
| @ -341,8 +354,8 @@ jQuery.extend( { | ||||
| 	}, | ||||
| 
 | ||||
| 	// Evaluates a script in a global context
 | ||||
| 	globalEval: function( code ) { | ||||
| 		DOMEval( code ); | ||||
| 	globalEval: function( code, options ) { | ||||
| 		DOMEval( code, { nonce: options && options.nonce } ); | ||||
| 	}, | ||||
| 
 | ||||
| 	each: function( obj, callback ) { | ||||
| @ -498,14 +511,14 @@ function isArrayLike( obj ) { | ||||
| } | ||||
| var Sizzle = | ||||
| /*! | ||||
|  * Sizzle CSS Selector Engine v2.3.3 | ||||
|  * Sizzle CSS Selector Engine v2.3.4 | ||||
|  * https://sizzlejs.com/
 | ||||
|  * | ||||
|  * Copyright jQuery Foundation and other contributors | ||||
|  * Copyright JS Foundation and other contributors | ||||
|  * Released under the MIT license | ||||
|  * http://jquery.org/license
 | ||||
|  * https://js.foundation/
 | ||||
|  * | ||||
|  * Date: 2016-08-08 | ||||
|  * Date: 2019-04-08 | ||||
|  */ | ||||
| (function( window ) { | ||||
| 
 | ||||
| @ -539,6 +552,7 @@ var i, | ||||
| 	classCache = createCache(), | ||||
| 	tokenCache = createCache(), | ||||
| 	compilerCache = createCache(), | ||||
| 	nonnativeSelectorCache = createCache(), | ||||
| 	sortOrder = function( a, b ) { | ||||
| 		if ( a === b ) { | ||||
| 			hasDuplicate = true; | ||||
| @ -600,8 +614,7 @@ var i, | ||||
| 
 | ||||
| 	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), | ||||
| 	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), | ||||
| 
 | ||||
| 	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), | ||||
| 	rdescend = new RegExp( whitespace + "|>" ), | ||||
| 
 | ||||
| 	rpseudo = new RegExp( pseudos ), | ||||
| 	ridentifier = new RegExp( "^" + identifier + "$" ), | ||||
| @ -622,6 +635,7 @@ var i, | ||||
| 			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) | ||||
| 	}, | ||||
| 
 | ||||
| 	rhtml = /HTML$/i, | ||||
| 	rinputs = /^(?:input|select|textarea|button)$/i, | ||||
| 	rheader = /^h\d$/i, | ||||
| 
 | ||||
| @ -676,9 +690,9 @@ var i, | ||||
| 		setDocument(); | ||||
| 	}, | ||||
| 
 | ||||
| 	disabledAncestor = addCombinator( | ||||
| 	inDisabledFieldset = addCombinator( | ||||
| 		function( elem ) { | ||||
| 			return elem.disabled === true && ("form" in elem || "label" in elem); | ||||
| 			return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; | ||||
| 		}, | ||||
| 		{ dir: "parentNode", next: "legend" } | ||||
| 	); | ||||
| @ -791,18 +805,22 @@ function Sizzle( selector, context, results, seed ) { | ||||
| 
 | ||||
| 			// Take advantage of querySelectorAll
 | ||||
| 			if ( support.qsa && | ||||
| 				!compilerCache[ selector + " " ] && | ||||
| 				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) { | ||||
| 				!nonnativeSelectorCache[ selector + " " ] && | ||||
| 				(!rbuggyQSA || !rbuggyQSA.test( selector )) && | ||||
| 
 | ||||
| 				if ( nodeType !== 1 ) { | ||||
| 					newContext = context; | ||||
| 					newSelector = selector; | ||||
| 
 | ||||
| 				// qSA looks outside Element context, which is not what we want
 | ||||
| 				// Thanks to Andrew Dupont for this workaround technique
 | ||||
| 				// Support: IE <=8
 | ||||
| 				// Support: IE 8 only
 | ||||
| 				// Exclude object elements
 | ||||
| 				} else if ( context.nodeName.toLowerCase() !== "object" ) { | ||||
| 				(nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) { | ||||
| 
 | ||||
| 				newSelector = selector; | ||||
| 				newContext = context; | ||||
| 
 | ||||
| 				// qSA considers elements outside a scoping root when evaluating child or
 | ||||
| 				// descendant combinators, which is not what we want.
 | ||||
| 				// In such cases, we work around the behavior by prefixing every selector in the
 | ||||
| 				// list with an ID selector referencing the scope context.
 | ||||
| 				// Thanks to Andrew Dupont for this technique.
 | ||||
| 				if ( nodeType === 1 && rdescend.test( selector ) ) { | ||||
| 
 | ||||
| 					// Capture the context ID, setting it first if necessary
 | ||||
| 					if ( (nid = context.getAttribute( "id" )) ) { | ||||
| @ -824,13 +842,13 @@ function Sizzle( selector, context, results, seed ) { | ||||
| 						context; | ||||
| 				} | ||||
| 
 | ||||
| 				if ( newSelector ) { | ||||
| 				try { | ||||
| 					push.apply( results, | ||||
| 						newContext.querySelectorAll( newSelector ) | ||||
| 					); | ||||
| 					return results; | ||||
| 				} catch ( qsaError ) { | ||||
| 					nonnativeSelectorCache( selector, true ); | ||||
| 				} finally { | ||||
| 					if ( nid === expando ) { | ||||
| 						context.removeAttribute( "id" ); | ||||
| @ -839,7 +857,6 @@ function Sizzle( selector, context, results, seed ) { | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	} | ||||
| 
 | ||||
| 	// All others
 | ||||
| 	return select( selector.replace( rtrim, "$1" ), context, results, seed ); | ||||
| @ -998,7 +1015,7 @@ function createDisabledPseudo( disabled ) { | ||||
| 					// Where there is no isDisabled, check manually
 | ||||
| 					/* jshint -W018 */ | ||||
| 					elem.isDisabled !== !disabled && | ||||
| 						disabledAncestor( elem ) === disabled; | ||||
| 						inDisabledFieldset( elem ) === disabled; | ||||
| 			} | ||||
| 
 | ||||
| 			return elem.disabled === disabled; | ||||
| @ -1055,10 +1072,13 @@ support = Sizzle.support = {}; | ||||
|  * @returns {Boolean} True iff elem is a non-HTML XML node | ||||
|  */ | ||||
| isXML = Sizzle.isXML = function( elem ) { | ||||
| 	// documentElement is verified for cases where it doesn't yet exist
 | ||||
| 	// (such as loading iframes in IE - #4833)
 | ||||
| 	var documentElement = elem && (elem.ownerDocument || elem).documentElement; | ||||
| 	return documentElement ? documentElement.nodeName !== "HTML" : false; | ||||
| 	var namespace = elem.namespaceURI, | ||||
| 		docElem = (elem.ownerDocument || elem).documentElement; | ||||
| 
 | ||||
| 	// Support: IE <=8
 | ||||
| 	// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
 | ||||
| 	// https://bugs.jquery.com/ticket/4833
 | ||||
| 	return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
| @ -1480,11 +1500,8 @@ Sizzle.matchesSelector = function( elem, expr ) { | ||||
| 		setDocument( elem ); | ||||
| 	} | ||||
| 
 | ||||
| 	// Make sure that attribute selectors are quoted
 | ||||
| 	expr = expr.replace( rattributeQuotes, "='$1']" ); | ||||
| 
 | ||||
| 	if ( support.matchesSelector && documentIsHTML && | ||||
| 		!compilerCache[ expr + " " ] && | ||||
| 		!nonnativeSelectorCache[ expr + " " ] && | ||||
| 		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && | ||||
| 		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) { | ||||
| 
 | ||||
| @ -1498,7 +1515,9 @@ Sizzle.matchesSelector = function( elem, expr ) { | ||||
| 					elem.document && elem.document.nodeType !== 11 ) { | ||||
| 				return ret; | ||||
| 			} | ||||
| 		} catch (e) {} | ||||
| 		} catch (e) { | ||||
| 			nonnativeSelectorCache( expr, true ); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return Sizzle( expr, document, null, [ elem ] ).length > 0; | ||||
| @ -1957,7 +1976,7 @@ Expr = Sizzle.selectors = { | ||||
| 		"contains": markFunction(function( text ) { | ||||
| 			text = text.replace( runescape, funescape ); | ||||
| 			return function( elem ) { | ||||
| 				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; | ||||
| 				return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; | ||||
| 			}; | ||||
| 		}), | ||||
| 
 | ||||
| @ -2096,7 +2115,11 @@ Expr = Sizzle.selectors = { | ||||
| 		}), | ||||
| 
 | ||||
| 		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) { | ||||
| 			var i = argument < 0 ? argument + length : argument; | ||||
| 			var i = argument < 0 ? | ||||
| 				argument + length : | ||||
| 				argument > length ? | ||||
| 					length : | ||||
| 					argument; | ||||
| 			for ( ; --i >= 0; ) { | ||||
| 				matchIndexes.push( i ); | ||||
| 			} | ||||
| @ -3146,7 +3169,7 @@ jQuery.each( { | ||||
| 		return siblings( elem.firstChild ); | ||||
| 	}, | ||||
| 	contents: function( elem ) { | ||||
|         if ( nodeName( elem, "iframe" ) ) { | ||||
| 		if ( typeof elem.contentDocument !== "undefined" ) { | ||||
| 			return elem.contentDocument; | ||||
| 		} | ||||
| 
 | ||||
| @ -4466,6 +4489,26 @@ var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); | ||||
| 
 | ||||
| var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; | ||||
| 
 | ||||
| var documentElement = document.documentElement; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	var isAttached = function( elem ) { | ||||
| 			return jQuery.contains( elem.ownerDocument, elem ); | ||||
| 		}, | ||||
| 		composed = { composed: true }; | ||||
| 
 | ||||
| 	// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
 | ||||
| 	// Check attachment across shadow DOM boundaries when possible (gh-3504)
 | ||||
| 	// Support: iOS 10.0-10.2 only
 | ||||
| 	// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
 | ||||
| 	// leading to errors. We need to check for `getRootNode`.
 | ||||
| 	if ( documentElement.getRootNode ) { | ||||
| 		isAttached = function( elem ) { | ||||
| 			return jQuery.contains( elem.ownerDocument, elem ) || | ||||
| 				elem.getRootNode( composed ) === elem.ownerDocument; | ||||
| 		}; | ||||
| 	} | ||||
| var isHiddenWithinTree = function( elem, el ) { | ||||
| 
 | ||||
| 		// isHiddenWithinTree might be called from jQuery#filter function;
 | ||||
| @ -4480,7 +4523,7 @@ var isHiddenWithinTree = function( elem, el ) { | ||||
| 			// Support: Firefox <=43 - 45
 | ||||
| 			// Disconnected elements can have computed display: none, so first confirm that elem is
 | ||||
| 			// in the document.
 | ||||
| 			jQuery.contains( elem.ownerDocument, elem ) && | ||||
| 			isAttached( elem ) && | ||||
| 
 | ||||
| 			jQuery.css( elem, "display" ) === "none"; | ||||
| 	}; | ||||
| @ -4522,7 +4565,8 @@ function adjustCSS( elem, prop, valueParts, tween ) { | ||||
| 		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), | ||||
| 
 | ||||
| 		// Starting value computation is required for potential unit mismatches
 | ||||
| 		initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && | ||||
| 		initialInUnit = elem.nodeType && | ||||
| 			( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && | ||||
| 			rcssNum.exec( jQuery.css( elem, prop ) ); | ||||
| 
 | ||||
| 	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { | ||||
| @ -4669,7 +4713,7 @@ jQuery.fn.extend( { | ||||
| } ); | ||||
| var rcheckableType = ( /^(?:checkbox|radio)$/i ); | ||||
| 
 | ||||
| var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); | ||||
| var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); | ||||
| 
 | ||||
| var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); | ||||
| 
 | ||||
| @ -4741,7 +4785,7 @@ function setGlobalEval( elems, refElements ) { | ||||
| var rhtml = /<|&#?\w+;/; | ||||
| 
 | ||||
| function buildFragment( elems, context, scripts, selection, ignored ) { | ||||
| 	var elem, tmp, tag, wrap, contains, j, | ||||
| 	var elem, tmp, tag, wrap, attached, j, | ||||
| 		fragment = context.createDocumentFragment(), | ||||
| 		nodes = [], | ||||
| 		i = 0, | ||||
| @ -4805,13 +4849,13 @@ function buildFragment( elems, context, scripts, selection, ignored ) { | ||||
| 			continue; | ||||
| 		} | ||||
| 
 | ||||
| 		contains = jQuery.contains( elem.ownerDocument, elem ); | ||||
| 		attached = isAttached( elem ); | ||||
| 
 | ||||
| 		// Append to fragment
 | ||||
| 		tmp = getAll( fragment.appendChild( elem ), "script" ); | ||||
| 
 | ||||
| 		// Preserve script evaluation history
 | ||||
| 		if ( contains ) { | ||||
| 		if ( attached ) { | ||||
| 			setGlobalEval( tmp ); | ||||
| 		} | ||||
| 
 | ||||
| @ -4854,8 +4898,6 @@ function buildFragment( elems, context, scripts, selection, ignored ) { | ||||
| 	div.innerHTML = "<textarea>x</textarea>"; | ||||
| 	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; | ||||
| } )(); | ||||
| var documentElement = document.documentElement; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| var | ||||
| @ -4871,8 +4913,19 @@ function returnFalse() { | ||||
| 	return false; | ||||
| } | ||||
| 
 | ||||
| // Support: IE <=9 - 11+
 | ||||
| // focus() and blur() are asynchronous, except when they are no-op.
 | ||||
| // So expect focus to be synchronous when the element is already active,
 | ||||
| // and blur to be synchronous when the element is not already active.
 | ||||
| // (focus and blur are always synchronous in other supported browsers,
 | ||||
| // this just defines when we can count on it).
 | ||||
| function expectSync( elem, type ) { | ||||
| 	return ( elem === safeActiveElement() ) === ( type === "focus" ); | ||||
| } | ||||
| 
 | ||||
| // Support: IE <=9 only
 | ||||
| // See #13393 for more info
 | ||||
| // Accessing document.activeElement can throw unexpectedly
 | ||||
| // https://bugs.jquery.com/ticket/13393
 | ||||
| function safeActiveElement() { | ||||
| 	try { | ||||
| 		return document.activeElement; | ||||
| @ -5172,9 +5225,10 @@ jQuery.event = { | ||||
| 			while ( ( handleObj = matched.handlers[ j++ ] ) && | ||||
| 				!event.isImmediatePropagationStopped() ) { | ||||
| 
 | ||||
| 				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
 | ||||
| 				// a subset or equal to those in the bound event (both can have no namespace).
 | ||||
| 				if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { | ||||
| 				// If the event is namespaced, then each handler is only invoked if it is
 | ||||
| 				// specially universal or its namespaces are a superset of the event's.
 | ||||
| 				if ( !event.rnamespace || handleObj.namespace === false || | ||||
| 					event.rnamespace.test( handleObj.namespace ) ) { | ||||
| 
 | ||||
| 					event.handleObj = handleObj; | ||||
| 					event.data = handleObj.data; | ||||
| @ -5298,39 +5352,51 @@ jQuery.event = { | ||||
| 			// Prevent triggered image.load events from bubbling to window.load
 | ||||
| 			noBubble: true | ||||
| 		}, | ||||
| 		focus: { | ||||
| 
 | ||||
| 			// Fire native event if possible so blur/focus sequence is correct
 | ||||
| 			trigger: function() { | ||||
| 				if ( this !== safeActiveElement() && this.focus ) { | ||||
| 					this.focus(); | ||||
| 					return false; | ||||
| 				} | ||||
| 			}, | ||||
| 			delegateType: "focusin" | ||||
| 		}, | ||||
| 		blur: { | ||||
| 			trigger: function() { | ||||
| 				if ( this === safeActiveElement() && this.blur ) { | ||||
| 					this.blur(); | ||||
| 					return false; | ||||
| 				} | ||||
| 			}, | ||||
| 			delegateType: "focusout" | ||||
| 		}, | ||||
| 		click: { | ||||
| 
 | ||||
| 			// For checkbox, fire native event so checked state will be right
 | ||||
| 			trigger: function() { | ||||
| 				if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { | ||||
| 					this.click(); | ||||
| 					return false; | ||||
| 			// Utilize native event to ensure correct state for checkable inputs
 | ||||
| 			setup: function( data ) { | ||||
| 
 | ||||
| 				// For mutual compressibility with _default, replace `this` access with a local var.
 | ||||
| 				// `|| data` is dead code meant only to preserve the variable through minification.
 | ||||
| 				var el = this || data; | ||||
| 
 | ||||
| 				// Claim the first handler
 | ||||
| 				if ( rcheckableType.test( el.type ) && | ||||
| 					el.click && nodeName( el, "input" ) ) { | ||||
| 
 | ||||
| 					// dataPriv.set( el, "click", ... )
 | ||||
| 					leverageNative( el, "click", returnTrue ); | ||||
| 				} | ||||
| 
 | ||||
| 				// Return false to allow normal processing in the caller
 | ||||
| 				return false; | ||||
| 			}, | ||||
| 			trigger: function( data ) { | ||||
| 
 | ||||
| 				// For mutual compressibility with _default, replace `this` access with a local var.
 | ||||
| 				// `|| data` is dead code meant only to preserve the variable through minification.
 | ||||
| 				var el = this || data; | ||||
| 
 | ||||
| 				// Force setup before triggering a click
 | ||||
| 				if ( rcheckableType.test( el.type ) && | ||||
| 					el.click && nodeName( el, "input" ) ) { | ||||
| 
 | ||||
| 					leverageNative( el, "click" ); | ||||
| 				} | ||||
| 
 | ||||
| 				// Return non-false to allow normal event-path propagation
 | ||||
| 				return true; | ||||
| 			}, | ||||
| 
 | ||||
| 			// For cross-browser consistency, don't fire native .click() on links
 | ||||
| 			// For cross-browser consistency, suppress native .click() on links
 | ||||
| 			// Also prevent it if we're currently inside a leveraged native-event stack
 | ||||
| 			_default: function( event ) { | ||||
| 				return nodeName( event.target, "a" ); | ||||
| 				var target = event.target; | ||||
| 				return rcheckableType.test( target.type ) && | ||||
| 					target.click && nodeName( target, "input" ) && | ||||
| 					dataPriv.get( target, "click" ) || | ||||
| 					nodeName( target, "a" ); | ||||
| 			} | ||||
| 		}, | ||||
| 
 | ||||
| @ -5347,6 +5413,93 @@ jQuery.event = { | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| // Ensure the presence of an event listener that handles manually-triggered
 | ||||
| // synthetic events by interrupting progress until reinvoked in response to
 | ||||
| // *native* events that it fires directly, ensuring that state changes have
 | ||||
| // already occurred before other listeners are invoked.
 | ||||
| function leverageNative( el, type, expectSync ) { | ||||
| 
 | ||||
| 	// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
 | ||||
| 	if ( !expectSync ) { | ||||
| 		if ( dataPriv.get( el, type ) === undefined ) { | ||||
| 			jQuery.event.add( el, type, returnTrue ); | ||||
| 		} | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	// Register the controller as a special universal handler for all event namespaces
 | ||||
| 	dataPriv.set( el, type, false ); | ||||
| 	jQuery.event.add( el, type, { | ||||
| 		namespace: false, | ||||
| 		handler: function( event ) { | ||||
| 			var notAsync, result, | ||||
| 				saved = dataPriv.get( this, type ); | ||||
| 
 | ||||
| 			if ( ( event.isTrigger & 1 ) && this[ type ] ) { | ||||
| 
 | ||||
| 				// Interrupt processing of the outer synthetic .trigger()ed event
 | ||||
| 				// Saved data should be false in such cases, but might be a leftover capture object
 | ||||
| 				// from an async native handler (gh-4350)
 | ||||
| 				if ( !saved.length ) { | ||||
| 
 | ||||
| 					// Store arguments for use when handling the inner native event
 | ||||
| 					// There will always be at least one argument (an event object), so this array
 | ||||
| 					// will not be confused with a leftover capture object.
 | ||||
| 					saved = slice.call( arguments ); | ||||
| 					dataPriv.set( this, type, saved ); | ||||
| 
 | ||||
| 					// Trigger the native event and capture its result
 | ||||
| 					// Support: IE <=9 - 11+
 | ||||
| 					// focus() and blur() are asynchronous
 | ||||
| 					notAsync = expectSync( this, type ); | ||||
| 					this[ type ](); | ||||
| 					result = dataPriv.get( this, type ); | ||||
| 					if ( saved !== result || notAsync ) { | ||||
| 						dataPriv.set( this, type, false ); | ||||
| 					} else { | ||||
| 						result = {}; | ||||
| 					} | ||||
| 					if ( saved !== result ) { | ||||
| 
 | ||||
| 						// Cancel the outer synthetic event
 | ||||
| 						event.stopImmediatePropagation(); | ||||
| 						event.preventDefault(); | ||||
| 						return result.value; | ||||
| 					} | ||||
| 
 | ||||
| 				// If this is an inner synthetic event for an event with a bubbling surrogate
 | ||||
| 				// (focus or blur), assume that the surrogate already propagated from triggering the
 | ||||
| 				// native event and prevent that from happening again here.
 | ||||
| 				// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
 | ||||
| 				// bubbling surrogate propagates *after* the non-bubbling base), but that seems
 | ||||
| 				// less bad than duplication.
 | ||||
| 				} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { | ||||
| 					event.stopPropagation(); | ||||
| 				} | ||||
| 
 | ||||
| 			// If this is a native event triggered above, everything is now in order
 | ||||
| 			// Fire an inner synthetic event with the original arguments
 | ||||
| 			} else if ( saved.length ) { | ||||
| 
 | ||||
| 				// ...and capture the result
 | ||||
| 				dataPriv.set( this, type, { | ||||
| 					value: jQuery.event.trigger( | ||||
| 
 | ||||
| 						// Support: IE <=9 - 11+
 | ||||
| 						// Extend with the prototype to reset the above stopImmediatePropagation()
 | ||||
| 						jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), | ||||
| 						saved.slice( 1 ), | ||||
| 						this | ||||
| 					) | ||||
| 				} ); | ||||
| 
 | ||||
| 				// Abort handling of the native event
 | ||||
| 				event.stopImmediatePropagation(); | ||||
| 			} | ||||
| 		} | ||||
| 	} ); | ||||
| } | ||||
| 
 | ||||
| jQuery.removeEvent = function( elem, type, handle ) { | ||||
| 
 | ||||
| 	// This "if" is needed for plain objects
 | ||||
| @ -5459,6 +5612,7 @@ jQuery.each( { | ||||
| 	shiftKey: true, | ||||
| 	view: true, | ||||
| 	"char": true, | ||||
| 	code: true, | ||||
| 	charCode: true, | ||||
| 	key: true, | ||||
| 	keyCode: true, | ||||
| @ -5505,6 +5659,33 @@ jQuery.each( { | ||||
| 	} | ||||
| }, jQuery.event.addProp ); | ||||
| 
 | ||||
| jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { | ||||
| 	jQuery.event.special[ type ] = { | ||||
| 
 | ||||
| 		// Utilize native event if possible so blur/focus sequence is correct
 | ||||
| 		setup: function() { | ||||
| 
 | ||||
| 			// Claim the first handler
 | ||||
| 			// dataPriv.set( this, "focus", ... )
 | ||||
| 			// dataPriv.set( this, "blur", ... )
 | ||||
| 			leverageNative( this, type, expectSync ); | ||||
| 
 | ||||
| 			// Return false to allow normal processing in the caller
 | ||||
| 			return false; | ||||
| 		}, | ||||
| 		trigger: function() { | ||||
| 
 | ||||
| 			// Force setup before trigger
 | ||||
| 			leverageNative( this, type ); | ||||
| 
 | ||||
| 			// Return non-false to allow normal event-path propagation
 | ||||
| 			return true; | ||||
| 		}, | ||||
| 
 | ||||
| 		delegateType: delegateType | ||||
| 	}; | ||||
| } ); | ||||
| 
 | ||||
| // Create mouseenter/leave events using mouseover/out and event-time checks
 | ||||
| // so that event delegation works in jQuery.
 | ||||
| // Do the same for pointerenter/pointerleave and pointerover/pointerout
 | ||||
| @ -5755,11 +5936,13 @@ function domManip( collection, args, callback, ignored ) { | ||||
| 						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) { | ||||
| 
 | ||||
| 							// Optional AJAX dependency, but won't run scripts if not present
 | ||||
| 							if ( jQuery._evalUrl ) { | ||||
| 								jQuery._evalUrl( node.src ); | ||||
| 							if ( jQuery._evalUrl && !node.noModule ) { | ||||
| 								jQuery._evalUrl( node.src, { | ||||
| 									nonce: node.nonce || node.getAttribute( "nonce" ) | ||||
| 								} ); | ||||
| 							} | ||||
| 						} else { | ||||
| 							DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node ); | ||||
| 							DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| @ -5781,7 +5964,7 @@ function remove( elem, selector, keepData ) { | ||||
| 		} | ||||
| 
 | ||||
| 		if ( node.parentNode ) { | ||||
| 			if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { | ||||
| 			if ( keepData && isAttached( node ) ) { | ||||
| 				setGlobalEval( getAll( node, "script" ) ); | ||||
| 			} | ||||
| 			node.parentNode.removeChild( node ); | ||||
| @ -5799,7 +5982,7 @@ jQuery.extend( { | ||||
| 	clone: function( elem, dataAndEvents, deepDataAndEvents ) { | ||||
| 		var i, l, srcElements, destElements, | ||||
| 			clone = elem.cloneNode( true ), | ||||
| 			inPage = jQuery.contains( elem.ownerDocument, elem ); | ||||
| 			inPage = isAttached( elem ); | ||||
| 
 | ||||
| 		// Fix IE cloning issues
 | ||||
| 		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && | ||||
| @ -6095,8 +6278,10 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); | ||||
| 
 | ||||
| 		// Support: IE 9 only
 | ||||
| 		// Detect overflow:scroll screwiness (gh-3699)
 | ||||
| 		// Support: Chrome <=64
 | ||||
| 		// Don't get tricked when zoom affects offsetWidth (gh-4029)
 | ||||
| 		div.style.position = "absolute"; | ||||
| 		scrollboxSizeVal = div.offsetWidth === 36 || "absolute"; | ||||
| 		scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; | ||||
| 
 | ||||
| 		documentElement.removeChild( container ); | ||||
| 
 | ||||
| @ -6167,7 +6352,7 @@ function curCSS( elem, name, computed ) { | ||||
| 	if ( computed ) { | ||||
| 		ret = computed.getPropertyValue( name ) || computed[ name ]; | ||||
| 
 | ||||
| 		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { | ||||
| 		if ( ret === "" && !isAttached( elem ) ) { | ||||
| 			ret = jQuery.style( elem, name ); | ||||
| 		} | ||||
| 
 | ||||
| @ -6223,30 +6408,13 @@ function addGetHookIf( conditionFn, hookFn ) { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| var | ||||
| var cssPrefixes = [ "Webkit", "Moz", "ms" ], | ||||
| 	emptyStyle = document.createElement( "div" ).style, | ||||
| 	vendorProps = {}; | ||||
| 
 | ||||
| 	// Swappable if display is none or starts with table
 | ||||
| 	// except "table", "table-cell", or "table-caption"
 | ||||
| 	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
 | ||||
| 	rdisplayswap = /^(none|table(?!-c[ea]).+)/, | ||||
| 	rcustomProp = /^--/, | ||||
| 	cssShow = { position: "absolute", visibility: "hidden", display: "block" }, | ||||
| 	cssNormalTransform = { | ||||
| 		letterSpacing: "0", | ||||
| 		fontWeight: "400" | ||||
| 	}, | ||||
| 
 | ||||
| 	cssPrefixes = [ "Webkit", "Moz", "ms" ], | ||||
| 	emptyStyle = document.createElement( "div" ).style; | ||||
| 
 | ||||
| // Return a css property mapped to a potentially vendor prefixed property
 | ||||
| // Return a vendor-prefixed property or undefined
 | ||||
| function vendorPropName( name ) { | ||||
| 
 | ||||
| 	// Shortcut for names that are not vendor prefixed
 | ||||
| 	if ( name in emptyStyle ) { | ||||
| 		return name; | ||||
| 	} | ||||
| 
 | ||||
| 	// Check for vendor prefixed names
 | ||||
| 	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), | ||||
| 		i = cssPrefixes.length; | ||||
| @ -6259,16 +6427,33 @@ function vendorPropName( name ) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // Return a property mapped along what jQuery.cssProps suggests or to
 | ||||
| // a vendor prefixed property.
 | ||||
| // Return a potentially-mapped jQuery.cssProps or vendor prefixed property
 | ||||
| function finalPropName( name ) { | ||||
| 	var ret = jQuery.cssProps[ name ]; | ||||
| 	if ( !ret ) { | ||||
| 		ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; | ||||
| 	var final = jQuery.cssProps[ name ] || vendorProps[ name ]; | ||||
| 
 | ||||
| 	if ( final ) { | ||||
| 		return final; | ||||
| 	} | ||||
| 	return ret; | ||||
| 	if ( name in emptyStyle ) { | ||||
| 		return name; | ||||
| 	} | ||||
| 	return vendorProps[ name ] = vendorPropName( name ) || name; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| var | ||||
| 
 | ||||
| 	// Swappable if display is none or starts with table
 | ||||
| 	// except "table", "table-cell", or "table-caption"
 | ||||
| 	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
 | ||||
| 	rdisplayswap = /^(none|table(?!-c[ea]).+)/, | ||||
| 	rcustomProp = /^--/, | ||||
| 	cssShow = { position: "absolute", visibility: "hidden", display: "block" }, | ||||
| 	cssNormalTransform = { | ||||
| 		letterSpacing: "0", | ||||
| 		fontWeight: "400" | ||||
| 	}; | ||||
| 
 | ||||
| function setPositiveNumber( elem, value, subtract ) { | ||||
| 
 | ||||
| 	// Any relative (+/-) values have already been
 | ||||
| @ -6340,7 +6525,10 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed | ||||
| 			delta - | ||||
| 			extra - | ||||
| 			0.5 | ||||
| 		) ); | ||||
| 
 | ||||
| 		// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
 | ||||
| 		// Use an explicit zero to avoid NaN (gh-3964)
 | ||||
| 		) ) || 0; | ||||
| 	} | ||||
| 
 | ||||
| 	return delta; | ||||
| @ -6350,9 +6538,16 @@ function getWidthOrHeight( elem, dimension, extra ) { | ||||
| 
 | ||||
| 	// Start with computed style
 | ||||
| 	var styles = getStyles( elem ), | ||||
| 
 | ||||
| 		// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
 | ||||
| 		// Fake content-box until we know it's needed to know the true value.
 | ||||
| 		boxSizingNeeded = !support.boxSizingReliable() || extra, | ||||
| 		isBorderBox = boxSizingNeeded && | ||||
| 			jQuery.css( elem, "boxSizing", false, styles ) === "border-box", | ||||
| 		valueIsBorderBox = isBorderBox, | ||||
| 
 | ||||
| 		val = curCSS( elem, dimension, styles ), | ||||
| 		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", | ||||
| 		valueIsBorderBox = isBorderBox; | ||||
| 		offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); | ||||
| 
 | ||||
| 	// Support: Firefox <=54
 | ||||
| 	// Return a confounding non-pixel value or feign ignorance, as appropriate.
 | ||||
| @ -6363,22 +6558,29 @@ function getWidthOrHeight( elem, dimension, extra ) { | ||||
| 		val = "auto"; | ||||
| 	} | ||||
| 
 | ||||
| 	// Check for style in case a browser which returns unreliable values
 | ||||
| 	// for getComputedStyle silently falls back to the reliable elem.style
 | ||||
| 	valueIsBorderBox = valueIsBorderBox && | ||||
| 		( support.boxSizingReliable() || val === elem.style[ dimension ] ); | ||||
| 
 | ||||
| 	// Fall back to offsetWidth/offsetHeight when value is "auto"
 | ||||
| 	// This happens for inline elements with no explicit setting (gh-3571)
 | ||||
| 	// Support: Android <=4.1 - 4.3 only
 | ||||
| 	// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
 | ||||
| 	if ( val === "auto" || | ||||
| 		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) { | ||||
| 	// Support: IE 9-11 only
 | ||||
| 	// Also use offsetWidth/offsetHeight for when box sizing is unreliable
 | ||||
| 	// We use getClientRects() to check for hidden/disconnected.
 | ||||
| 	// In those cases, the computed value can be trusted to be border-box
 | ||||
| 	if ( ( !support.boxSizingReliable() && isBorderBox || | ||||
| 		val === "auto" || | ||||
| 		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && | ||||
| 		elem.getClientRects().length ) { | ||||
| 
 | ||||
| 		val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ]; | ||||
| 		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; | ||||
| 
 | ||||
| 		// offsetWidth/offsetHeight provide border-box values
 | ||||
| 		valueIsBorderBox = true; | ||||
| 		// Where available, offsetWidth/offsetHeight approximate border box dimensions.
 | ||||
| 		// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
 | ||||
| 		// retrieved value as a content box dimension.
 | ||||
| 		valueIsBorderBox = offsetProp in elem; | ||||
| 		if ( valueIsBorderBox ) { | ||||
| 			val = elem[ offsetProp ]; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// Normalize "" and auto
 | ||||
| @ -6424,6 +6626,13 @@ jQuery.extend( { | ||||
| 		"flexGrow": true, | ||||
| 		"flexShrink": true, | ||||
| 		"fontWeight": true, | ||||
| 		"gridArea": true, | ||||
| 		"gridColumn": true, | ||||
| 		"gridColumnEnd": true, | ||||
| 		"gridColumnStart": true, | ||||
| 		"gridRow": true, | ||||
| 		"gridRowEnd": true, | ||||
| 		"gridRowStart": true, | ||||
| 		"lineHeight": true, | ||||
| 		"opacity": true, | ||||
| 		"order": true, | ||||
| @ -6479,7 +6688,9 @@ jQuery.extend( { | ||||
| 			} | ||||
| 
 | ||||
| 			// If a number was passed in, add the unit (except for certain CSS properties)
 | ||||
| 			if ( type === "number" ) { | ||||
| 			// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
 | ||||
| 			// "px" to a few hardcoded values.
 | ||||
| 			if ( type === "number" && !isCustomProp ) { | ||||
| 				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); | ||||
| 			} | ||||
| 
 | ||||
| @ -6579,18 +6790,29 @@ jQuery.each( [ "height", "width" ], function( i, dimension ) { | ||||
| 		set: function( elem, value, extra ) { | ||||
| 			var matches, | ||||
| 				styles = getStyles( elem ), | ||||
| 				isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", | ||||
| 				subtract = extra && boxModelAdjustment( | ||||
| 
 | ||||
| 				// Only read styles.position if the test has a chance to fail
 | ||||
| 				// to avoid forcing a reflow.
 | ||||
| 				scrollboxSizeBuggy = !support.scrollboxSize() && | ||||
| 					styles.position === "absolute", | ||||
| 
 | ||||
| 				// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
 | ||||
| 				boxSizingNeeded = scrollboxSizeBuggy || extra, | ||||
| 				isBorderBox = boxSizingNeeded && | ||||
| 					jQuery.css( elem, "boxSizing", false, styles ) === "border-box", | ||||
| 				subtract = extra ? | ||||
| 					boxModelAdjustment( | ||||
| 						elem, | ||||
| 						dimension, | ||||
| 						extra, | ||||
| 						isBorderBox, | ||||
| 						styles | ||||
| 				); | ||||
| 					) : | ||||
| 					0; | ||||
| 
 | ||||
| 			// Account for unreliable border-box dimensions by comparing offset* to computed and
 | ||||
| 			// faking a content-box to get border and padding (gh-3699)
 | ||||
| 			if ( isBorderBox && support.scrollboxSize() === styles.position ) { | ||||
| 			if ( isBorderBox && scrollboxSizeBuggy ) { | ||||
| 				subtract -= Math.ceil( | ||||
| 					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - | ||||
| 					parseFloat( styles[ dimension ] ) - | ||||
| @ -6758,9 +6980,9 @@ Tween.propHooks = { | ||||
| 			// Use .style if available and use plain properties where available.
 | ||||
| 			if ( jQuery.fx.step[ tween.prop ] ) { | ||||
| 				jQuery.fx.step[ tween.prop ]( tween ); | ||||
| 			} else if ( tween.elem.nodeType === 1 && | ||||
| 				( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || | ||||
| 					jQuery.cssHooks[ tween.prop ] ) ) { | ||||
| 			} else if ( tween.elem.nodeType === 1 && ( | ||||
| 					jQuery.cssHooks[ tween.prop ] || | ||||
| 					tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { | ||||
| 				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); | ||||
| 			} else { | ||||
| 				tween.elem[ tween.prop ] = tween.now; | ||||
| @ -8467,6 +8689,10 @@ jQuery.param = function( a, traditional ) { | ||||
| 				encodeURIComponent( value == null ? "" : value ); | ||||
| 		}; | ||||
| 
 | ||||
| 	if ( a == null ) { | ||||
| 		return ""; | ||||
| 	} | ||||
| 
 | ||||
| 	// If an array was passed in, assume that it is an array of form elements.
 | ||||
| 	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { | ||||
| 
 | ||||
| @ -8969,12 +9195,14 @@ jQuery.extend( { | ||||
| 						if ( !responseHeaders ) { | ||||
| 							responseHeaders = {}; | ||||
| 							while ( ( match = rheaders.exec( responseHeadersString ) ) ) { | ||||
| 								responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; | ||||
| 								responseHeaders[ match[ 1 ].toLowerCase() + " " ] = | ||||
| 									( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) | ||||
| 										.concat( match[ 2 ] ); | ||||
| 							} | ||||
| 						} | ||||
| 						match = responseHeaders[ key.toLowerCase() ]; | ||||
| 						match = responseHeaders[ key.toLowerCase() + " " ]; | ||||
| 					} | ||||
| 					return match == null ? null : match; | ||||
| 					return match == null ? null : match.join( ", " ); | ||||
| 				}, | ||||
| 
 | ||||
| 				// Raw string
 | ||||
| @ -9363,7 +9591,7 @@ jQuery.each( [ "get", "post" ], function( i, method ) { | ||||
| } ); | ||||
| 
 | ||||
| 
 | ||||
| jQuery._evalUrl = function( url ) { | ||||
| jQuery._evalUrl = function( url, options ) { | ||||
| 	return jQuery.ajax( { | ||||
| 		url: url, | ||||
| 
 | ||||
| @ -9373,7 +9601,16 @@ jQuery._evalUrl = function( url ) { | ||||
| 		cache: true, | ||||
| 		async: false, | ||||
| 		global: false, | ||||
| 		"throws": true | ||||
| 
 | ||||
| 		// Only evaluate the response if it is successful (gh-4126)
 | ||||
| 		// dataFilter is not invoked for failure responses, so using it instead
 | ||||
| 		// of the default converter is kludgy but it works.
 | ||||
| 		converters: { | ||||
| 			"text script": function() {} | ||||
| 		}, | ||||
| 		dataFilter: function( response ) { | ||||
| 			jQuery.globalEval( response, options ); | ||||
| 		} | ||||
| 	} ); | ||||
| }; | ||||
| 
 | ||||
| @ -9656,24 +9893,21 @@ jQuery.ajaxPrefilter( "script", function( s ) { | ||||
| // Bind script tag hack transport
 | ||||
| jQuery.ajaxTransport( "script", function( s ) { | ||||
| 
 | ||||
| 	// This transport only deals with cross domain requests
 | ||||
| 	if ( s.crossDomain ) { | ||||
| 	// This transport only deals with cross domain or forced-by-attrs requests
 | ||||
| 	if ( s.crossDomain || s.scriptAttrs ) { | ||||
| 		var script, callback; | ||||
| 		return { | ||||
| 			send: function( _, complete ) { | ||||
| 				script = jQuery( "<script>" ).prop( { | ||||
| 					charset: s.scriptCharset, | ||||
| 					src: s.url | ||||
| 				} ).on( | ||||
| 					"load error", | ||||
| 					callback = function( evt ) { | ||||
| 				script = jQuery( "<script>" ) | ||||
| 					.attr( s.scriptAttrs || {} ) | ||||
| 					.prop( { charset: s.scriptCharset, src: s.url } ) | ||||
| 					.on( "load error", callback = function( evt ) { | ||||
| 						script.remove(); | ||||
| 						callback = null; | ||||
| 						if ( evt ) { | ||||
| 							complete( evt.type === "error" ? 404 : 200, evt.type ); | ||||
| 						} | ||||
| 					} | ||||
| 				); | ||||
| 					} ); | ||||
| 
 | ||||
| 				// Use native DOM manipulation to avoid our domManip AJAX trickery
 | ||||
| 				document.head.appendChild( script[ 0 ] ); | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										34
									
								
								src/csproj-files.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/csproj-files.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| COPY src/ApiGateways/ApiGw-Base/*.csproj /src/src/ApiGateways/ApiGw-Base/ | ||||
| COPY src/ApiGateways/Mobile.Bff.Shopping/aggregator/*.csproj /src/src/ApiGateways/Mobile.Bff.Shopping/aggregator/ | ||||
| COPY src/ApiGateways/Web.Bff.Shopping/aggregator/*.csproj /src/src/ApiGateways/Web.Bff.Shopping/aggregator/ | ||||
| COPY src/BuildingBlocks/EventBus/CommandBus/*.csproj /src/src/BuildingBlocks/EventBus/CommandBus/ | ||||
| COPY src/BuildingBlocks/EventBus/EventBus/*.csproj /src/src/BuildingBlocks/EventBus/EventBus/ | ||||
| COPY src/BuildingBlocks/EventBus/EventBus.Tests/*.csproj /src/src/BuildingBlocks/EventBus/EventBus.Tests/ | ||||
| COPY src/BuildingBlocks/EventBus/EventBusRabbitMQ/*.csproj /src/src/BuildingBlocks/EventBus/EventBusRabbitMQ/ | ||||
| COPY src/BuildingBlocks/EventBus/EventBusServiceBus/*.csproj /src/src/BuildingBlocks/EventBus/EventBusServiceBus/ | ||||
| COPY src/BuildingBlocks/EventBus/IntegrationEventLogEF/*.csproj /src/src/BuildingBlocks/EventBus/IntegrationEventLogEF/ | ||||
| COPY src/BuildingBlocks/WebHostCustomization/WebHost.Customization/*.csproj /src/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/ | ||||
| COPY src/Services/Basket/Basket.API/*.csproj /src/src/Services/Basket/Basket.API/ | ||||
| COPY src/Services/Basket/Basket.FunctionalTests/*.csproj /src/src/Services/Basket/Basket.FunctionalTests/ | ||||
| COPY src/Services/Basket/Basket.UnitTests/*.csproj /src/src/Services/Basket/Basket.UnitTests/ | ||||
| COPY src/Services/Catalog/Catalog.API/*.csproj /src/src/Services/Catalog/Catalog.API/ | ||||
| COPY src/Services/Catalog/Catalog.FunctionalTests/*.csproj /src/src/Services/Catalog/Catalog.FunctionalTests/ | ||||
| COPY src/Services/Catalog/Catalog.UnitTests/*.csproj /src/src/Services/Catalog/Catalog.UnitTests/ | ||||
| COPY src/Services/Identity/Identity.API/*.csproj /src/src/Services/Identity/Identity.API/ | ||||
| COPY src/Services/Location/Locations.API/*.csproj /src/src/Services/Location/Locations.API/ | ||||
| COPY src/Services/Location/Locations.FunctionalTests/*.csproj /src/src/Services/Location/Locations.FunctionalTests/ | ||||
| COPY src/Services/Marketing/Marketing.API/*.csproj /src/src/Services/Marketing/Marketing.API/ | ||||
| COPY src/Services/Marketing/Marketing.FunctionalTests/*.csproj /src/src/Services/Marketing/Marketing.FunctionalTests/ | ||||
| COPY src/Services/Ordering/Ordering.API/*.csproj /src/src/Services/Ordering/Ordering.API/ | ||||
| COPY src/Services/Ordering/Ordering.BackgroundTasks/*.csproj /src/src/Services/Ordering/Ordering.BackgroundTasks/ | ||||
| COPY src/Services/Ordering/Ordering.Domain/*.csproj /src/src/Services/Ordering/Ordering.Domain/ | ||||
| COPY src/Services/Ordering/Ordering.FunctionalTests/*.csproj /src/src/Services/Ordering/Ordering.FunctionalTests/ | ||||
| COPY src/Services/Ordering/Ordering.Infrastructure/*.csproj /src/src/Services/Ordering/Ordering.Infrastructure/ | ||||
| COPY src/Services/Ordering/Ordering.SignalrHub/*.csproj /src/src/Services/Ordering/Ordering.SignalrHub/ | ||||
| COPY src/Services/Ordering/Ordering.UnitTests/*.csproj /src/src/Services/Ordering/Ordering.UnitTests/ | ||||
| COPY src/Services/Payment/Payment.API/*.csproj /src/src/Services/Payment/Payment.API/ | ||||
| COPY src/Services/Webhooks/Webhooks.API/*.csproj /src/src/Services/Webhooks/Webhooks.API/ | ||||
| COPY src/Web/WebhookClient/*.csproj /src/src/Web/WebhookClient/ | ||||
| COPY src/Web/WebMVC/*.csproj /src/src/Web/WebMVC/ | ||||
| COPY src/Web/WebSPA/*.csproj /src/src/Web/WebSPA/ | ||||
| COPY src/Web/WebStatus/*.csproj /src/src/Web/WebStatus/ | ||||
| @ -1,65 +0,0 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <TestRun id="96da8a5c-5309-4e3a-a6ed-89303561a450" name="@cc795b0cf03c 2018-12-05 11:23:58" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> | ||||
|   <Times creation="2018-12-05T11:23:58.8840432+00:00" queuing="2018-12-05T11:23:58.8840443+00:00" start="2018-12-05T11:23:45.4010507+00:00" finish="2018-12-05T11:23:58.9725825+00:00" /> | ||||
|   <TestSettings name="default" id="0df98659-1d05-46e8-a58f-e605f0367f36"> | ||||
|     <Deployment runDeploymentRoot="_cc795b0cf03c_2018-12-05_11_23_58" /> | ||||
|   </TestSettings> | ||||
|   <Results> | ||||
|     <UnitTestResult executionId="561851a9-f9d7-46a8-a72f-b15d9f881e98" testId="65eb92e5-3f81-c557-7b6a-e31bbb392a30" testName="UnitTest.Basket.Application.CartControllerTest.Add_to_cart_success" computerName="cc795b0cf03c" duration="00:00:00.0520000" startTime="2018-12-05T11:23:58.3708078+00:00" endTime="2018-12-05T11:23:58.3708084+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="561851a9-f9d7-46a8-a72f-b15d9f881e98" /> | ||||
|     <UnitTestResult executionId="503e5b72-ad5e-47e3-ba7a-e6bdf65fb3c6" testId="f13c87f6-4345-41c1-0ceb-530a37f8c45c" testName="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Without_Basket_Should_Return_Bad_Request" computerName="cc795b0cf03c" duration="00:00:00.0030000" startTime="2018-12-05T11:23:58.2981843+00:00" endTime="2018-12-05T11:23:58.2981850+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="503e5b72-ad5e-47e3-ba7a-e6bdf65fb3c6" /> | ||||
|     <UnitTestResult executionId="c94bfac7-b0f7-4c85-88f5-9b6ea39aefc7" testId="1be065ec-8cda-95e2-fd64-2bec276720d6" testName="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Wit_Basket_Should_Publish_UserCheckoutAccepted_Integration_Event" computerName="cc795b0cf03c" duration="00:00:00.1550000" startTime="2018-12-05T11:23:58.2980829+00:00" endTime="2018-12-05T11:23:58.2980839+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="c94bfac7-b0f7-4c85-88f5-9b6ea39aefc7" /> | ||||
|     <UnitTestResult executionId="0786dbc3-3a84-4d94-ba06-10ef5b44fede" testId="cfb3e0df-fbb0-f11f-f586-af6d36973673" testName="UnitTest.Basket.Application.CartControllerTest.Post_cart_success" computerName="cc795b0cf03c" duration="00:00:00.0970000" startTime="2018-12-05T11:23:58.4478198+00:00" endTime="2018-12-05T11:23:58.4478226+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="0786dbc3-3a84-4d94-ba06-10ef5b44fede" /> | ||||
|     <UnitTestResult executionId="53777076-ea09-481d-acbb-b8b1d85513a9" testId="f7add3c9-26d7-687c-a46e-1e880e36f193" testName="UnitTest.Basket.Application.BasketWebApiTest.Post_customer_basket_success" computerName="cc795b0cf03c" duration="00:00:00.0630000" startTime="2018-12-05T11:23:58.3707805+00:00" endTime="2018-12-05T11:23:58.3707839+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="53777076-ea09-481d-acbb-b8b1d85513a9" /> | ||||
|     <UnitTestResult executionId="3b321d3b-b42d-4b4b-a1b2-510a96ada515" testId="33fde07d-fd90-8a31-ce7f-73d594f79232" testName="UnitTest.Basket.Application.CartControllerTest.Post_cart_checkout_success" computerName="cc795b0cf03c" duration="00:00:01.4900000" startTime="2018-12-05T11:23:58.2970206+00:00" endTime="2018-12-05T11:23:58.2970240+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="3b321d3b-b42d-4b4b-a1b2-510a96ada515" /> | ||||
|     <UnitTestResult executionId="9de96a13-7c87-4519-9c24-19861f9036e3" testId="ace9ddb6-e897-b915-1e3c-4ae77eb2f0e6" testName="UnitTest.Basket.Application.BasketWebApiTest.Get_customer_basket_success" computerName="cc795b0cf03c" duration="00:00:01.2680000" startTime="2018-12-05T11:23:58.0931351+00:00" endTime="2018-12-05T11:23:58.0931394+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="9de96a13-7c87-4519-9c24-19861f9036e3" /> | ||||
|   </Results> | ||||
|   <TestDefinitions> | ||||
|     <UnitTest name="UnitTest.Basket.Application.CartControllerTest.Post_cart_success" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="cfb3e0df-fbb0-f11f-f586-af6d36973673"> | ||||
|       <Execution id="0786dbc3-3a84-4d94-ba06-10ef5b44fede" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.CartControllerTest.Post_cart_success" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.CartControllerTest.Add_to_cart_success" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="65eb92e5-3f81-c557-7b6a-e31bbb392a30"> | ||||
|       <Execution id="561851a9-f9d7-46a8-a72f-b15d9f881e98" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.CartControllerTest.Add_to_cart_success" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.BasketWebApiTest.Get_customer_basket_success" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="ace9ddb6-e897-b915-1e3c-4ae77eb2f0e6"> | ||||
|       <Execution id="9de96a13-7c87-4519-9c24-19861f9036e3" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.BasketWebApiTest.Get_customer_basket_success" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Without_Basket_Should_Return_Bad_Request" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="f13c87f6-4345-41c1-0ceb-530a37f8c45c"> | ||||
|       <Execution id="503e5b72-ad5e-47e3-ba7a-e6bdf65fb3c6" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Without_Basket_Should_Return_Bad_Request" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Wit_Basket_Should_Publish_UserCheckoutAccepted_Integration_Event" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="1be065ec-8cda-95e2-fd64-2bec276720d6"> | ||||
|       <Execution id="c94bfac7-b0f7-4c85-88f5-9b6ea39aefc7" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Wit_Basket_Should_Publish_UserCheckoutAccepted_Integration_Event" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.BasketWebApiTest.Post_customer_basket_success" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="f7add3c9-26d7-687c-a46e-1e880e36f193"> | ||||
|       <Execution id="53777076-ea09-481d-acbb-b8b1d85513a9" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.BasketWebApiTest.Post_customer_basket_success" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.CartControllerTest.Post_cart_checkout_success" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="33fde07d-fd90-8a31-ce7f-73d594f79232"> | ||||
|       <Execution id="3b321d3b-b42d-4b4b-a1b2-510a96ada515" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.CartControllerTest.Post_cart_checkout_success" /> | ||||
|     </UnitTest> | ||||
|   </TestDefinitions> | ||||
|   <TestEntries> | ||||
|     <TestEntry testId="65eb92e5-3f81-c557-7b6a-e31bbb392a30" executionId="561851a9-f9d7-46a8-a72f-b15d9f881e98" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="f13c87f6-4345-41c1-0ceb-530a37f8c45c" executionId="503e5b72-ad5e-47e3-ba7a-e6bdf65fb3c6" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="1be065ec-8cda-95e2-fd64-2bec276720d6" executionId="c94bfac7-b0f7-4c85-88f5-9b6ea39aefc7" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="cfb3e0df-fbb0-f11f-f586-af6d36973673" executionId="0786dbc3-3a84-4d94-ba06-10ef5b44fede" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="f7add3c9-26d7-687c-a46e-1e880e36f193" executionId="53777076-ea09-481d-acbb-b8b1d85513a9" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="33fde07d-fd90-8a31-ce7f-73d594f79232" executionId="3b321d3b-b42d-4b4b-a1b2-510a96ada515" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="ace9ddb6-e897-b915-1e3c-4ae77eb2f0e6" executionId="9de96a13-7c87-4519-9c24-19861f9036e3" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|   </TestEntries> | ||||
|   <TestLists> | ||||
|     <TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestList name="All Loaded Results" id="19431567-8539-422a-85d7-44ee4e166bda" /> | ||||
|   </TestLists> | ||||
|   <ResultSummary outcome="Completed"> | ||||
|     <Counters total="7" executed="7" passed="7" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" /> | ||||
|     <Output> | ||||
|       <StdOut>[xUnit.net 00:00:06.1434181]   Discovering: Basket.UnitTests[xUnit.net 00:00:06.4201662]   Discovered:  Basket.UnitTests[xUnit.net 00:00:06.4258049]   Starting:    Basket.UnitTests[xUnit.net 00:00:09.1721258]   Finished:    Basket.UnitTests</StdOut> | ||||
|     </Output> | ||||
|   </ResultSummary> | ||||
| </TestRun> | ||||
| @ -1,65 +0,0 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <TestRun id="39a96562-8a46-4aea-b99e-1d90d37045ec" name="@1785163cba64 2018-12-05 11:23:50" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> | ||||
|   <Times creation="2018-12-05T11:23:50.8479571+00:00" queuing="2018-12-05T11:23:50.8479579+00:00" start="2018-12-05T11:23:36.2713555+00:00" finish="2018-12-05T11:23:51.5732318+00:00" /> | ||||
|   <TestSettings name="default" id="65e5de94-5658-477a-b4c1-cce07b716d69"> | ||||
|     <Deployment runDeploymentRoot="_1785163cba64_2018-12-05_11_23_50" /> | ||||
|   </TestSettings> | ||||
|   <Results> | ||||
|     <UnitTestResult executionId="f5375449-ee76-4ccd-ab5d-01788538583a" testId="1be065ec-8cda-95e2-fd64-2bec276720d6" testName="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Wit_Basket_Should_Publish_UserCheckoutAccepted_Integration_Event" computerName="1785163cba64" duration="00:00:00.1400000" startTime="2018-12-05T11:23:50.4881664+00:00" endTime="2018-12-05T11:23:50.4881673+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="f5375449-ee76-4ccd-ab5d-01788538583a" /> | ||||
|     <UnitTestResult executionId="c3451c4c-90b7-465d-b638-8c5e57a8680e" testId="f13c87f6-4345-41c1-0ceb-530a37f8c45c" testName="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Without_Basket_Should_Return_Bad_Request" computerName="1785163cba64" duration="00:00:00.0020000" startTime="2018-12-05T11:23:50.4882146+00:00" endTime="2018-12-05T11:23:50.4882152+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="c3451c4c-90b7-465d-b638-8c5e57a8680e" /> | ||||
|     <UnitTestResult executionId="37eceb9f-3500-4c62-8033-85f7322b60c1" testId="33fde07d-fd90-8a31-ce7f-73d594f79232" testName="UnitTest.Basket.Application.CartControllerTest.Post_cart_checkout_success" computerName="1785163cba64" duration="00:00:01.6230000" startTime="2018-12-05T11:23:50.4875247+00:00" endTime="2018-12-05T11:23:50.4875264+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="37eceb9f-3500-4c62-8033-85f7322b60c1" /> | ||||
|     <UnitTestResult executionId="61af83cc-1623-40ee-8546-6cd0d6ece3cd" testId="65eb92e5-3f81-c557-7b6a-e31bbb392a30" testName="UnitTest.Basket.Application.CartControllerTest.Add_to_cart_success" computerName="1785163cba64" duration="00:00:00.0950000" startTime="2018-12-05T11:23:50.5151450+00:00" endTime="2018-12-05T11:23:50.5151485+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="61af83cc-1623-40ee-8546-6cd0d6ece3cd" /> | ||||
|     <UnitTestResult executionId="3b941fb3-30a2-4d14-98f8-30c04df4c032" testId="cfb3e0df-fbb0-f11f-f586-af6d36973673" testName="UnitTest.Basket.Application.CartControllerTest.Post_cart_success" computerName="1785163cba64" duration="00:00:00.4220000" startTime="2018-12-05T11:23:50.9378230+00:00" endTime="2018-12-05T11:23:50.9378277+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="3b941fb3-30a2-4d14-98f8-30c04df4c032" /> | ||||
|     <UnitTestResult executionId="0149f0b7-82e4-4793-909c-7a7083f75e98" testId="f7add3c9-26d7-687c-a46e-1e880e36f193" testName="UnitTest.Basket.Application.BasketWebApiTest.Post_customer_basket_success" computerName="1785163cba64" duration="00:00:00.1400000" startTime="2018-12-05T11:23:50.7725055+00:00" endTime="2018-12-05T11:23:50.7725076+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="0149f0b7-82e4-4793-909c-7a7083f75e98" /> | ||||
|     <UnitTestResult executionId="9e2c8945-5e2e-4082-a8fc-2ed57b21df87" testId="ace9ddb6-e897-b915-1e3c-4ae77eb2f0e6" testName="UnitTest.Basket.Application.BasketWebApiTest.Get_customer_basket_success" computerName="1785163cba64" duration="00:00:01.3570000" startTime="2018-12-05T11:23:50.3117877+00:00" endTime="2018-12-05T11:23:50.3117921+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="9e2c8945-5e2e-4082-a8fc-2ed57b21df87" /> | ||||
|   </Results> | ||||
|   <TestDefinitions> | ||||
|     <UnitTest name="UnitTest.Basket.Application.CartControllerTest.Post_cart_success" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="cfb3e0df-fbb0-f11f-f586-af6d36973673"> | ||||
|       <Execution id="3b941fb3-30a2-4d14-98f8-30c04df4c032" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.CartControllerTest.Post_cart_success" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.CartControllerTest.Add_to_cart_success" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="65eb92e5-3f81-c557-7b6a-e31bbb392a30"> | ||||
|       <Execution id="61af83cc-1623-40ee-8546-6cd0d6ece3cd" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.CartControllerTest.Add_to_cart_success" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.BasketWebApiTest.Get_customer_basket_success" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="ace9ddb6-e897-b915-1e3c-4ae77eb2f0e6"> | ||||
|       <Execution id="9e2c8945-5e2e-4082-a8fc-2ed57b21df87" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.BasketWebApiTest.Get_customer_basket_success" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Without_Basket_Should_Return_Bad_Request" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="f13c87f6-4345-41c1-0ceb-530a37f8c45c"> | ||||
|       <Execution id="c3451c4c-90b7-465d-b638-8c5e57a8680e" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Without_Basket_Should_Return_Bad_Request" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Wit_Basket_Should_Publish_UserCheckoutAccepted_Integration_Event" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="1be065ec-8cda-95e2-fd64-2bec276720d6"> | ||||
|       <Execution id="f5375449-ee76-4ccd-ab5d-01788538583a" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.BasketWebApiTest.Doing_Checkout_Wit_Basket_Should_Publish_UserCheckoutAccepted_Integration_Event" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.BasketWebApiTest.Post_customer_basket_success" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="f7add3c9-26d7-687c-a46e-1e880e36f193"> | ||||
|       <Execution id="0149f0b7-82e4-4793-909c-7a7083f75e98" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.BasketWebApiTest.Post_customer_basket_success" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="UnitTest.Basket.Application.CartControllerTest.Post_cart_checkout_success" storage="/src/src/services/basket/basket.unittests/bin/debug/netcoreapp2.1/basket.unittests.dll" id="33fde07d-fd90-8a31-ce7f-73d594f79232"> | ||||
|       <Execution id="37eceb9f-3500-4c62-8033-85f7322b60c1" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Basket/Basket.UnitTests/bin/Debug/netcoreapp2.1/Basket.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Basket.UnitTests" name="UnitTest.Basket.Application.CartControllerTest.Post_cart_checkout_success" /> | ||||
|     </UnitTest> | ||||
|   </TestDefinitions> | ||||
|   <TestEntries> | ||||
|     <TestEntry testId="1be065ec-8cda-95e2-fd64-2bec276720d6" executionId="f5375449-ee76-4ccd-ab5d-01788538583a" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="f13c87f6-4345-41c1-0ceb-530a37f8c45c" executionId="c3451c4c-90b7-465d-b638-8c5e57a8680e" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="33fde07d-fd90-8a31-ce7f-73d594f79232" executionId="37eceb9f-3500-4c62-8033-85f7322b60c1" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="65eb92e5-3f81-c557-7b6a-e31bbb392a30" executionId="61af83cc-1623-40ee-8546-6cd0d6ece3cd" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="cfb3e0df-fbb0-f11f-f586-af6d36973673" executionId="3b941fb3-30a2-4d14-98f8-30c04df4c032" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="f7add3c9-26d7-687c-a46e-1e880e36f193" executionId="0149f0b7-82e4-4793-909c-7a7083f75e98" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="ace9ddb6-e897-b915-1e3c-4ae77eb2f0e6" executionId="9e2c8945-5e2e-4082-a8fc-2ed57b21df87" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|   </TestEntries> | ||||
|   <TestLists> | ||||
|     <TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestList name="All Loaded Results" id="19431567-8539-422a-85d7-44ee4e166bda" /> | ||||
|   </TestLists> | ||||
|   <ResultSummary outcome="Completed"> | ||||
|     <Counters total="7" executed="7" passed="7" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" /> | ||||
|     <Output> | ||||
|       <StdOut>[xUnit.net 00:00:06.7811016]   Discovering: Basket.UnitTests[xUnit.net 00:00:07.1809374]   Discovered:  Basket.UnitTests[xUnit.net 00:00:07.1870723]   Starting:    Basket.UnitTests[xUnit.net 00:00:10.4183620]   Finished:    Basket.UnitTests</StdOut> | ||||
|     </Output> | ||||
|   </ResultSummary> | ||||
| </TestRun> | ||||
| @ -1,89 +0,0 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <TestRun id="e380625d-16e5-49cd-944f-9ec6dea3a534" name="@3773afd31eec 2018-12-05 11:24:03" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> | ||||
|   <Times creation="2018-12-05T11:24:03.2781261+00:00" queuing="2018-12-05T11:24:03.2781270+00:00" start="2018-12-05T11:23:32.0461930+00:00" finish="2018-12-05T11:24:11.2871593+00:00" /> | ||||
|   <TestSettings name="default" id="f4f579f9-05a0-4097-a3f3-f9dfa1c5fc22"> | ||||
|     <Deployment runDeploymentRoot="_3773afd31eec_2018-12-05_11_24_03" /> | ||||
|   </TestSettings> | ||||
|   <Results> | ||||
|     <UnitTestResult executionId="7627e97a-ef37-4a9b-b3bf-831d462fd492" testId="5eb4d579-2cb5-5f78-2e18-16e03c3f7383" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_filtered_catalog_items_and_response_ok_status_code" computerName="3773afd31eec" duration="00:00:00.8630000" startTime="2018-12-05T11:24:07.1639284+00:00" endTime="2018-12-05T11:24:07.1639318+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="7627e97a-ef37-4a9b-b3bf-831d462fd492" /> | ||||
|     <UnitTestResult executionId="0fee9d77-1650-4141-8ee6-d928accb140f" testId="2098f087-bc1f-3220-4cc1-67f39aa69a42" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_bad_request_status_code" computerName="3773afd31eec" duration="00:00:00.6480000" startTime="2018-12-05T11:24:08.3220470+00:00" endTime="2018-12-05T11:24:08.3220496+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="0fee9d77-1650-4141-8ee6-d928accb140f" /> | ||||
|     <UnitTestResult executionId="3de0a499-cded-43da-a582-2c4cf5e16ca9" testId="95c21500-9ed5-4391-9d7f-aebfd9190a11" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_filtered_catalog_items_and_response_ok_status_code" computerName="3773afd31eec" duration="00:00:00.8980000" startTime="2018-12-05T11:24:06.2955434+00:00" endTime="2018-12-05T11:24:06.2955469+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="3de0a499-cded-43da-a582-2c4cf5e16ca9" /> | ||||
|     <UnitTestResult executionId="267805fc-cddd-41f9-a16b-7188226aae18" testId="54a38b91-4242-ca21-909c-b632c74bc378" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_name_and_response_ok_status_code" computerName="3773afd31eec" duration="00:00:00.8000000" startTime="2018-12-05T11:24:10.3388056+00:00" endTime="2018-12-05T11:24:10.3388081+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="267805fc-cddd-41f9-a16b-7188226aae18" /> | ||||
|     <UnitTestResult executionId="a65654f5-92c9-4819-96d1-8d20e6448c22" testId="8b3ccbdd-cacd-e530-8e30-2c496c5b54d7" testName="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_brands_response_ok_status_code" computerName="3773afd31eec" duration="00:00:00.4300000" startTime="2018-12-05T11:24:10.7713399+00:00" endTime="2018-12-05T11:24:10.7713434+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="a65654f5-92c9-4819-96d1-8d20e6448c22" /> | ||||
|     <UnitTestResult executionId="7ba54f92-cc72-4be8-85d1-8b04a12b7c57" testId="0606c0fc-b6b0-1185-6890-3ad909738a66" testName="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_types_response_ok_status_code" computerName="3773afd31eec" duration="00:00:00.5540000" startTime="2018-12-05T11:24:09.5410174+00:00" endTime="2018-12-05T11:24:09.5410203+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="7ba54f92-cc72-4be8-85d1-8b04a12b7c57" /> | ||||
|     <UnitTestResult executionId="127defdc-eead-4b18-98e8-bb4a80f6d9a5" testId="78871366-7f13-cf9e-a618-4298c2fb3e63" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_ok_status_code" computerName="3773afd31eec" duration="00:00:19.2330000" startTime="2018-12-05T11:24:03.0044366+00:00" endTime="2018-12-05T11:24:03.0044408+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="127defdc-eead-4b18-98e8-bb4a80f6d9a5" /> | ||||
|     <UnitTestResult executionId="1ed13bda-347c-40c8-b22d-bf148423331a" testId="5ddae08d-62ee-6680-a77c-640b5af2e809" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalog_items_and_response_ok_status_code" computerName="3773afd31eec" duration="00:00:00.6640000" startTime="2018-12-05T11:24:08.9852118+00:00" endTime="2018-12-05T11:24:08.9852149+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="1ed13bda-347c-40c8-b22d-bf148423331a" /> | ||||
|     <UnitTestResult executionId="44e01d30-5f3a-42de-8671-1b0e542043de" testId="73afd2bb-85ac-239d-a889-a35ecbb96b02" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_not_found_status_code" computerName="3773afd31eec" duration="00:00:00.7330000" startTime="2018-12-05T11:24:05.4140150+00:00" endTime="2018-12-05T11:24:05.4140190+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="44e01d30-5f3a-42de-8671-1b0e542043de" /> | ||||
|     <UnitTestResult executionId="c24ac03b-44a6-44eb-8e62-e77254199297" testId="1b373321-94b2-88eb-53a2-36d186286a1f" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_all_catalogitems_and_response_ok_status_code" computerName="3773afd31eec" duration="00:00:00.5140000" startTime="2018-12-05T11:24:07.6804365+00:00" endTime="2018-12-05T11:24:07.6804402+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="c24ac03b-44a6-44eb-8e62-e77254199297" /> | ||||
|     <UnitTestResult executionId="188a98f4-e551-46b5-8954-81ec68261133" testId="c61af54f-3a98-9867-2720-4af9bf810653" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalogitem_by_name_and_response_ok_status_code" computerName="3773afd31eec" duration="00:00:01.5720000" startTime="2018-12-05T11:24:04.6656166+00:00" endTime="2018-12-05T11:24:04.6656202+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="188a98f4-e551-46b5-8954-81ec68261133" /> | ||||
|   </Results> | ||||
|   <TestDefinitions> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_bad_request_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="2098f087-bc1f-3220-4cc1-67f39aa69a42"> | ||||
|       <Execution id="0fee9d77-1650-4141-8ee6-d928accb140f" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_bad_request_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_all_catalogitems_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="1b373321-94b2-88eb-53a2-36d186286a1f"> | ||||
|       <Execution id="c24ac03b-44a6-44eb-8e62-e77254199297" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_all_catalogitems_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="78871366-7f13-cf9e-a618-4298c2fb3e63"> | ||||
|       <Execution id="127defdc-eead-4b18-98e8-bb4a80f6d9a5" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_name_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="54a38b91-4242-ca21-909c-b632c74bc378"> | ||||
|       <Execution id="267805fc-cddd-41f9-a16b-7188226aae18" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_name_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalog_items_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="5ddae08d-62ee-6680-a77c-640b5af2e809"> | ||||
|       <Execution id="1ed13bda-347c-40c8-b22d-bf148423331a" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalog_items_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_brands_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="8b3ccbdd-cacd-e530-8e30-2c496c5b54d7"> | ||||
|       <Execution id="a65654f5-92c9-4819-96d1-8d20e6448c22" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_brands_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_not_found_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="73afd2bb-85ac-239d-a889-a35ecbb96b02"> | ||||
|       <Execution id="44e01d30-5f3a-42de-8671-1b0e542043de" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_not_found_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_filtered_catalog_items_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="95c21500-9ed5-4391-9d7f-aebfd9190a11"> | ||||
|       <Execution id="3de0a499-cded-43da-a582-2c4cf5e16ca9" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_filtered_catalog_items_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_types_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="0606c0fc-b6b0-1185-6890-3ad909738a66"> | ||||
|       <Execution id="7ba54f92-cc72-4be8-85d1-8b04a12b7c57" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_types_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_filtered_catalog_items_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="5eb4d579-2cb5-5f78-2e18-16e03c3f7383"> | ||||
|       <Execution id="7627e97a-ef37-4a9b-b3bf-831d462fd492" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_filtered_catalog_items_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalogitem_by_name_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="c61af54f-3a98-9867-2720-4af9bf810653"> | ||||
|       <Execution id="188a98f4-e551-46b5-8954-81ec68261133" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalogitem_by_name_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|   </TestDefinitions> | ||||
|   <TestEntries> | ||||
|     <TestEntry testId="5eb4d579-2cb5-5f78-2e18-16e03c3f7383" executionId="7627e97a-ef37-4a9b-b3bf-831d462fd492" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="2098f087-bc1f-3220-4cc1-67f39aa69a42" executionId="0fee9d77-1650-4141-8ee6-d928accb140f" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="95c21500-9ed5-4391-9d7f-aebfd9190a11" executionId="3de0a499-cded-43da-a582-2c4cf5e16ca9" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="54a38b91-4242-ca21-909c-b632c74bc378" executionId="267805fc-cddd-41f9-a16b-7188226aae18" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="8b3ccbdd-cacd-e530-8e30-2c496c5b54d7" executionId="a65654f5-92c9-4819-96d1-8d20e6448c22" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="0606c0fc-b6b0-1185-6890-3ad909738a66" executionId="7ba54f92-cc72-4be8-85d1-8b04a12b7c57" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="78871366-7f13-cf9e-a618-4298c2fb3e63" executionId="127defdc-eead-4b18-98e8-bb4a80f6d9a5" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="5ddae08d-62ee-6680-a77c-640b5af2e809" executionId="1ed13bda-347c-40c8-b22d-bf148423331a" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="73afd2bb-85ac-239d-a889-a35ecbb96b02" executionId="44e01d30-5f3a-42de-8671-1b0e542043de" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="1b373321-94b2-88eb-53a2-36d186286a1f" executionId="c24ac03b-44a6-44eb-8e62-e77254199297" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="c61af54f-3a98-9867-2720-4af9bf810653" executionId="188a98f4-e551-46b5-8954-81ec68261133" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|   </TestEntries> | ||||
|   <TestLists> | ||||
|     <TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestList name="All Loaded Results" id="19431567-8539-422a-85d7-44ee4e166bda" /> | ||||
|   </TestLists> | ||||
|   <ResultSummary outcome="Completed"> | ||||
|     <Counters total="11" executed="11" passed="11" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" /> | ||||
|     <Output> | ||||
|       <StdOut>[xUnit.net 00:00:06.0723374]   Discovering: Catalog.FunctionalTests[xUnit.net 00:00:06.4361995]   Discovered:  Catalog.FunctionalTests[xUnit.net 00:00:06.4447894]   Starting:    Catalog.FunctionalTests[xUnit.net 00:00:34.5834045]   Finished:    Catalog.FunctionalTests</StdOut> | ||||
|     </Output> | ||||
|   </ResultSummary> | ||||
| </TestRun> | ||||
| @ -1,89 +0,0 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <TestRun id="aca6211e-f6da-4bba-bf41-a276c78d1443" name="@3a7e7ef6aa8e 2018-12-05 11:24:02" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> | ||||
|   <Times creation="2018-12-05T11:24:02.5864478+00:00" queuing="2018-12-05T11:24:02.5864485+00:00" start="2018-12-05T11:23:32.1458050+00:00" finish="2018-12-05T11:24:11.1044674+00:00" /> | ||||
|   <TestSettings name="default" id="6b291d29-0315-494b-9db2-50bee5d38134"> | ||||
|     <Deployment runDeploymentRoot="_3a7e7ef6aa8e_2018-12-05_11_24_02" /> | ||||
|   </TestSettings> | ||||
|   <Results> | ||||
|     <UnitTestResult executionId="ed3644e1-b21b-46aa-a9d4-bddc3fd92c0d" testId="5eb4d579-2cb5-5f78-2e18-16e03c3f7383" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_filtered_catalog_items_and_response_ok_status_code" computerName="3a7e7ef6aa8e" duration="00:00:00.6620000" startTime="2018-12-05T11:24:06.3308316+00:00" endTime="2018-12-05T11:24:06.3308351+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="ed3644e1-b21b-46aa-a9d4-bddc3fd92c0d" /> | ||||
|     <UnitTestResult executionId="eb67cab7-a711-48d1-9697-eff25b27e037" testId="c61af54f-3a98-9867-2720-4af9bf810653" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalogitem_by_name_and_response_ok_status_code" computerName="3a7e7ef6aa8e" duration="00:00:01.5160000" startTime="2018-12-05T11:24:03.8893359+00:00" endTime="2018-12-05T11:24:03.8893387+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="eb67cab7-a711-48d1-9697-eff25b27e037" /> | ||||
|     <UnitTestResult executionId="d2b2bc96-e96b-44fe-b852-16a137d3f630" testId="5ddae08d-62ee-6680-a77c-640b5af2e809" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalog_items_and_response_ok_status_code" computerName="3a7e7ef6aa8e" duration="00:00:00.6630000" startTime="2018-12-05T11:24:08.3377755+00:00" endTime="2018-12-05T11:24:08.3377790+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="d2b2bc96-e96b-44fe-b852-16a137d3f630" /> | ||||
|     <UnitTestResult executionId="4ac1e35c-b3b9-4882-b67b-ef08b65bc29b" testId="95c21500-9ed5-4391-9d7f-aebfd9190a11" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_filtered_catalog_items_and_response_ok_status_code" computerName="3a7e7ef6aa8e" duration="00:00:01.0900000" startTime="2018-12-05T11:24:05.6700321+00:00" endTime="2018-12-05T11:24:05.6700348+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="4ac1e35c-b3b9-4882-b67b-ef08b65bc29b" /> | ||||
|     <UnitTestResult executionId="7d7a7d65-6854-4466-a37d-15347956f783" testId="2098f087-bc1f-3220-4cc1-67f39aa69a42" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_bad_request_status_code" computerName="3a7e7ef6aa8e" duration="00:00:00.3800000" startTime="2018-12-05T11:24:07.6681963+00:00" endTime="2018-12-05T11:24:07.6681996+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="7d7a7d65-6854-4466-a37d-15347956f783" /> | ||||
|     <UnitTestResult executionId="fa563e70-2fc9-44b8-b818-85c371e50bc2" testId="54a38b91-4242-ca21-909c-b632c74bc378" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_name_and_response_ok_status_code" computerName="3a7e7ef6aa8e" duration="00:00:00.7230000" startTime="2018-12-05T11:24:09.8641893+00:00" endTime="2018-12-05T11:24:09.8641921+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="fa563e70-2fc9-44b8-b818-85c371e50bc2" /> | ||||
|     <UnitTestResult executionId="b06b8d43-2696-4904-bc38-3feb3363ff3d" testId="0606c0fc-b6b0-1185-6890-3ad909738a66" testName="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_types_response_ok_status_code" computerName="3a7e7ef6aa8e" duration="00:00:00.8070000" startTime="2018-12-05T11:24:09.1399724+00:00" endTime="2018-12-05T11:24:09.1399751+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="b06b8d43-2696-4904-bc38-3feb3363ff3d" /> | ||||
|     <UnitTestResult executionId="93160bfd-9e96-4e09-bd7f-5487be6d0b35" testId="1b373321-94b2-88eb-53a2-36d186286a1f" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_all_catalogitems_and_response_ok_status_code" computerName="3a7e7ef6aa8e" duration="00:00:00.9560000" startTime="2018-12-05T11:24:07.2880184+00:00" endTime="2018-12-05T11:24:07.2880216+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="93160bfd-9e96-4e09-bd7f-5487be6d0b35" /> | ||||
|     <UnitTestResult executionId="5ecb8d84-de7b-483c-b965-eb7d887e41b1" testId="73afd2bb-85ac-239d-a889-a35ecbb96b02" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_not_found_status_code" computerName="3a7e7ef6aa8e" duration="00:00:00.6590000" startTime="2018-12-05T11:24:04.5775407+00:00" endTime="2018-12-05T11:24:04.5775450+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="5ecb8d84-de7b-483c-b965-eb7d887e41b1" /> | ||||
|     <UnitTestResult executionId="a8110557-5a9f-448a-aae5-55a27cbda816" testId="78871366-7f13-cf9e-a618-4298c2fb3e63" testName="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_ok_status_code" computerName="3a7e7ef6aa8e" duration="00:00:18.3120000" startTime="2018-12-05T11:24:02.3211973+00:00" endTime="2018-12-05T11:24:02.3212009+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="a8110557-5a9f-448a-aae5-55a27cbda816" /> | ||||
|     <UnitTestResult executionId="d33a437b-4f8a-48f3-94a1-e8faae50e3dc" testId="8b3ccbdd-cacd-e530-8e30-2c496c5b54d7" testName="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_brands_response_ok_status_code" computerName="3a7e7ef6aa8e" duration="00:00:00.7120000" startTime="2018-12-05T11:24:10.5742881+00:00" endTime="2018-12-05T11:24:10.5742915+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="d33a437b-4f8a-48f3-94a1-e8faae50e3dc" /> | ||||
|   </Results> | ||||
|   <TestDefinitions> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_bad_request_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="2098f087-bc1f-3220-4cc1-67f39aa69a42"> | ||||
|       <Execution id="7d7a7d65-6854-4466-a37d-15347956f783" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_bad_request_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_all_catalogitems_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="1b373321-94b2-88eb-53a2-36d186286a1f"> | ||||
|       <Execution id="93160bfd-9e96-4e09-bd7f-5487be6d0b35" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_all_catalogitems_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="78871366-7f13-cf9e-a618-4298c2fb3e63"> | ||||
|       <Execution id="a8110557-5a9f-448a-aae5-55a27cbda816" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_name_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="54a38b91-4242-ca21-909c-b632c74bc378"> | ||||
|       <Execution id="fa563e70-2fc9-44b8-b818-85c371e50bc2" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_name_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalog_items_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="5ddae08d-62ee-6680-a77c-640b5af2e809"> | ||||
|       <Execution id="d2b2bc96-e96b-44fe-b852-16a137d3f630" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalog_items_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_brands_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="8b3ccbdd-cacd-e530-8e30-2c496c5b54d7"> | ||||
|       <Execution id="d33a437b-4f8a-48f3-94a1-e8faae50e3dc" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_brands_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_not_found_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="73afd2bb-85ac-239d-a889-a35ecbb96b02"> | ||||
|       <Execution id="5ecb8d84-de7b-483c-b965-eb7d887e41b1" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_catalogitem_by_id_and_response_not_found_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_filtered_catalog_items_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="95c21500-9ed5-4391-9d7f-aebfd9190a11"> | ||||
|       <Execution id="4ac1e35c-b3b9-4882-b67b-ef08b65bc29b" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_filtered_catalog_items_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_types_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="0606c0fc-b6b0-1185-6890-3ad909738a66"> | ||||
|       <Execution id="b06b8d43-2696-4904-bc38-3feb3363ff3d" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_catalog_types_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_filtered_catalog_items_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="5eb4d579-2cb5-5f78-2e18-16e03c3f7383"> | ||||
|       <Execution id="ed3644e1-b21b-46aa-a9d4-bddc3fd92c0d" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_filtered_catalog_items_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalogitem_by_name_and_response_ok_status_code" storage="/src/src/services/catalog/catalog.functionaltests/bin/debug/netcoreapp2.1/catalog.functionaltests.dll" id="c61af54f-3a98-9867-2720-4af9bf810653"> | ||||
|       <Execution id="eb67cab7-a711-48d1-9697-eff25b27e037" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Catalog/Catalog.FunctionalTests/bin/Debug/netcoreapp2.1/Catalog.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Catalog.FunctionalTests" name="Catalog.FunctionalTests.CatalogScenarios.Get_get_paginated_catalogitem_by_name_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|   </TestDefinitions> | ||||
|   <TestEntries> | ||||
|     <TestEntry testId="5eb4d579-2cb5-5f78-2e18-16e03c3f7383" executionId="ed3644e1-b21b-46aa-a9d4-bddc3fd92c0d" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="c61af54f-3a98-9867-2720-4af9bf810653" executionId="eb67cab7-a711-48d1-9697-eff25b27e037" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="5ddae08d-62ee-6680-a77c-640b5af2e809" executionId="d2b2bc96-e96b-44fe-b852-16a137d3f630" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="95c21500-9ed5-4391-9d7f-aebfd9190a11" executionId="4ac1e35c-b3b9-4882-b67b-ef08b65bc29b" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="2098f087-bc1f-3220-4cc1-67f39aa69a42" executionId="7d7a7d65-6854-4466-a37d-15347956f783" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="54a38b91-4242-ca21-909c-b632c74bc378" executionId="fa563e70-2fc9-44b8-b818-85c371e50bc2" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="0606c0fc-b6b0-1185-6890-3ad909738a66" executionId="b06b8d43-2696-4904-bc38-3feb3363ff3d" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="1b373321-94b2-88eb-53a2-36d186286a1f" executionId="93160bfd-9e96-4e09-bd7f-5487be6d0b35" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="73afd2bb-85ac-239d-a889-a35ecbb96b02" executionId="5ecb8d84-de7b-483c-b965-eb7d887e41b1" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="78871366-7f13-cf9e-a618-4298c2fb3e63" executionId="a8110557-5a9f-448a-aae5-55a27cbda816" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="8b3ccbdd-cacd-e530-8e30-2c496c5b54d7" executionId="d33a437b-4f8a-48f3-94a1-e8faae50e3dc" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|   </TestEntries> | ||||
|   <TestLists> | ||||
|     <TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestList name="All Loaded Results" id="19431567-8539-422a-85d7-44ee4e166bda" /> | ||||
|   </TestLists> | ||||
|   <ResultSummary outcome="Completed"> | ||||
|     <Counters total="11" executed="11" passed="11" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" /> | ||||
|     <Output> | ||||
|       <StdOut>[xUnit.net 00:00:06.6354381]   Discovering: Catalog.FunctionalTests[xUnit.net 00:00:07.0010904]   Discovered:  Catalog.FunctionalTests[xUnit.net 00:00:07.0749761]   Starting:    Catalog.FunctionalTests[xUnit.net 00:00:34.9063753]   Finished:    Catalog.FunctionalTests</StdOut> | ||||
|     </Output> | ||||
|   </ResultSummary> | ||||
| </TestRun> | ||||
| @ -1,47 +0,0 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <TestRun id="3a97bc8e-e891-4670-ac89-22922c2d9e4e" name="@02643924d223 2018-12-05 11:23:54" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> | ||||
|   <Times creation="2018-12-05T11:23:54.0687389+00:00" queuing="2018-12-05T11:23:54.0687396+00:00" start="2018-12-05T11:23:22.5634952+00:00" finish="2018-12-05T11:23:56.0218928+00:00" /> | ||||
|   <TestSettings name="default" id="ba79b184-d368-4cf9-975b-e7ea85cae4ba"> | ||||
|     <Deployment runDeploymentRoot="_02643924d223_2018-12-05_11_23_54" /> | ||||
|   </TestSettings> | ||||
|   <Results> | ||||
|     <UnitTestResult executionId="84e4488c-e6c0-4fd4-b5e6-396e7865516e" testId="0a4f15a8-74cd-fd17-7e39-b261ab50b0e3" testName="Locations.FunctionalTests.LocationsScenarios.Get_all_locations_response_ok_status_code" computerName="02643924d223" duration="00:00:00.3200000" startTime="2018-12-05T11:23:55.5197180+00:00" endTime="2018-12-05T11:23:55.5197222+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="84e4488c-e6c0-4fd4-b5e6-396e7865516e" /> | ||||
|     <UnitTestResult executionId="e37faea8-a757-4a58-b244-c4005b4501db" testId="9f640d81-acae-dd4a-697b-85843aab785c" testName="Locations.FunctionalTests.LocationsScenarios.Set_new_user_Washington_location_response_ok_status_code" computerName="02643924d223" duration="00:00:16.5720000" startTime="2018-12-05T11:23:53.8003308+00:00" endTime="2018-12-05T11:23:53.8003348+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="e37faea8-a757-4a58-b244-c4005b4501db" /> | ||||
|     <UnitTestResult executionId="3823a765-a270-4120-9cd3-11144abd2828" testId="adcf9752-4680-18b6-26e1-869d93a37efb" testName="Locations.FunctionalTests.LocationsScenarios.Set_new_user_readmond_location_response_ok_status_code" computerName="02643924d223" duration="00:00:00.8560000" startTime="2018-12-05T11:23:54.6895078+00:00" endTime="2018-12-05T11:23:54.6895118+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="3823a765-a270-4120-9cd3-11144abd2828" /> | ||||
|     <UnitTestResult executionId="a92e857d-8ad2-4a34-85d2-fcf2492c8597" testId="78effe18-892e-ff71-3706-701d8f4770b2" testName="Locations.FunctionalTests.LocationsScenarios.Set_new_user_seattle_location_response_ok_status_code" computerName="02643924d223" duration="00:00:00.5060000" startTime="2018-12-05T11:23:55.1956204+00:00" endTime="2018-12-05T11:23:55.1956236+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="a92e857d-8ad2-4a34-85d2-fcf2492c8597" /> | ||||
|   </Results> | ||||
|   <TestDefinitions> | ||||
|     <UnitTest name="Locations.FunctionalTests.LocationsScenarios.Set_new_user_Washington_location_response_ok_status_code" storage="/src/src/services/location/locations.functionaltests/bin/debug/netcoreapp2.1/locations.functionaltests.dll" id="9f640d81-acae-dd4a-697b-85843aab785c"> | ||||
|       <Execution id="e37faea8-a757-4a58-b244-c4005b4501db" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Location/Locations.FunctionalTests/bin/Debug/netcoreapp2.1/Locations.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Locations.FunctionalTests" name="Locations.FunctionalTests.LocationsScenarios.Set_new_user_Washington_location_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Locations.FunctionalTests.LocationsScenarios.Set_new_user_seattle_location_response_ok_status_code" storage="/src/src/services/location/locations.functionaltests/bin/debug/netcoreapp2.1/locations.functionaltests.dll" id="78effe18-892e-ff71-3706-701d8f4770b2"> | ||||
|       <Execution id="a92e857d-8ad2-4a34-85d2-fcf2492c8597" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Location/Locations.FunctionalTests/bin/Debug/netcoreapp2.1/Locations.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Locations.FunctionalTests" name="Locations.FunctionalTests.LocationsScenarios.Set_new_user_seattle_location_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Locations.FunctionalTests.LocationsScenarios.Set_new_user_readmond_location_response_ok_status_code" storage="/src/src/services/location/locations.functionaltests/bin/debug/netcoreapp2.1/locations.functionaltests.dll" id="adcf9752-4680-18b6-26e1-869d93a37efb"> | ||||
|       <Execution id="3823a765-a270-4120-9cd3-11144abd2828" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Location/Locations.FunctionalTests/bin/Debug/netcoreapp2.1/Locations.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Locations.FunctionalTests" name="Locations.FunctionalTests.LocationsScenarios.Set_new_user_readmond_location_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Locations.FunctionalTests.LocationsScenarios.Get_all_locations_response_ok_status_code" storage="/src/src/services/location/locations.functionaltests/bin/debug/netcoreapp2.1/locations.functionaltests.dll" id="0a4f15a8-74cd-fd17-7e39-b261ab50b0e3"> | ||||
|       <Execution id="84e4488c-e6c0-4fd4-b5e6-396e7865516e" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Location/Locations.FunctionalTests/bin/Debug/netcoreapp2.1/Locations.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Locations.FunctionalTests" name="Locations.FunctionalTests.LocationsScenarios.Get_all_locations_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|   </TestDefinitions> | ||||
|   <TestEntries> | ||||
|     <TestEntry testId="0a4f15a8-74cd-fd17-7e39-b261ab50b0e3" executionId="84e4488c-e6c0-4fd4-b5e6-396e7865516e" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="9f640d81-acae-dd4a-697b-85843aab785c" executionId="e37faea8-a757-4a58-b244-c4005b4501db" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="adcf9752-4680-18b6-26e1-869d93a37efb" executionId="3823a765-a270-4120-9cd3-11144abd2828" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="78effe18-892e-ff71-3706-701d8f4770b2" executionId="a92e857d-8ad2-4a34-85d2-fcf2492c8597" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|   </TestEntries> | ||||
|   <TestLists> | ||||
|     <TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestList name="All Loaded Results" id="19431567-8539-422a-85d7-44ee4e166bda" /> | ||||
|   </TestLists> | ||||
|   <ResultSummary outcome="Completed"> | ||||
|     <Counters total="4" executed="4" passed="4" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" /> | ||||
|     <Output> | ||||
|       <StdOut>[xUnit.net 00:00:07.7665792]   Discovering: Locations.FunctionalTests[xUnit.net 00:00:08.1972548]   Discovered:  Locations.FunctionalTests[xUnit.net 00:00:08.2137816]   Starting:    Locations.FunctionalTests[xUnit.net 00:00:27.6429580]   Finished:    Locations.FunctionalTests</StdOut> | ||||
|     </Output> | ||||
|   </ResultSummary> | ||||
| </TestRun> | ||||
| @ -1,77 +0,0 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <TestRun id="38518ece-89c2-4acd-a0fd-656b1e307ada" name="@e469457725ad 2018-11-29 09:07:47" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> | ||||
|   <Times creation="2018-11-29T09:07:47.0107904+00:00" queuing="2018-11-29T09:07:47.0107911+00:00" start="2018-11-29T09:07:40.0471464+00:00" finish="2018-11-29T09:07:48.5378505+00:00" /> | ||||
|   <TestSettings name="default" id="65290455-25be-41ac-ae76-614d242990ab"> | ||||
|     <Deployment runDeploymentRoot="_e469457725ad_2018-11-29_09_07_47" /> | ||||
|   </TestSettings> | ||||
|   <Results> | ||||
|     <UnitTestResult executionId="9079d887-1d03-4651-bbad-465e5ecbe247" testId="e0c885da-83ce-b300-fe65-41c3a5c5e28f" testName="Marketing.FunctionalTests.CampaignScenarios.Post_add_new_campaign_and_response_ok_status_code" computerName="e469457725ad" duration="00:00:00.2420000" startTime="2018-11-29T09:07:47.7537302+00:00" endTime="2018-11-29T09:07:47.7537324+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="9079d887-1d03-4651-bbad-465e5ecbe247" /> | ||||
|     <UnitTestResult executionId="bac3bbc1-e916-4001-bfc1-4a2b4d578faf" testId="6d91b76f-00a6-9e69-4202-48e6be1280e9" testName="Marketing.FunctionalTests.CampaignScenarios.Delete_delete_campaign_and_response_not_content_status_code" computerName="e469457725ad" duration="00:00:00.5630000" startTime="2018-11-29T09:07:47.5120976+00:00" endTime="2018-11-29T09:07:47.5120997+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="bac3bbc1-e916-4001-bfc1-4a2b4d578faf" /> | ||||
|     <UnitTestResult executionId="89f0c88d-f352-4fd5-85cd-4dc346996fea" testId="348d43c5-3f68-e1a0-fd14-f5a7c75fe894" testName="Marketing.FunctionalTests.CampaignScenarios.Put_update_campaign_and_response_not_content_status_code" computerName="e469457725ad" duration="00:00:00.2430000" startTime="2018-11-29T09:07:48.3667923+00:00" endTime="2018-11-29T09:07:48.3667945+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="89f0c88d-f352-4fd5-85cd-4dc346996fea" /> | ||||
|     <UnitTestResult executionId="e4910f38-9f2b-4de5-a3cf-cdefde7af357" testId="b465ea84-27b5-101d-9b64-ecc018001e3e" testName="Marketing.FunctionalTests.UserLocationRoleScenarios.Post_add_new_user_location_rule_and_response_ok_status_code" computerName="e469457725ad" duration="00:00:04.2610000" startTime="2018-11-29T09:07:46.9693733+00:00" endTime="2018-11-29T09:07:46.9693747+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="e4910f38-9f2b-4de5-a3cf-cdefde7af357" /> | ||||
|     <UnitTestResult executionId="a4d3c593-a9cb-4f37-a5b4-3404d5496594" testId="ac8ded60-54fb-4bef-36a0-5ca98eec474b" testName="Marketing.FunctionalTests.UserLocationRoleScenarios.Delete_delete_user_location_role_and_response_not_content_status_code" computerName="e469457725ad" duration="00:00:00.3710000" startTime="2018-11-29T09:07:47.3200667+00:00" endTime="2018-11-29T09:07:47.3200687+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="a4d3c593-a9cb-4f37-a5b4-3404d5496594" /> | ||||
|     <UnitTestResult executionId="d66b1878-5d11-4e5e-a78b-0ab518db2f52" testId="fe5e0cf5-7915-7cc0-9822-1ea6a9002829" testName="Marketing.FunctionalTests.CampaignScenarios.Get_get_campaign_by_id_and_response_ok_status_code" computerName="e469457725ad" duration="00:00:00.1260000" startTime="2018-11-29T09:07:48.1241966+00:00" endTime="2018-11-29T09:07:48.1241985+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="d66b1878-5d11-4e5e-a78b-0ab518db2f52" /> | ||||
|     <UnitTestResult executionId="9eacbc3d-b815-4fd8-a2cf-c9e173057a86" testId="b65e6fb5-507d-2399-aedb-c39bbd53dd13" testName="Marketing.FunctionalTests.CampaignScenarios.Get_get_all_campaigns_and_response_ok_status_code" computerName="e469457725ad" duration="00:00:00.2440000" startTime="2018-11-29T09:07:47.9976626+00:00" endTime="2018-11-29T09:07:47.9976648+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="9eacbc3d-b815-4fd8-a2cf-c9e173057a86" /> | ||||
|     <UnitTestResult executionId="559fc908-d6b4-45c0-b2cc-1ec5ebf98a10" testId="42f7ecfc-c654-ab9c-0945-cfba3b51b47e" testName="Marketing.FunctionalTests.UserLocationRoleScenarios.Get_get_all_user_location_rules_by_campaignId_and_response_ok_status_code" computerName="e469457725ad" duration="00:00:00.4090000" startTime="2018-11-29T09:07:47.7294469+00:00" endTime="2018-11-29T09:07:47.7294490+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="559fc908-d6b4-45c0-b2cc-1ec5ebf98a10" /> | ||||
|     <UnitTestResult executionId="3d7664b0-c660-41c2-bd10-6241c8bf48bb" testId="cc442a4b-50c1-22da-f021-97ab6639da3e" testName="Marketing.FunctionalTests.CampaignScenarios.Get_get_campaign_by_id_and_response_not_found_status_code" computerName="e469457725ad" duration="00:00:04.2610000" startTime="2018-11-29T09:07:46.9468875+00:00" endTime="2018-11-29T09:07:46.9468901+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="3d7664b0-c660-41c2-bd10-6241c8bf48bb" /> | ||||
|   </Results> | ||||
|   <TestDefinitions> | ||||
|     <UnitTest name="Marketing.FunctionalTests.UserLocationRoleScenarios.Get_get_all_user_location_rules_by_campaignId_and_response_ok_status_code" storage="/src/src/services/marketing/marketing.functionaltests/bin/debug/netcoreapp2.1/marketing.functionaltests.dll" id="42f7ecfc-c654-ab9c-0945-cfba3b51b47e"> | ||||
|       <Execution id="559fc908-d6b4-45c0-b2cc-1ec5ebf98a10" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Marketing/Marketing.FunctionalTests/bin/Debug/netcoreapp2.1/Marketing.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Marketing.FunctionalTests" name="Marketing.FunctionalTests.UserLocationRoleScenarios.Get_get_all_user_location_rules_by_campaignId_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Marketing.FunctionalTests.CampaignScenarios.Get_get_all_campaigns_and_response_ok_status_code" storage="/src/src/services/marketing/marketing.functionaltests/bin/debug/netcoreapp2.1/marketing.functionaltests.dll" id="b65e6fb5-507d-2399-aedb-c39bbd53dd13"> | ||||
|       <Execution id="9eacbc3d-b815-4fd8-a2cf-c9e173057a86" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Marketing/Marketing.FunctionalTests/bin/Debug/netcoreapp2.1/Marketing.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Marketing.FunctionalTests" name="Marketing.FunctionalTests.CampaignScenarios.Get_get_all_campaigns_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Marketing.FunctionalTests.CampaignScenarios.Post_add_new_campaign_and_response_ok_status_code" storage="/src/src/services/marketing/marketing.functionaltests/bin/debug/netcoreapp2.1/marketing.functionaltests.dll" id="e0c885da-83ce-b300-fe65-41c3a5c5e28f"> | ||||
|       <Execution id="9079d887-1d03-4651-bbad-465e5ecbe247" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Marketing/Marketing.FunctionalTests/bin/Debug/netcoreapp2.1/Marketing.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Marketing.FunctionalTests" name="Marketing.FunctionalTests.CampaignScenarios.Post_add_new_campaign_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Marketing.FunctionalTests.CampaignScenarios.Get_get_campaign_by_id_and_response_not_found_status_code" storage="/src/src/services/marketing/marketing.functionaltests/bin/debug/netcoreapp2.1/marketing.functionaltests.dll" id="cc442a4b-50c1-22da-f021-97ab6639da3e"> | ||||
|       <Execution id="3d7664b0-c660-41c2-bd10-6241c8bf48bb" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Marketing/Marketing.FunctionalTests/bin/Debug/netcoreapp2.1/Marketing.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Marketing.FunctionalTests" name="Marketing.FunctionalTests.CampaignScenarios.Get_get_campaign_by_id_and_response_not_found_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Marketing.FunctionalTests.UserLocationRoleScenarios.Post_add_new_user_location_rule_and_response_ok_status_code" storage="/src/src/services/marketing/marketing.functionaltests/bin/debug/netcoreapp2.1/marketing.functionaltests.dll" id="b465ea84-27b5-101d-9b64-ecc018001e3e"> | ||||
|       <Execution id="e4910f38-9f2b-4de5-a3cf-cdefde7af357" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Marketing/Marketing.FunctionalTests/bin/Debug/netcoreapp2.1/Marketing.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Marketing.FunctionalTests" name="Marketing.FunctionalTests.UserLocationRoleScenarios.Post_add_new_user_location_rule_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Marketing.FunctionalTests.CampaignScenarios.Get_get_campaign_by_id_and_response_ok_status_code" storage="/src/src/services/marketing/marketing.functionaltests/bin/debug/netcoreapp2.1/marketing.functionaltests.dll" id="fe5e0cf5-7915-7cc0-9822-1ea6a9002829"> | ||||
|       <Execution id="d66b1878-5d11-4e5e-a78b-0ab518db2f52" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Marketing/Marketing.FunctionalTests/bin/Debug/netcoreapp2.1/Marketing.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Marketing.FunctionalTests" name="Marketing.FunctionalTests.CampaignScenarios.Get_get_campaign_by_id_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Marketing.FunctionalTests.UserLocationRoleScenarios.Delete_delete_user_location_role_and_response_not_content_status_code" storage="/src/src/services/marketing/marketing.functionaltests/bin/debug/netcoreapp2.1/marketing.functionaltests.dll" id="ac8ded60-54fb-4bef-36a0-5ca98eec474b"> | ||||
|       <Execution id="a4d3c593-a9cb-4f37-a5b4-3404d5496594" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Marketing/Marketing.FunctionalTests/bin/Debug/netcoreapp2.1/Marketing.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Marketing.FunctionalTests" name="Marketing.FunctionalTests.UserLocationRoleScenarios.Delete_delete_user_location_role_and_response_not_content_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Marketing.FunctionalTests.CampaignScenarios.Put_update_campaign_and_response_not_content_status_code" storage="/src/src/services/marketing/marketing.functionaltests/bin/debug/netcoreapp2.1/marketing.functionaltests.dll" id="348d43c5-3f68-e1a0-fd14-f5a7c75fe894"> | ||||
|       <Execution id="89f0c88d-f352-4fd5-85cd-4dc346996fea" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Marketing/Marketing.FunctionalTests/bin/Debug/netcoreapp2.1/Marketing.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Marketing.FunctionalTests" name="Marketing.FunctionalTests.CampaignScenarios.Put_update_campaign_and_response_not_content_status_code" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Marketing.FunctionalTests.CampaignScenarios.Delete_delete_campaign_and_response_not_content_status_code" storage="/src/src/services/marketing/marketing.functionaltests/bin/debug/netcoreapp2.1/marketing.functionaltests.dll" id="6d91b76f-00a6-9e69-4202-48e6be1280e9"> | ||||
|       <Execution id="bac3bbc1-e916-4001-bfc1-4a2b4d578faf" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Marketing/Marketing.FunctionalTests/bin/Debug/netcoreapp2.1/Marketing.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Marketing.FunctionalTests" name="Marketing.FunctionalTests.CampaignScenarios.Delete_delete_campaign_and_response_not_content_status_code" /> | ||||
|     </UnitTest> | ||||
|   </TestDefinitions> | ||||
|   <TestEntries> | ||||
|     <TestEntry testId="e0c885da-83ce-b300-fe65-41c3a5c5e28f" executionId="9079d887-1d03-4651-bbad-465e5ecbe247" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="6d91b76f-00a6-9e69-4202-48e6be1280e9" executionId="bac3bbc1-e916-4001-bfc1-4a2b4d578faf" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="348d43c5-3f68-e1a0-fd14-f5a7c75fe894" executionId="89f0c88d-f352-4fd5-85cd-4dc346996fea" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="b465ea84-27b5-101d-9b64-ecc018001e3e" executionId="e4910f38-9f2b-4de5-a3cf-cdefde7af357" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="ac8ded60-54fb-4bef-36a0-5ca98eec474b" executionId="a4d3c593-a9cb-4f37-a5b4-3404d5496594" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="fe5e0cf5-7915-7cc0-9822-1ea6a9002829" executionId="d66b1878-5d11-4e5e-a78b-0ab518db2f52" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="b65e6fb5-507d-2399-aedb-c39bbd53dd13" executionId="9eacbc3d-b815-4fd8-a2cf-c9e173057a86" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="42f7ecfc-c654-ab9c-0945-cfba3b51b47e" executionId="559fc908-d6b4-45c0-b2cc-1ec5ebf98a10" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="cc442a4b-50c1-22da-f021-97ab6639da3e" executionId="3d7664b0-c660-41c2-bd10-6241c8bf48bb" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|   </TestEntries> | ||||
|   <TestLists> | ||||
|     <TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestList name="All Loaded Results" id="19431567-8539-422a-85d7-44ee4e166bda" /> | ||||
|   </TestLists> | ||||
|   <ResultSummary outcome="Completed"> | ||||
|     <Counters total="9" executed="9" passed="9" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" /> | ||||
|     <Output> | ||||
|       <StdOut>[xUnit.net 00:00:01.0963036]   Discovering: Marketing.FunctionalTests[xUnit.net 00:00:01.1452772]   Discovered:  Marketing.FunctionalTests[xUnit.net 00:00:01.1494340]   Starting:    Marketing.FunctionalTests[xUnit.net 00:00:06.9663675]   Finished:    Marketing.FunctionalTests</StdOut> | ||||
|     </Output> | ||||
|   </ResultSummary> | ||||
| </TestRun> | ||||
| @ -1,41 +0,0 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <TestRun id="f2920e88-61ef-4a6b-aeb1-22e22e9c820a" name="@3aa4f0b77384 2018-12-05 11:24:14" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> | ||||
|   <Times creation="2018-12-05T11:24:14.6310887+00:00" queuing="2018-12-05T11:24:14.6310894+00:00" start="2018-12-05T11:23:51.8232085+00:00" finish="2018-12-05T11:24:16.1186394+00:00" /> | ||||
|   <TestSettings name="default" id="1fb5b13d-2c79-4e35-9f5b-7e948c6a4a6e"> | ||||
|     <Deployment runDeploymentRoot="_3aa4f0b77384_2018-12-05_11_24_14" /> | ||||
|   </TestSettings> | ||||
|   <Results> | ||||
|     <UnitTestResult executionId="6776e376-4d25-4edb-ae03-414a233ca4ad" testId="01ee4a4c-4b61-ec68-b1de-10796cc68607" testName="Ordering.FunctionalTests.OrderingScenarios.Ship_order_no_order_created_bad_request_response" computerName="3aa4f0b77384" duration="00:00:00.5480000" startTime="2018-12-05T11:24:15.8390084+00:00" endTime="2018-12-05T11:24:15.8390117+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="6776e376-4d25-4edb-ae03-414a233ca4ad" /> | ||||
|     <UnitTestResult executionId="74045a0b-4d4a-4b22-87e1-78326dd52a88" testId="37ee8be5-0517-c735-d707-a8dcd6ba7613" testName="Ordering.FunctionalTests.OrderingScenarios.Get_get_all_stored_orders_and_response_ok_status_code" computerName="3aa4f0b77384" duration="00:00:00.7200000" startTime="2018-12-05T11:24:15.2884525+00:00" endTime="2018-12-05T11:24:15.2884560+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="74045a0b-4d4a-4b22-87e1-78326dd52a88" /> | ||||
|     <UnitTestResult executionId="006ece7e-25eb-4250-a460-400c28a819f5" testId="8c1a2207-d19c-0b78-dd96-df617732922c" testName="Ordering.FunctionalTests.OrderingScenarios.Cancel_order_no_order_created_bad_request_response" computerName="3aa4f0b77384" duration="00:00:12.5450000" startTime="2018-12-05T11:24:14.5454681+00:00" endTime="2018-12-05T11:24:14.5454717+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="006ece7e-25eb-4250-a460-400c28a819f5" /> | ||||
|   </Results> | ||||
|   <TestDefinitions> | ||||
|     <UnitTest name="Ordering.FunctionalTests.OrderingScenarios.Ship_order_no_order_created_bad_request_response" storage="/src/src/services/ordering/ordering.functionaltests/bin/debug/netcoreapp2.1/ordering.functionaltests.dll" id="01ee4a4c-4b61-ec68-b1de-10796cc68607"> | ||||
|       <Execution id="6776e376-4d25-4edb-ae03-414a233ca4ad" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Ordering/Ordering.FunctionalTests/bin/Debug/netcoreapp2.1/Ordering.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Ordering.FunctionalTests" name="Ordering.FunctionalTests.OrderingScenarios.Ship_order_no_order_created_bad_request_response" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Ordering.FunctionalTests.OrderingScenarios.Cancel_order_no_order_created_bad_request_response" storage="/src/src/services/ordering/ordering.functionaltests/bin/debug/netcoreapp2.1/ordering.functionaltests.dll" id="8c1a2207-d19c-0b78-dd96-df617732922c"> | ||||
|       <Execution id="006ece7e-25eb-4250-a460-400c28a819f5" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Ordering/Ordering.FunctionalTests/bin/Debug/netcoreapp2.1/Ordering.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Ordering.FunctionalTests" name="Ordering.FunctionalTests.OrderingScenarios.Cancel_order_no_order_created_bad_request_response" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Ordering.FunctionalTests.OrderingScenarios.Get_get_all_stored_orders_and_response_ok_status_code" storage="/src/src/services/ordering/ordering.functionaltests/bin/debug/netcoreapp2.1/ordering.functionaltests.dll" id="37ee8be5-0517-c735-d707-a8dcd6ba7613"> | ||||
|       <Execution id="74045a0b-4d4a-4b22-87e1-78326dd52a88" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Ordering/Ordering.FunctionalTests/bin/Debug/netcoreapp2.1/Ordering.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Ordering.FunctionalTests" name="Ordering.FunctionalTests.OrderingScenarios.Get_get_all_stored_orders_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|   </TestDefinitions> | ||||
|   <TestEntries> | ||||
|     <TestEntry testId="01ee4a4c-4b61-ec68-b1de-10796cc68607" executionId="6776e376-4d25-4edb-ae03-414a233ca4ad" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="37ee8be5-0517-c735-d707-a8dcd6ba7613" executionId="74045a0b-4d4a-4b22-87e1-78326dd52a88" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="8c1a2207-d19c-0b78-dd96-df617732922c" executionId="006ece7e-25eb-4250-a460-400c28a819f5" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|   </TestEntries> | ||||
|   <TestLists> | ||||
|     <TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestList name="All Loaded Results" id="19431567-8539-422a-85d7-44ee4e166bda" /> | ||||
|   </TestLists> | ||||
|   <ResultSummary outcome="Completed"> | ||||
|     <Counters total="3" executed="3" passed="3" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" /> | ||||
|     <Output> | ||||
|       <StdOut>[xUnit.net 00:00:05.2039980]   Discovering: Ordering.FunctionalTests[xUnit.net 00:00:05.4802527]   Discovered:  Ordering.FunctionalTests[xUnit.net 00:00:05.5249888]   Starting:    Ordering.FunctionalTests[xUnit.net 00:00:20.1396674]   Finished:    Ordering.FunctionalTests</StdOut> | ||||
|     </Output> | ||||
|   </ResultSummary> | ||||
| </TestRun> | ||||
| @ -1,41 +0,0 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <TestRun id="2c3747dd-fc05-4392-a731-de2f32a62eef" name="@2b67e7387bb9 2018-12-05 11:24:14" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> | ||||
|   <Times creation="2018-12-05T11:24:14.5102211+00:00" queuing="2018-12-05T11:24:14.5102222+00:00" start="2018-12-05T11:23:50.0598477+00:00" finish="2018-12-05T11:24:15.8957360+00:00" /> | ||||
|   <TestSettings name="default" id="cda9c3c1-e5e4-4684-8b96-7eed6663bec0"> | ||||
|     <Deployment runDeploymentRoot="_2b67e7387bb9_2018-12-05_11_24_14" /> | ||||
|   </TestSettings> | ||||
|   <Results> | ||||
|     <UnitTestResult executionId="1d45c572-59de-4d7f-8f9c-d69b5dadbf02" testId="8c1a2207-d19c-0b78-dd96-df617732922c" testName="Ordering.FunctionalTests.OrderingScenarios.Cancel_order_no_order_created_bad_request_response" computerName="2b67e7387bb9" duration="00:00:13.3130000" startTime="2018-12-05T11:24:14.4257017+00:00" endTime="2018-12-05T11:24:14.4257056+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="1d45c572-59de-4d7f-8f9c-d69b5dadbf02" /> | ||||
|     <UnitTestResult executionId="9e229357-8b76-4569-914b-6030866ee316" testId="37ee8be5-0517-c735-d707-a8dcd6ba7613" testName="Ordering.FunctionalTests.OrderingScenarios.Get_get_all_stored_orders_and_response_ok_status_code" computerName="2b67e7387bb9" duration="00:00:00.6970000" startTime="2018-12-05T11:24:15.1362290+00:00" endTime="2018-12-05T11:24:15.1362337+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="9e229357-8b76-4569-914b-6030866ee316" /> | ||||
|     <UnitTestResult executionId="1e2ff621-c28c-49de-bfe7-d890ac94d9e6" testId="01ee4a4c-4b61-ec68-b1de-10796cc68607" testName="Ordering.FunctionalTests.OrderingScenarios.Ship_order_no_order_created_bad_request_response" computerName="2b67e7387bb9" duration="00:00:00.4950000" startTime="2018-12-05T11:24:15.6429216+00:00" endTime="2018-12-05T11:24:15.6429254+00:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="1e2ff621-c28c-49de-bfe7-d890ac94d9e6" /> | ||||
|   </Results> | ||||
|   <TestDefinitions> | ||||
|     <UnitTest name="Ordering.FunctionalTests.OrderingScenarios.Ship_order_no_order_created_bad_request_response" storage="/src/src/services/ordering/ordering.functionaltests/bin/debug/netcoreapp2.1/ordering.functionaltests.dll" id="01ee4a4c-4b61-ec68-b1de-10796cc68607"> | ||||
|       <Execution id="1e2ff621-c28c-49de-bfe7-d890ac94d9e6" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Ordering/Ordering.FunctionalTests/bin/Debug/netcoreapp2.1/Ordering.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Ordering.FunctionalTests" name="Ordering.FunctionalTests.OrderingScenarios.Ship_order_no_order_created_bad_request_response" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Ordering.FunctionalTests.OrderingScenarios.Cancel_order_no_order_created_bad_request_response" storage="/src/src/services/ordering/ordering.functionaltests/bin/debug/netcoreapp2.1/ordering.functionaltests.dll" id="8c1a2207-d19c-0b78-dd96-df617732922c"> | ||||
|       <Execution id="1d45c572-59de-4d7f-8f9c-d69b5dadbf02" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Ordering/Ordering.FunctionalTests/bin/Debug/netcoreapp2.1/Ordering.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Ordering.FunctionalTests" name="Ordering.FunctionalTests.OrderingScenarios.Cancel_order_no_order_created_bad_request_response" /> | ||||
|     </UnitTest> | ||||
|     <UnitTest name="Ordering.FunctionalTests.OrderingScenarios.Get_get_all_stored_orders_and_response_ok_status_code" storage="/src/src/services/ordering/ordering.functionaltests/bin/debug/netcoreapp2.1/ordering.functionaltests.dll" id="37ee8be5-0517-c735-d707-a8dcd6ba7613"> | ||||
|       <Execution id="9e229357-8b76-4569-914b-6030866ee316" /> | ||||
|       <TestMethod codeBase="/src/src/Services/Ordering/Ordering.FunctionalTests/bin/Debug/netcoreapp2.1/Ordering.FunctionalTests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="Ordering.FunctionalTests" name="Ordering.FunctionalTests.OrderingScenarios.Get_get_all_stored_orders_and_response_ok_status_code" /> | ||||
|     </UnitTest> | ||||
|   </TestDefinitions> | ||||
|   <TestEntries> | ||||
|     <TestEntry testId="8c1a2207-d19c-0b78-dd96-df617732922c" executionId="1d45c572-59de-4d7f-8f9c-d69b5dadbf02" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="37ee8be5-0517-c735-d707-a8dcd6ba7613" executionId="9e229357-8b76-4569-914b-6030866ee316" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestEntry testId="01ee4a4c-4b61-ec68-b1de-10796cc68607" executionId="1e2ff621-c28c-49de-bfe7-d890ac94d9e6" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|   </TestEntries> | ||||
|   <TestLists> | ||||
|     <TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" /> | ||||
|     <TestList name="All Loaded Results" id="19431567-8539-422a-85d7-44ee4e166bda" /> | ||||
|   </TestLists> | ||||
|   <ResultSummary outcome="Completed"> | ||||
|     <Counters total="3" executed="3" passed="3" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" /> | ||||
|     <Output> | ||||
|       <StdOut>[xUnit.net 00:00:05.4257955]   Discovering: Ordering.FunctionalTests[xUnit.net 00:00:05.9560169]   Discovered:  Ordering.FunctionalTests[xUnit.net 00:00:05.9845906]   Starting:    Ordering.FunctionalTests[xUnit.net 00:00:21.2769127]   Finished:    Ordering.FunctionalTests</StdOut> | ||||
|     </Output> | ||||
|   </ResultSummary> | ||||
| </TestRun> | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user