diff --git a/docker-compose-tests.override.yml b/docker-compose-tests.override.yml new file mode 100644 index 000000000..8705e703f --- /dev/null +++ b/docker-compose-tests.override.yml @@ -0,0 +1,247 @@ +version: '3.4' + +services: + rabbitmq-test: + ports: + - "15672:15672" + - "5672:5672" + + sql-data-test: + environment: + - SA_PASSWORD=Pass@word + - ACCEPT_EULA=Y + ports: + - "5433:1433" + + nosql-data-test: + ports: + - "27017:27017" + + basket-data-test: + ports: + - "6379:6379" + + identity-api-test: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=http://0.0.0.0:80 + - SpaClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5104 + - XamarinCallback=http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5105/xamarincallback + - ConnectionString=${ESHOP_AZURE_IDENTITY_DB:-Server=sql-data-test;Database=Microsoft.eShopOnContainers.Service.IdentityDb;User Id=sa;Password=Pass@word} + - MvcClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5100 + - LocationApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5109 + - MarketingApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5110 + - BasketApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5103 + - OrderingApiClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5102 + - MobileShoppingAggClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5120 + - WebShoppingAggClient=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5121 + - UseCustomizationData=True + - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} + - OrchestratorType=${ORCHESTRATOR_TYPE} + ports: + - "5105:80" + + basket-api-test: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=http://0.0.0.0:80 + - ConnectionString=${ESHOP_AZURE_REDIS_BASKET_DB:-basket-data-test} + - identityUrl=http://identity-api + - IdentityUrlExternal=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 + - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq-test} + - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - AzureServiceBusEnabled=False + - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} + - OrchestratorType=${ORCHESTRATOR_TYPE} + - UseLoadTest=${USE_LOADTEST:-False} + ports: + - "5103:80" + entrypoint: + - dotnet + - test + - --logger + - trx;LogFileName=/tests/basket-test-results.xml + + basket-api-unit-test: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=http://0.0.0.0:80 + - ConnectionString=${ESHOP_AZURE_REDIS_BASKET_DB:-basket-data-test} + - identityUrl=http://identity-api + - IdentityUrlExternal=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 + - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq-test} + - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - AzureServiceBusEnabled=False + - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} + - OrchestratorType=${ORCHESTRATOR_TYPE} + - UseLoadTest=${USE_LOADTEST:-False} + ports: + - "5113:80" + entrypoint: + - dotnet + - test + - --logger + - trx;LogFileName=/tests/basket-unit-test-results.xml + + catalog-api-test: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=http://0.0.0.0:80 + - ConnectionString=${ESHOP_AZURE_CATALOG_DB:-Server=sql-data-test;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word} + - PicBaseUrl=${ESHOP_AZURE_STORAGE_CATALOG_URL:-http://localhost:5202/api/v1/c/catalog/items/[0]/pic/} + - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq-test} + - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - AzureStorageAccountName=${ESHOP_AZURE_STORAGE_CATALOG_NAME} + - AzureStorageAccountKey=${ESHOP_AZURE_STORAGE_CATALOG_KEY} + - UseCustomizationData=True + - AzureServiceBusEnabled=False + - AzureStorageEnabled=False + - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} + - OrchestratorType=${ORCHESTRATOR_TYPE} + ports: + - "5101:80" + entrypoint: + - dotnet + - test + - --logger + - trx;LogFileName=/tests/catalog-test-results.xml + + catalog-api-unit-test: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=http://0.0.0.0:80 + - ConnectionString=${ESHOP_AZURE_CATALOG_DB:-Server=sql-data-test;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word} + - PicBaseUrl=${ESHOP_AZURE_STORAGE_CATALOG_URL:-http://localhost:5202/api/v1/c/catalog/items/[0]/pic/} + - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq-test} + - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - AzureStorageAccountName=${ESHOP_AZURE_STORAGE_CATALOG_NAME} + - AzureStorageAccountKey=${ESHOP_AZURE_STORAGE_CATALOG_KEY} + - UseCustomizationData=True + - AzureServiceBusEnabled=False + - AzureStorageEnabled=False + - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} + - OrchestratorType=${ORCHESTRATOR_TYPE} + ports: + - "5191:80" + entrypoint: + - dotnet + - test + - --logger + - trx;LogFileName=/tests/catalog-unit-test-results.xml + + ordering-api-test: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=http://0.0.0.0:80 + - ConnectionString=${ESHOP_AZURE_ORDERING_DB:-Server=sql-data-test;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word} + - identityUrl=http://identity-api + - IdentityUrlExternal=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 + - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq-test} + - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - UseCustomizationData=True + - AzureServiceBusEnabled=False + - CheckUpdateTime=30000 + - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} + - OrchestratorType=${ORCHESTRATOR_TYPE} + - UseLoadTest=${USE_LOADTEST:-False} + ports: + - "5102:80" + entrypoint: + - dotnet + - test + - --logger + - trx;LogFileName=/tests/ordering-test-results.xml + + ordering-api-unit-test: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=http://0.0.0.0:80 + - ConnectionString=${ESHOP_AZURE_ORDERING_DB:-Server=sql-data-test;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word} + - identityUrl=http://identity-api + - IdentityUrlExternal=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 + - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq-test} + - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - UseCustomizationData=True + - AzureServiceBusEnabled=False + - CheckUpdateTime=30000 + - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} + - OrchestratorType=${ORCHESTRATOR_TYPE} + - UseLoadTest=${USE_LOADTEST:-False} + ports: + - "5112:80" + entrypoint: + - dotnet + - test + - --logger + - trx;LogFileName=/tests/ordering-unit-test-results.xml + + marketing-api-test: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=http://0.0.0.0:80 + - ConnectionString=${ESHOP_AZURE_MARKETING_DB:-Server=sql-data-test;Database=Microsoft.eShopOnContainers.Services.MarketingDb;User Id=sa;Password=Pass@word} + - MongoConnectionString=${ESHOP_AZURE_COSMOSDB:-mongodb://nosql-data-test} + - MongoDatabase=MarketingDb + - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq-test} + - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - identityUrl=http://identity-api + - IdentityUrlExternal=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 + - CampaignDetailFunctionUri=${ESHOP_AZUREFUNC_CAMPAIGN_DETAILS_URI} + - PicBaseUrl=${ESHOP_AZURE_STORAGE_MARKETING_URL:-http://localhost:5110/api/v1/campaigns/[0]/pic/} + - AzureStorageAccountName=${ESHOP_AZURE_STORAGE_MARKETING_NAME} + - AzureStorageAccountKey=${ESHOP_AZURE_STORAGE_MARKETING_KEY} + - AzureServiceBusEnabled=False + - AzureStorageEnabled=False + - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} + - OrchestratorType=${ORCHESTRATOR_TYPE} + - UseLoadTest=${USE_LOADTEST:-False} + ports: + - "5110:80" + entrypoint: + - dotnet + - test + - --logger + - trx;LogFileName=/tests/marketing-test-results.xml + + payment-api-test: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=http://0.0.0.0:80 + - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq-test} + - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - AzureServiceBusEnabled=False + - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} + - OrchestratorType=${ORCHESTRATOR_TYPE} + ports: + - "5108:80" + + locations-api-test: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=http://0.0.0.0:80 + - ConnectionString=${ESHOP_AZURE_COSMOSDB:-mongodb://nosql-data-test} + - Database=LocationsDb + - identityUrl=http://identity-api + - IdentityUrlExternal=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5105 + - EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq-test} + - EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME} + - EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD} + - AzureServiceBusEnabled=False + - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} + - OrchestratorType=${ORCHESTRATOR_TYPE} + - UseLoadTest=${USE_LOADTEST:-False} + ports: + - "5109:80" + entrypoint: + - dotnet + - test + - --logger + - trx;LogFileName=/tests/locations-test-results.xml \ No newline at end of file diff --git a/docker-compose-tests.yml b/docker-compose-tests.yml new file mode 100644 index 000000000..d05f7e27e --- /dev/null +++ b/docker-compose-tests.yml @@ -0,0 +1,130 @@ +version: '3.4' + +services: + rabbitmq-test: + image: rabbitmq:3-management-alpine + + basket-data-test: + image: redis:alpine + + sql-data-test: + image: microsoft/mssql-server-linux:2017-latest + + nosql-data-test: + image: mongo + + identity-api-test: + image: eshop/identity-api-test:${TAG:-latest} + build: + context: . + dockerfile: src/Services/Identity/Identity.API/Dockerfile + depends_on: + - sql-data-test + + basket-api-test: + image: eshop/basket-api-test:${TAG:-latest} + build: + context: . + dockerfile: src/Services/Basket/Basket.API/Dockerfile + target: functionaltest + depends_on: + - basket-data-test + - identity-api-test + - rabbitmq-test + volumes: + - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests + + basket-api-unit-test: + image: eshop/basket-api-test:${TAG:-latest} + build: + context: . + dockerfile: src/Services/Basket/Basket.API/Dockerfile + target: unittest + depends_on: + - basket-data-test + - identity-api-test + - rabbitmq-test + volumes: + - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests + + catalog-api-test: + image: eshop/catalog-api-test:${TAG:-latest} + build: + context: . + dockerfile: src/Services/Catalog/Catalog.API/Dockerfile + target: functionaltest + depends_on: + - sql-data-test + - rabbitmq-test + volumes: + - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests + + catalog-api-unit-test: + image: eshop/catalog-api-test:${TAG:-latest} + build: + context: . + dockerfile: src/Services/Catalog/Catalog.API/Dockerfile + target: unittest + depends_on: + - sql-data-test + - rabbitmq-test + volumes: + - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests + + ordering-api-test: + image: eshop/ordering-api-test:${TAG:-latest} + build: + context: . + dockerfile: src/Services/Ordering/Ordering.API/Dockerfile + target: functionaltest + depends_on: + - sql-data-test + - rabbitmq-test + volumes: + - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests + + ordering-api-unit-test: + image: eshop/ordering-api-test:${TAG:-latest} + build: + context: . + dockerfile: src/Services/Ordering/Ordering.API/Dockerfile + target: unittest + depends_on: + - sql-data-test + - rabbitmq-test + volumes: + - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests + + marketing-api-test: + image: eshop/marketing-api-test:${TAG:-latest} + build: + context: . + dockerfile: src/Services/Marketing/Marketing.API/Dockerfile + target: functionaltest + depends_on: + - sql-data-test + - nosql-data-test + - identity-api-test + - rabbitmq-test + volumes: + - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests + + payment-api-test: + image: eshop/payment-api-test:${TAG:-latest} + build: + context: . + dockerfile: src/Services/Payment/Payment.API/Dockerfile + depends_on: + - rabbitmq-test + + locations-api-test: + image: eshop/locations-api-test:${TAG:-latest} + build: + context: . + dockerfile: src/Services/Location/Locations.API/Dockerfile + target: functionaltest + depends_on: + - nosql-data-test + - rabbitmq-test + volumes: + - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests \ No newline at end of file diff --git a/docs/NET-Microservices-Architecture-for-Containerized-NET-Applications-(Microsoft-eBook)-v2.1.02.pdf b/docs/NET-Microservices-Architecture-for-Containerized-NET-Applications-(Microsoft-eBook)-v2.1.02.pdf new file mode 100644 index 000000000..0bd88ca3e Binary files /dev/null and b/docs/NET-Microservices-Architecture-for-Containerized-NET-Applications-(Microsoft-eBook)-v2.1.02.pdf differ diff --git a/docs/NET-Microservices-Architecture-for-Containerized-NET-Applications-(Microsoft-eBook).pdf b/docs/NET-Microservices-Architecture-for-Containerized-NET-Applications-(Microsoft-eBook).pdf index 0bd88ca3e..0540236c9 100644 Binary files a/docs/NET-Microservices-Architecture-for-Containerized-NET-Applications-(Microsoft-eBook).pdf and b/docs/NET-Microservices-Architecture-for-Containerized-NET-Applications-(Microsoft-eBook).pdf differ diff --git a/src/Services/Basket/Basket.API/Dockerfile b/src/Services/Basket/Basket.API/Dockerfile index 7027cfc2d..71f85bb59 100644 --- a/src/Services/Basket/Basket.API/Dockerfile +++ b/src/Services/Basket/Basket.API/Dockerfile @@ -9,6 +9,12 @@ 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 + +FROM build as unittest +WORKDIR /src/src/Services/Basket/Basket.UnitTests + FROM build AS publish RUN dotnet publish --no-restore -c Release -o /app diff --git a/src/Services/Basket/Basket.FunctionalTests/RedisBasketRepositoryTests.cs b/src/Services/Basket/Basket.FunctionalTests/RedisBasketRepositoryTests.cs index 123967558..84d41aa1a 100644 --- a/src/Services/Basket/Basket.FunctionalTests/RedisBasketRepositoryTests.cs +++ b/src/Services/Basket/Basket.FunctionalTests/RedisBasketRepositoryTests.cs @@ -1,5 +1,7 @@ -using Microsoft.eShopOnContainers.Services.Basket.API; +using Basket.FunctionalTests.Base; +using Microsoft.eShopOnContainers.Services.Basket.API; using Microsoft.eShopOnContainers.Services.Basket.API.Model; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Moq; @@ -13,54 +15,60 @@ using Xunit; namespace Basket.FunctionalTests { public class RedisBasketRepositoryTests + : BasketScenarioBase { - private Mock> _optionsMock; - - public RedisBasketRepositoryTests() - { - _optionsMock = new Mock>(); - } [Fact] public async Task UpdateBasket_return_and_add_basket() { - var redisBasketRepository = BuildBasketRepository(); - - var basket = await redisBasketRepository.UpdateBasketAsync(new CustomerBasket("customerId") + using (var server = CreateServer()) { - BuyerId = "buyerId", - Items = BuildBasketItems() - }); + var redis = server.Host.Services.GetRequiredService(); + + var redisBasketRepository = BuildBasketRepository(redis); - Assert.NotNull(basket); - Assert.Single(basket.Items); + var basket = await redisBasketRepository.UpdateBasketAsync(new CustomerBasket("customerId") + { + BuyerId = "buyerId", + Items = BuildBasketItems() + }); + + Assert.NotNull(basket); + Assert.Single(basket.Items); + } + + } [Fact] public async Task Delete_Basket_return_null() { - var redisBasketRepository = BuildBasketRepository(); - var basket = await redisBasketRepository.UpdateBasketAsync(new CustomerBasket("customerId") + using (var server = CreateServer()) { - BuyerId = "buyerId", - Items = BuildBasketItems() - }); + var redis = server.Host.Services.GetRequiredService(); + + var redisBasketRepository = BuildBasketRepository(redis); + + var basket = await redisBasketRepository.UpdateBasketAsync(new CustomerBasket("customerId") + { + BuyerId = "buyerId", + Items = BuildBasketItems() + }); - var deleteResult = await redisBasketRepository.DeleteBasketAsync("buyerId"); + var deleteResult = await redisBasketRepository.DeleteBasketAsync("buyerId"); - var result = await redisBasketRepository.GetBasketAsync(basket.BuyerId); + var result = await redisBasketRepository.GetBasketAsync(basket.BuyerId); - Assert.True(deleteResult); - Assert.Null(result); + Assert.True(deleteResult); + Assert.Null(result); + } } - RedisBasketRepository BuildBasketRepository() + RedisBasketRepository BuildBasketRepository(ConnectionMultiplexer connMux) { var loggerFactory = new LoggerFactory(); - var configuration = ConfigurationOptions.Parse("127.0.0.1", true); - configuration.ResolveDns = true; - return new RedisBasketRepository(loggerFactory, ConnectionMultiplexer.Connect(configuration)); + return new RedisBasketRepository(loggerFactory, connMux); } List BuildBasketItems() diff --git a/src/Services/Catalog/Catalog.API/Dockerfile b/src/Services/Catalog/Catalog.API/Dockerfile index 4cbc9c8aa..1b0d05e57 100644 --- a/src/Services/Catalog/Catalog.API/Dockerfile +++ b/src/Services/Catalog/Catalog.API/Dockerfile @@ -9,6 +9,12 @@ WORKDIR /src/src/Services/Catalog/Catalog.API RUN dotnet restore -nowarn:msb3202,nu1503 RUN dotnet build --no-restore -c Release -o /app +FROM build as unittest +WORKDIR /src/src/Services/Catalog/Catalog.UnitTests + +FROM build as functionaltest +WORKDIR /src/src/Services/Catalog/Catalog.FunctionalTests + FROM build AS publish RUN dotnet publish --no-restore -c Release -o /app diff --git a/src/Services/Location/Locations.API/Dockerfile b/src/Services/Location/Locations.API/Dockerfile index 12ac0e442..ef9bbbc81 100644 --- a/src/Services/Location/Locations.API/Dockerfile +++ b/src/Services/Location/Locations.API/Dockerfile @@ -9,6 +9,9 @@ WORKDIR /src/src/Services/Location/Locations.API RUN dotnet restore -nowarn:msb3202,nu1503 RUN dotnet build --no-restore -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 diff --git a/src/Services/Marketing/Marketing.API/Dockerfile b/src/Services/Marketing/Marketing.API/Dockerfile index 75d698bfe..d047becea 100644 --- a/src/Services/Marketing/Marketing.API/Dockerfile +++ b/src/Services/Marketing/Marketing.API/Dockerfile @@ -9,6 +9,9 @@ WORKDIR /src/src/Services/Marketing/Marketing.API RUN dotnet restore -nowarn:msb3202,nu1503 RUN dotnet build --no-restore -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 diff --git a/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs b/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs index b2b49b92e..7085e27b5 100644 --- a/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs +++ b/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs @@ -27,7 +27,7 @@ namespace Marketing.FunctionalTests [Fact] public async Task Get_get_campaign_by_id_and_response_ok_status_code() { - var campaignId = 1; + var campaignId = 81; using (var server = CreateServer()) { var response = await server.CreateClient() diff --git a/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs b/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs index 196c1b459..fa734bbdf 100644 --- a/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs +++ b/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs @@ -28,7 +28,7 @@ namespace Marketing.FunctionalTests [Fact] public async Task Post_add_new_user_location_rule_and_response_ok_status_code() { - var campaignId = 1; + var campaignId = 81; 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 = 1; + var campaignId = 81; using (var server = CreateServer()) { diff --git a/src/Services/Ordering/Ordering.API/Dockerfile b/src/Services/Ordering/Ordering.API/Dockerfile index 78c153641..759278bc4 100644 --- a/src/Services/Ordering/Ordering.API/Dockerfile +++ b/src/Services/Ordering/Ordering.API/Dockerfile @@ -9,6 +9,12 @@ 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 + +FROM build as unittest +WORKDIR /src/src/Services/Ordering/Ordering.UnitTests + FROM build AS publish RUN dotnet publish --no-restore -c Release -o /app diff --git a/src/Web/WebSPA/package-lock.json b/src/Web/WebSPA/package-lock.json index a254c3cd5..9c3e3a021 100644 --- a/src/Web/WebSPA/package-lock.json +++ b/src/Web/WebSPA/package-lock.json @@ -3047,12 +3047,6 @@ "is-obj": "^1.0.0" } }, - "duplexer": { - "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -3456,22 +3450,6 @@ "es5-ext": "~0.10.14" } }, - "event-stream": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", - "integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "flatmap-stream": "^0.1.0", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" - } - }, "eventemitter3": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", @@ -3932,12 +3910,6 @@ "write": "^0.2.1" } }, - "flatmap-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.0.tgz", - "integrity": "sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA==", - "dev": true - }, "flush-write-stream": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", @@ -4012,12 +3984,6 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -6379,12 +6345,6 @@ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, - "map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", - "dev": true - }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -6936,16 +6896,16 @@ } }, "nodemon": { - "version": "1.18.4", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.4.tgz", - "integrity": "sha512-hyK6vl65IPnky/ee+D3IWvVGgJa/m3No2/Xc/3wanS6Ce1MWjCzH6NnhPJ/vZM+6JFym16jtHx51lmCMB9HDtg==", + "version": "1.18.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.7.tgz", + "integrity": "sha512-xuC1V0F5EcEyKQ1VhHYD13owznQbUw29JKvZ8bVH7TmuvVNHvvbp9pLgE4PjTMRJVe0pJ8fGRvwR2nMiosIsPQ==", "dev": true, "requires": { - "chokidar": "^2.0.2", + "chokidar": "^2.0.4", "debug": "^3.1.0", "ignore-by-default": "^1.0.1", "minimatch": "^3.0.4", - "pstree.remy": "^1.1.0", + "pstree.remy": "^1.1.2", "semver": "^5.5.0", "supports-color": "^5.2.0", "touch": "^3.1.0", @@ -7046,12 +7006,12 @@ } }, "npm-watch": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.4.0.tgz", - "integrity": "sha512-ekAUqXjQHSM3pAEB2kSHUzzU6i3Auucv8RwCz4sdNfLXVeysaXKSKbod3nIp+p3jb0u9mwDDdZ55uHPqMaWSdQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.5.0.tgz", + "integrity": "sha512-Rww9iNlmsVhcpUTDoKfUlbfmEtTZ3T3gUZBW/VjuL4ct/nwV0XlwBDOxR0ECJ/cLF8PF1wPVa/IrinI6K5ECQQ==", "dev": true, "requires": { - "nodemon": "^1.12.1", + "nodemon": "^1.18.7", "through2": "^2.0.0" } }, @@ -7481,15 +7441,6 @@ "pify": "^3.0.0" } }, - "pause-stream": { - "version": "0.0.11", - "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "requires": { - "through": "~2.3" - } - }, "pbkdf2": { "version": "3.0.16", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", @@ -7840,15 +7791,6 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, - "ps-tree": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", - "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", - "dev": true, - "requires": { - "event-stream": "~3.3.0" - } - }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -7861,13 +7803,10 @@ "dev": true }, "pstree.remy": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.0.tgz", - "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", - "dev": true, - "requires": { - "ps-tree": "^1.1.0" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.2.tgz", + "integrity": "sha512-vL6NLxNHzkNTjGJUpMm5PLC+94/0tTlC1vkP9bdU0pOHih+EujMjgMTwfZopZvHWRFbqJ5Y73OMoau50PewDDA==", + "dev": true }, "public-encrypt": { "version": "4.0.2", @@ -9222,15 +9161,6 @@ } } }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "requires": { - "through": "2" - } - }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -9323,16 +9253,6 @@ "readable-stream": "^2.0.2" } }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - }, "stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -10962,9 +10882,9 @@ } }, "widest-line": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", - "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", "dev": true, "requires": { "string-width": "^2.1.1" diff --git a/src/Web/WebSPA/package.json b/src/Web/WebSPA/package.json index c8e54d4e6..a844c99e1 100644 --- a/src/Web/WebSPA/package.json +++ b/src/Web/WebSPA/package.json @@ -70,6 +70,6 @@ "typedoc": "0.12.0", "typescript": "2.9.2", "url-loader": "1.1.1", - "npm-watch": "0.4.0" + "npm-watch": "0.5.0" } } diff --git a/tests-results/basket-test-results.xml b/tests-results/basket-test-results.xml new file mode 100644 index 000000000..933ed1b5b --- /dev/null +++ b/tests-results/basket-test-results.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [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 + + + \ No newline at end of file diff --git a/tests-results/basket-unit-test-results.xml b/tests-results/basket-unit-test-results.xml new file mode 100644 index 000000000..c7a6cd004 --- /dev/null +++ b/tests-results/basket-unit-test-results.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [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 + + + \ No newline at end of file diff --git a/tests-results/catalog-test-results.xml b/tests-results/catalog-test-results.xml new file mode 100644 index 000000000..73efaeb8f --- /dev/null +++ b/tests-results/catalog-test-results.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [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 + + + \ No newline at end of file diff --git a/tests-results/catalog-unit-test-results.xml b/tests-results/catalog-unit-test-results.xml new file mode 100644 index 000000000..2bc65d5c9 --- /dev/null +++ b/tests-results/catalog-unit-test-results.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [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 + + + \ No newline at end of file diff --git a/tests-results/locations-test-results.xml b/tests-results/locations-test-results.xml new file mode 100644 index 000000000..c8b5e6b82 --- /dev/null +++ b/tests-results/locations-test-results.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [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 + + + \ No newline at end of file diff --git a/tests-results/marketing-test-results.xml b/tests-results/marketing-test-results.xml new file mode 100644 index 000000000..5545febcc --- /dev/null +++ b/tests-results/marketing-test-results.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [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 + + + \ No newline at end of file diff --git a/tests-results/ordering-test-results.xml b/tests-results/ordering-test-results.xml new file mode 100644 index 000000000..231975d56 --- /dev/null +++ b/tests-results/ordering-test-results.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [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 + + + \ No newline at end of file diff --git a/tests-results/ordering-unit-test-results.xml b/tests-results/ordering-unit-test-results.xml new file mode 100644 index 000000000..c9f85a60f --- /dev/null +++ b/tests-results/ordering-unit-test-results.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [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 + + + \ No newline at end of file