diff --git a/eShopOnContainers-ServicesAndWebApps.sln b/eShopOnContainers-ServicesAndWebApps.sln index 423994cc9..fef0f1306 100644 --- a/eShopOnContainers-ServicesAndWebApps.sln +++ b/eShopOnContainers-ServicesAndWebApps.sln @@ -42,14 +42,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebMVC", "src\Web\WebMVC\We EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.Infrastructure", "src\Services\Ordering\Ordering.Infrastructure\Ordering.Infrastructure.csproj", "{95F1F07C-4D92-4742-BD07-E5B805AAB651}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTest", "test\Services\UnitTest\UnitTest.csproj", "{7796F5D8-31FC-45A4-B673-19DE5BA194CF}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Identity.API", "src\Services\Identity\Identity.API\Identity.API.csproj", "{A579E108-5445-403D-A407-339AC4D1611B}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebSPA", "src\Web\WebSPA\WebSPA.csproj", "{F16E3C6A-1C94-4EAB-BE91-099618060B68}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntegrationTests", "test\Services\IntegrationTests\IntegrationTests.csproj", "{5B810E3D-112E-4857-B197-F09D2FD41E27}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunctionalTests", "test\Services\FunctionalTests\FunctionalTests.csproj", "{CFE2FACB-4538-4B99-8A10-306F3882952D}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BuildingBlocks", "BuildingBlocks", "{DB0EFB20-B024-4E5E-A75C-52143C131D25}" @@ -68,10 +64,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.Health EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebStatus", "src\Web\WebStatus\WebStatus.csproj", "{C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Payment", "Payment", "{022E145D-1593-47EE-9608-8E323D3C63F5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.API", "src\Services\Payment\Payment.API\Payment.API.csproj", "{1A01AF82-6FCB-464C-B39C-F127AEBD315D}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.HealthChecks", "src\BuildingBlocks\HealthChecks\src\Microsoft.AspNetCore.HealthChecks\Microsoft.AspNetCore.HealthChecks.csproj", "{22A0F9C1-2D4A-4107-95B7-8459E6688BC5}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Extensions.HealthChecks.SqlServer", "src\BuildingBlocks\HealthChecks\src\Microsoft.Extensions.HealthChecks.SqlServer\Microsoft.Extensions.HealthChecks.SqlServer.csproj", "{4BD76717-3102-4969-8C2C-BAAA3F0263B6}" @@ -128,17 +120,21 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.BackgroundTasks", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.SignalrHub", "src\Services\Ordering\Ordering.SignalrHub\Ordering.SignalrHub.csproj", "{E1D2B260-4E7F-4A88-BC13-9910F7C44623}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.FunctionalTests", "test\Ordering.FunctionalTests\Ordering.FunctionalTests.csproj", "{022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Basket.UnitTests", "src\Services\Basket\Basket.UnitTests\Basket.UnitTests.csproj", "{9D9CE4E4-1DD0-4961-861F-219731DE06CE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Catalog.UnitTests", "src\Services\Catalog\Catalog.UnitTests\Catalog.UnitTests.csproj", "{791961C7-3F3E-434E-B2BA-B4D6B5E222B0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Basket.FunctionalTests", "src\Services\Basket\Basket.FunctionalTests\Basket.FunctionalTests.csproj", "{3F6202D0-2842-4C2F-98E1-9462709EAFBE}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ordering.UnitTests", "test\Ordering.UnitTests\Ordering.UnitTests.csproj", "{AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.UnitTests", "src\Services\Ordering\Ordering.UnitTests\Ordering.UnitTests.csproj", "{B1182FD9-C245-4018-8412-C66F290C7F4C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basket.UnitTests", "test\Basket.UnitTests\Basket.UnitTests.csproj", "{3757B89F-742C-441C-BAEF-F36F0F8280C9}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Catalog.FunctionalTests", "src\Services\Catalog\Catalog.FunctionalTests\Catalog.FunctionalTests.csproj", "{38107691-A437-461D-A85C-ACD3AC7ACFAB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basket.FunctionalTests", "test\Basket.FunctionalTests\Basket.FunctionalTests.csproj", "{9E0439C7-7050-4FFC-99C6-4A0DBD123D89}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Locations.FunctionalTests", "src\Services\Location\Locations.FunctionalTests\Locations.FunctionalTests.csproj", "{16F463AA-9CF6-44DC-B18C-7310CCF663FF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Catalog.UnitTests", "test\Catalog.UnitTests\Catalog.UnitTests.csproj", "{F88BB248-B57B-419C-A443-EB9DC3557412}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ordering.FunctionalTests", "src\Services\Ordering\Ordering.FunctionalTests\Ordering.FunctionalTests.csproj", "{DA7D3E03-D0B6-4591-8143-779D3E9F3F30}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Marketing.FunctionalTests", "test\Marketing.FunctionalTests\Marketing.FunctionalTests.csproj", "{4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Marketing.FunctionalTests", "src\Services\Marketing\Marketing.FunctionalTests\Marketing.FunctionalTests.csproj", "{94176D9B-9CAA-4762-8D12-1621E240EE34}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -394,54 +390,6 @@ Global {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|x64.Build.0 = Release|Any CPU {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|x86.ActiveCfg = Release|Any CPU {95F1F07C-4D92-4742-BD07-E5B805AAB651}.Release|x86.Build.0 = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|ARM.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|iPhone.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|x64.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|x64.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|x86.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.AppStore|x86.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|ARM.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|ARM.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|iPhone.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|x64.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|x64.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|x86.ActiveCfg = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Debug|x86.Build.0 = Debug|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|Any CPU.Build.0 = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|ARM.ActiveCfg = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|ARM.Build.0 = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|iPhone.ActiveCfg = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|iPhone.Build.0 = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|x64.ActiveCfg = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|x64.Build.0 = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|x86.ActiveCfg = Release|Any CPU - {7796F5D8-31FC-45A4-B673-19DE5BA194CF}.Release|x86.Build.0 = Release|Any CPU {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU {A579E108-5445-403D-A407-339AC4D1611B}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU @@ -538,54 +486,6 @@ Global {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|x64.Build.0 = Release|Any CPU {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|x86.ActiveCfg = Release|Any CPU {F16E3C6A-1C94-4EAB-BE91-099618060B68}.Release|x86.Build.0 = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|ARM.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|iPhone.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|x64.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|x64.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|x86.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.AppStore|x86.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|ARM.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|ARM.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|iPhone.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|x64.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|x64.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|x86.ActiveCfg = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Debug|x86.Build.0 = Debug|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|Any CPU.Build.0 = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|ARM.ActiveCfg = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|ARM.Build.0 = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|iPhone.ActiveCfg = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|iPhone.Build.0 = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|x64.ActiveCfg = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|x64.Build.0 = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|x86.ActiveCfg = Release|Any CPU - {5B810E3D-112E-4857-B197-F09D2FD41E27}.Release|x86.Build.0 = Release|Any CPU {CFE2FACB-4538-4B99-8A10-306F3882952D}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU {CFE2FACB-4538-4B99-8A10-306F3882952D}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU {CFE2FACB-4538-4B99-8A10-306F3882952D}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU @@ -874,54 +774,6 @@ Global {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x64.Build.0 = Release|Any CPU {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x86.ActiveCfg = Release|Any CPU {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F}.Release|x86.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|ARM.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|iPhone.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|x64.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|x64.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|x86.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.AppStore|x86.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|ARM.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|ARM.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|iPhone.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|x64.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|x64.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|x86.ActiveCfg = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Debug|x86.Build.0 = Debug|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|Any CPU.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|ARM.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|ARM.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|iPhone.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|iPhone.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x64.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x64.Build.0 = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x86.ActiveCfg = Release|Any CPU - {1A01AF82-6FCB-464C-B39C-F127AEBD315D}.Release|x86.Build.0 = Release|Any CPU {22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU {22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU {22A0F9C1-2D4A-4107-95B7-8459E6688BC5}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU @@ -1546,294 +1398,390 @@ Global {E1D2B260-4E7F-4A88-BC13-9910F7C44623}.Release|x64.Build.0 = Release|Any CPU {E1D2B260-4E7F-4A88-BC13-9910F7C44623}.Release|x86.ActiveCfg = Release|Any CPU {E1D2B260-4E7F-4A88-BC13-9910F7C44623}.Release|x86.Build.0 = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|ARM.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|iPhone.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|x64.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|x64.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|x86.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.AppStore|x86.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|ARM.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|ARM.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|iPhone.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|x64.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|x64.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|x86.ActiveCfg = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Debug|x86.Build.0 = Debug|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|Any CPU.Build.0 = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|ARM.ActiveCfg = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|ARM.Build.0 = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|iPhone.ActiveCfg = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|iPhone.Build.0 = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|x64.ActiveCfg = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|x64.Build.0 = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|x86.ActiveCfg = Release|Any CPU - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A}.Release|x86.Build.0 = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|ARM.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|iPhone.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|x64.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|x64.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|x86.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.AppStore|x86.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|ARM.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|ARM.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|iPhone.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|x64.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|x64.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|x86.ActiveCfg = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Debug|x86.Build.0 = Debug|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|Any CPU.Build.0 = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|ARM.ActiveCfg = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|ARM.Build.0 = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|iPhone.ActiveCfg = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|iPhone.Build.0 = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|x64.ActiveCfg = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|x64.Build.0 = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|x86.ActiveCfg = Release|Any CPU - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2}.Release|x86.Build.0 = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|ARM.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|iPhone.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|x64.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|x64.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|x86.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.AppStore|x86.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|ARM.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|ARM.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|iPhone.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|x64.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|x64.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|x86.ActiveCfg = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Debug|x86.Build.0 = Debug|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|Any CPU.Build.0 = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|ARM.ActiveCfg = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|ARM.Build.0 = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|iPhone.ActiveCfg = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|iPhone.Build.0 = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|x64.ActiveCfg = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|x64.Build.0 = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|x86.ActiveCfg = Release|Any CPU - {3757B89F-742C-441C-BAEF-F36F0F8280C9}.Release|x86.Build.0 = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|ARM.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|iPhone.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|x64.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|x64.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|x86.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.AppStore|x86.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|ARM.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|ARM.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|iPhone.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|x64.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|x64.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|x86.ActiveCfg = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Debug|x86.Build.0 = Debug|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|Any CPU.Build.0 = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|ARM.ActiveCfg = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|ARM.Build.0 = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|iPhone.ActiveCfg = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|iPhone.Build.0 = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|x64.ActiveCfg = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|x64.Build.0 = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|x86.ActiveCfg = Release|Any CPU - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89}.Release|x86.Build.0 = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|ARM.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|iPhone.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|x64.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|x64.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|x86.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.AppStore|x86.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|ARM.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|ARM.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|iPhone.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|x64.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|x64.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|x86.ActiveCfg = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Debug|x86.Build.0 = Debug|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|Any CPU.Build.0 = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|ARM.ActiveCfg = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|ARM.Build.0 = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|iPhone.ActiveCfg = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|iPhone.Build.0 = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|x64.ActiveCfg = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|x64.Build.0 = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|x86.ActiveCfg = Release|Any CPU - {F88BB248-B57B-419C-A443-EB9DC3557412}.Release|x86.Build.0 = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|ARM.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|iPhone.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|x64.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|x64.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|x86.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.AppStore|x86.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|ARM.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|ARM.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|iPhone.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|x64.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|x64.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|x86.ActiveCfg = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Debug|x86.Build.0 = Debug|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|Any CPU.Build.0 = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|ARM.ActiveCfg = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|ARM.Build.0 = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|iPhone.ActiveCfg = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|iPhone.Build.0 = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|x64.ActiveCfg = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|x64.Build.0 = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|x86.ActiveCfg = Release|Any CPU - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE}.Release|x86.Build.0 = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|ARM.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|iPhone.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|x64.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|x64.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|x86.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.AppStore|x86.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|ARM.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|iPhone.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|x64.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|x64.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|x86.ActiveCfg = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Debug|x86.Build.0 = Debug|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|Any CPU.Build.0 = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|ARM.ActiveCfg = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|ARM.Build.0 = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|iPhone.ActiveCfg = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|iPhone.Build.0 = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|x64.ActiveCfg = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|x64.Build.0 = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|x86.ActiveCfg = Release|Any CPU + {9D9CE4E4-1DD0-4961-861F-219731DE06CE}.Release|x86.Build.0 = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|ARM.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|iPhone.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|x64.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|x64.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|x86.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.AppStore|x86.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|ARM.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|ARM.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|iPhone.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|x64.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|x64.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|x86.ActiveCfg = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Debug|x86.Build.0 = Debug|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|Any CPU.Build.0 = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|ARM.ActiveCfg = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|ARM.Build.0 = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|iPhone.ActiveCfg = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|iPhone.Build.0 = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|x64.ActiveCfg = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|x64.Build.0 = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|x86.ActiveCfg = Release|Any CPU + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0}.Release|x86.Build.0 = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|ARM.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|iPhone.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|x64.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|x64.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|x86.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.AppStore|x86.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|ARM.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|ARM.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|iPhone.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|x64.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|x64.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|x86.ActiveCfg = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Debug|x86.Build.0 = Debug|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|Any CPU.Build.0 = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|ARM.ActiveCfg = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|ARM.Build.0 = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|iPhone.ActiveCfg = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|iPhone.Build.0 = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|x64.ActiveCfg = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|x64.Build.0 = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|x86.ActiveCfg = Release|Any CPU + {3F6202D0-2842-4C2F-98E1-9462709EAFBE}.Release|x86.Build.0 = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|ARM.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|iPhone.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|x64.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|x64.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|x86.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.AppStore|x86.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|ARM.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|ARM.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|iPhone.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|x64.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|x64.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|x86.ActiveCfg = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Debug|x86.Build.0 = Debug|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|Any CPU.Build.0 = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|ARM.ActiveCfg = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|ARM.Build.0 = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|iPhone.ActiveCfg = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|iPhone.Build.0 = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|x64.ActiveCfg = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|x64.Build.0 = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|x86.ActiveCfg = Release|Any CPU + {B1182FD9-C245-4018-8412-C66F290C7F4C}.Release|x86.Build.0 = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|ARM.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|iPhone.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|x64.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|x64.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|x86.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.AppStore|x86.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|ARM.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|ARM.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|iPhone.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|x64.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|x64.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|x86.ActiveCfg = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Debug|x86.Build.0 = Debug|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|Any CPU.Build.0 = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|ARM.ActiveCfg = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|ARM.Build.0 = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|iPhone.ActiveCfg = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|iPhone.Build.0 = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|x64.ActiveCfg = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|x64.Build.0 = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|x86.ActiveCfg = Release|Any CPU + {38107691-A437-461D-A85C-ACD3AC7ACFAB}.Release|x86.Build.0 = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|ARM.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|iPhone.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|x64.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|x64.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|x86.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.AppStore|x86.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|ARM.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|ARM.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|iPhone.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|x64.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|x64.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|x86.ActiveCfg = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Debug|x86.Build.0 = Debug|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|Any CPU.Build.0 = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|ARM.ActiveCfg = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|ARM.Build.0 = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|iPhone.ActiveCfg = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|iPhone.Build.0 = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|x64.ActiveCfg = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|x64.Build.0 = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|x86.ActiveCfg = Release|Any CPU + {16F463AA-9CF6-44DC-B18C-7310CCF663FF}.Release|x86.Build.0 = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|ARM.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|iPhone.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|x64.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|x64.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|x86.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.AppStore|x86.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|ARM.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|ARM.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|iPhone.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|x64.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|x64.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|x86.ActiveCfg = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Debug|x86.Build.0 = Debug|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|Any CPU.Build.0 = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|ARM.ActiveCfg = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|ARM.Build.0 = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|iPhone.ActiveCfg = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|iPhone.Build.0 = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|x64.ActiveCfg = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|x64.Build.0 = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|x86.ActiveCfg = Release|Any CPU + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30}.Release|x86.Build.0 = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|x64.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Ad-Hoc|x86.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|Any CPU.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|ARM.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|ARM.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|iPhone.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|iPhone.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|x64.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|x64.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|x86.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.AppStore|x86.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|Any CPU.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|ARM.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|ARM.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|iPhone.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|x64.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|x64.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|x86.ActiveCfg = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Debug|x86.Build.0 = Debug|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|Any CPU.ActiveCfg = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|Any CPU.Build.0 = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|ARM.ActiveCfg = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|ARM.Build.0 = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|iPhone.ActiveCfg = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|iPhone.Build.0 = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|x64.ActiveCfg = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|x64.Build.0 = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|x86.ActiveCfg = Release|Any CPU + {94176D9B-9CAA-4762-8D12-1621E240EE34}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1852,10 +1800,8 @@ Global {F5598DCB-6DDE-4661-AD9D-A55612DA7E76} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} {F0333D8E-0B27-42B7-B2C6-78F3657624E2} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} {95F1F07C-4D92-4742-BD07-E5B805AAB651} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} - {7796F5D8-31FC-45A4-B673-19DE5BA194CF} = {EF0337F2-ED00-4643-89FD-EE10863F1870} {A579E108-5445-403D-A407-339AC4D1611B} = {24CD3B53-141E-4A07-9B0D-796641E1CF78} {F16E3C6A-1C94-4EAB-BE91-099618060B68} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} - {5B810E3D-112E-4857-B197-F09D2FD41E27} = {EF0337F2-ED00-4643-89FD-EE10863F1870} {CFE2FACB-4538-4B99-8A10-306F3882952D} = {EF0337F2-ED00-4643-89FD-EE10863F1870} {DB0EFB20-B024-4E5E-A75C-52143C131D25} = {932D8224-11F6-4D07-B109-DA28AD288A63} {807BB76E-B2BB-47A2-A57B-3D1B20FF5E7F} = {DB0EFB20-B024-4E5E-A75C-52143C131D25} @@ -1865,8 +1811,6 @@ Global {A81ECBC2-6B00-4DCD-8388-469174033379} = {DB0EFB20-B024-4E5E-A75C-52143C131D25} {942ED6E8-0050-495F-A0EA-01E97F63760C} = {A81ECBC2-6B00-4DCD-8388-469174033379} {C0A7918D-B4F2-4E7F-8DE2-1E5279EF079F} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} - {022E145D-1593-47EE-9608-8E323D3C63F5} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} - {1A01AF82-6FCB-464C-B39C-F127AEBD315D} = {022E145D-1593-47EE-9608-8E323D3C63F5} {22A0F9C1-2D4A-4107-95B7-8459E6688BC5} = {A81ECBC2-6B00-4DCD-8388-469174033379} {4BD76717-3102-4969-8C2C-BAAA3F0263B6} = {A81ECBC2-6B00-4DCD-8388-469174033379} {41139F64-4046-4F16-96B7-D941D96FA9C6} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} @@ -1889,12 +1833,14 @@ Global {AF0828DB-8BDD-411A-AEEF-B780FBB8D8C1} = {28C0F5C8-4849-4035-80AB-45639424E73F} {7D63ED4A-3EDA-4BBA-8BBA-F46BD6430931} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} {E1D2B260-4E7F-4A88-BC13-9910F7C44623} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} - {022804A2-D4D5-4F6D-B2C0-3D761F2B5D5A} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} - {AFCED70D-7DA2-44EB-8E7F-D494F9EA3ED2} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} - {3757B89F-742C-441C-BAEF-F36F0F8280C9} = {BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8} - {9E0439C7-7050-4FFC-99C6-4A0DBD123D89} = {BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8} - {F88BB248-B57B-419C-A443-EB9DC3557412} = {326A7FB3-5295-468C-A4FE-67DCB823E1E5} - {4E92B6D3-DFF1-471E-B2E1-B0AFF72412EE} = {A5260DE0-1FDD-467E-9CC1-A028AB081CEE} + {9D9CE4E4-1DD0-4961-861F-219731DE06CE} = {BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8} + {791961C7-3F3E-434E-B2BA-B4D6B5E222B0} = {326A7FB3-5295-468C-A4FE-67DCB823E1E5} + {3F6202D0-2842-4C2F-98E1-9462709EAFBE} = {BF3EF4F3-E4F5-41DA-9D2D-57223687D1A8} + {B1182FD9-C245-4018-8412-C66F290C7F4C} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} + {38107691-A437-461D-A85C-ACD3AC7ACFAB} = {326A7FB3-5295-468C-A4FE-67DCB823E1E5} + {16F463AA-9CF6-44DC-B18C-7310CCF663FF} = {41139F64-4046-4F16-96B7-D941D96FA9C6} + {DA7D3E03-D0B6-4591-8143-779D3E9F3F30} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B} + {94176D9B-9CAA-4762-8D12-1621E240EE34} = {A5260DE0-1FDD-467E-9CC1-A028AB081CEE} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {25728519-5F0F-4973-8A64-0A81EB4EA8D9} diff --git a/src/Services/Basket/Basket.API/Controllers/BasketController.cs b/src/Services/Basket/Basket.API/Controllers/BasketController.cs index ccb81d25f..c7fdac57d 100644 --- a/src/Services/Basket/Basket.API/Controllers/BasketController.cs +++ b/src/Services/Basket/Basket.API/Controllers/BasketController.cs @@ -59,7 +59,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Controllers public async Task Checkout([FromBody]BasketCheckout basketCheckout, [FromHeader(Name = "x-requestid")] string requestId) { var userId = _identitySvc.GetUserIdentity(); - var userName = User.FindFirst(x => x.Type == "unique_name").Value; + basketCheckout.RequestId = (Guid.TryParse(requestId, out Guid guid) && guid != Guid.Empty) ? guid : basketCheckout.RequestId; @@ -71,6 +71,8 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Controllers return BadRequest(); } + var userName = User.FindFirst(x => x.Type == "unique_name").Value; + var eventMessage = new UserCheckoutAcceptedIntegrationEvent(userId, userName, basketCheckout.City, basketCheckout.Street, basketCheckout.State, basketCheckout.Country, basketCheckout.ZipCode, basketCheckout.CardNumber, basketCheckout.CardHolderName, basketCheckout.CardExpiration, basketCheckout.CardSecurityNumber, basketCheckout.CardTypeId, basketCheckout.Buyer, basketCheckout.RequestId, basket); diff --git a/test/Basket.FunctionalTests/Base/AutoAuthorizeMiddleware.cs b/src/Services/Basket/Basket.FunctionalTests/Base/AutoAuthorizeMiddleware.cs similarity index 72% rename from test/Basket.FunctionalTests/Base/AutoAuthorizeMiddleware.cs rename to src/Services/Basket/Basket.FunctionalTests/Base/AutoAuthorizeMiddleware.cs index e285cfbf4..6b6677595 100644 --- a/test/Basket.FunctionalTests/Base/AutoAuthorizeMiddleware.cs +++ b/src/Services/Basket/Basket.FunctionalTests/Base/AutoAuthorizeMiddleware.cs @@ -6,6 +6,8 @@ namespace Basket.FunctionalTests.Base { class AutoAuthorizeMiddleware { + public const string IDENTITY_ID = "9e3163b9-1ae6-4652-9dc6-7898ab7b7a00"; + private readonly RequestDelegate _next; public AutoAuthorizeMiddleware(RequestDelegate rd) @@ -17,7 +19,9 @@ namespace Basket.FunctionalTests.Base { var identity = new ClaimsIdentity("cookies"); - identity.AddClaim(new Claim("sub", "9e3163b9-1ae6-4652-9dc6-7898ab7b7a00")); + identity.AddClaim(new Claim("sub", IDENTITY_ID)); + identity.AddClaim(new Claim("unique_name", IDENTITY_ID)); + httpContext.User.AddIdentity(identity); await _next.Invoke(httpContext); diff --git a/test/Basket.FunctionalTests/Base/BasketScenarioBase.cs b/src/Services/Basket/Basket.FunctionalTests/Base/BasketScenarioBase.cs similarity index 51% rename from test/Basket.FunctionalTests/Base/BasketScenarioBase.cs rename to src/Services/Basket/Basket.FunctionalTests/Base/BasketScenarioBase.cs index 095578dc3..b5a62ce9d 100644 --- a/test/Basket.FunctionalTests/Base/BasketScenarioBase.cs +++ b/src/Services/Basket/Basket.FunctionalTests/Base/BasketScenarioBase.cs @@ -1,10 +1,8 @@ -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.TestHost; -using System; -using System.Collections.Generic; +using Microsoft.Extensions.Configuration; using System.IO; -using System.Text; +using System.Reflection; namespace Basket.FunctionalTests.Base { @@ -14,11 +12,18 @@ namespace Basket.FunctionalTests.Base public TestServer CreateServer() { - var webHostBuilder = WebHost.CreateDefaultBuilder(); - webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\basket"); - webHostBuilder.UseStartup(); + var path = Assembly.GetAssembly(typeof(BasketScenarioBase)) + .Location; - return new TestServer(webHostBuilder); + var hostBuilder = new WebHostBuilder() + .UseContentRoot(Path.GetDirectoryName(path)) + .ConfigureAppConfiguration(cb => + { + cb.AddJsonFile("appsettings.json", optional: false) + .AddEnvironmentVariables(); + }).UseStartup(); + + return new TestServer(hostBuilder); } public static class Get diff --git a/test/Basket.FunctionalTests/Base/BasketTestStartup.cs b/src/Services/Basket/Basket.FunctionalTests/Base/BasketTestStartup.cs similarity index 100% rename from test/Basket.FunctionalTests/Base/BasketTestStartup.cs rename to src/Services/Basket/Basket.FunctionalTests/Base/BasketTestStartup.cs diff --git a/test/Basket.FunctionalTests/Base/HttpClientExtensions.cs b/src/Services/Basket/Basket.FunctionalTests/Base/HttpClientExtensions.cs similarity index 100% rename from test/Basket.FunctionalTests/Base/HttpClientExtensions.cs rename to src/Services/Basket/Basket.FunctionalTests/Base/HttpClientExtensions.cs diff --git a/src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj b/src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj new file mode 100644 index 000000000..21c64158c --- /dev/null +++ b/src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj @@ -0,0 +1,33 @@ + + + + netcoreapp2.1 + + false + + + + + + + + + PreserveNewest + + + + + + + + + + + + + + + + + + diff --git a/test/Basket.FunctionalTests/BasketScenarios.cs b/src/Services/Basket/Basket.FunctionalTests/BasketScenarios.cs similarity index 97% rename from test/Basket.FunctionalTests/BasketScenarios.cs rename to src/Services/Basket/Basket.FunctionalTests/BasketScenarios.cs index 26a31c37d..5c7ecdef5 100644 --- a/test/Basket.FunctionalTests/BasketScenarios.cs +++ b/src/Services/Basket/Basket.FunctionalTests/BasketScenarios.cs @@ -44,10 +44,12 @@ namespace Basket.FunctionalTests using (var server = CreateServer()) { var contentBasket = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); + await server.CreateClient() .PostAsync(Post.Basket, contentBasket); var contentCheckout = new StringContent(BuildCheckout(), UTF8Encoding.UTF8, "application/json"); + var response = await server.CreateIdempotentClient() .PostAsync(Post.CheckoutOrder, contentCheckout); @@ -57,7 +59,7 @@ namespace Basket.FunctionalTests string BuildBasket() { - var order = new CustomerBasket("1234"); + var order = new CustomerBasket(AutoAuthorizeMiddleware.IDENTITY_ID); order.Items.Add(new BasketItem { diff --git a/test/Services/IntegrationTests/Services/Basket/RedisBasketRepositoryTests.cs b/src/Services/Basket/Basket.FunctionalTests/RedisBasketRepositoryTests.cs similarity index 82% rename from test/Services/IntegrationTests/Services/Basket/RedisBasketRepositoryTests.cs rename to src/Services/Basket/Basket.FunctionalTests/RedisBasketRepositoryTests.cs index 9eefde0d5..123967558 100644 --- a/test/Services/IntegrationTests/Services/Basket/RedisBasketRepositoryTests.cs +++ b/src/Services/Basket/Basket.FunctionalTests/RedisBasketRepositoryTests.cs @@ -1,15 +1,17 @@ -namespace IntegrationTests.Services.Basket -{ - using Microsoft.eShopOnContainers.Services.Basket.API; - using Microsoft.eShopOnContainers.Services.Basket.API.Model; - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Options; - using System.Collections.Generic; - using System.Threading.Tasks; - using Xunit; - using Moq; - using StackExchange.Redis; +using Microsoft.eShopOnContainers.Services.Basket.API; +using Microsoft.eShopOnContainers.Services.Basket.API.Model; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Moq; +using StackExchange.Redis; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Xunit; +namespace Basket.FunctionalTests +{ public class RedisBasketRepositoryTests { private Mock> _optionsMock; @@ -55,7 +57,7 @@ RedisBasketRepository BuildBasketRepository() { - var loggerFactory = new LoggerFactory(); + var loggerFactory = new LoggerFactory(); var configuration = ConfigurationOptions.Parse("127.0.0.1", true); configuration.ResolveDns = true; return new RedisBasketRepository(loggerFactory, ConnectionMultiplexer.Connect(configuration)); diff --git a/test/Basket.FunctionalTests/appsettings.json b/src/Services/Basket/Basket.FunctionalTests/appsettings.json similarity index 100% rename from test/Basket.FunctionalTests/appsettings.json rename to src/Services/Basket/Basket.FunctionalTests/appsettings.json diff --git a/test/Basket.UnitTests/Application/BasketWebApiTest.cs b/src/Services/Basket/Basket.UnitTests/Application/BasketWebApiTest.cs similarity index 99% rename from test/Basket.UnitTests/Application/BasketWebApiTest.cs rename to src/Services/Basket/Basket.UnitTests/Application/BasketWebApiTest.cs index 7e17a9980..636375ef7 100644 --- a/test/Basket.UnitTests/Application/BasketWebApiTest.cs +++ b/src/Services/Basket/Basket.UnitTests/Application/BasketWebApiTest.cs @@ -38,6 +38,7 @@ namespace UnitTest.Basket.Application _identityServiceMock.Setup(x => x.GetUserIdentity()).Returns(fakeCustomerId); _serviceBusMock.Setup(x => x.Publish(It.IsAny())); + //Act var basketController = new BasketController( _basketRepositoryMock.Object, _identityServiceMock.Object, _serviceBusMock.Object); @@ -59,6 +60,7 @@ namespace UnitTest.Basket.Application .Returns(Task.FromResult(fakeCustomerBasket)); _identityServiceMock.Setup(x => x.GetUserIdentity()).Returns(fakeCustomerId); _serviceBusMock.Setup(x => x.Publish(It.IsAny())); + //Act var basketController = new BasketController( _basketRepositoryMock.Object, _identityServiceMock.Object, _serviceBusMock.Object); @@ -77,6 +79,7 @@ namespace UnitTest.Basket.Application _basketRepositoryMock.Setup(x => x.GetBasketAsync(It.IsAny())) .Returns(Task.FromResult((CustomerBasket)null)); _identityServiceMock.Setup(x => x.GetUserIdentity()).Returns(fakeCustomerId); + //Act var basketController = new BasketController( _basketRepositoryMock.Object, _identityServiceMock.Object, _serviceBusMock.Object); diff --git a/test/Basket.UnitTests/Application/CartControllerTest.cs b/src/Services/Basket/Basket.UnitTests/Application/CartControllerTest.cs similarity index 100% rename from test/Basket.UnitTests/Application/CartControllerTest.cs rename to src/Services/Basket/Basket.UnitTests/Application/CartControllerTest.cs diff --git a/test/Basket.UnitTests/Basket.UnitTests.csproj b/src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj similarity index 79% rename from test/Basket.UnitTests/Basket.UnitTests.csproj rename to src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj index fece4b3e5..cc2326841 100644 --- a/test/Basket.UnitTests/Basket.UnitTests.csproj +++ b/src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj @@ -16,8 +16,8 @@ - - + + diff --git a/src/Services/Catalog/Catalog.API/Extensions/CatalogItemExtensions.cs b/src/Services/Catalog/Catalog.API/Extensions/CatalogItemExtensions.cs index 71b9d88a3..fa2c3f60e 100644 --- a/src/Services/Catalog/Catalog.API/Extensions/CatalogItemExtensions.cs +++ b/src/Services/Catalog/Catalog.API/Extensions/CatalogItemExtensions.cs @@ -9,9 +9,12 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API.Model { public static void FillProductUrl(this CatalogItem item, string picBaseUrl, bool azureStorageEnabled) { - item.PictureUri = azureStorageEnabled + if (item != null) + { + item.PictureUri = azureStorageEnabled ? picBaseUrl + item.PictureFileName : picBaseUrl.Replace("[0]", item.Id.ToString()); + } } } } diff --git a/src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs b/src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs index 712719e23..e7ea1e09d 100644 --- a/src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs +++ b/src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs @@ -356,14 +356,17 @@ private void GetCatalogItemPictures(string contentRootPath, string picturePath) { - DirectoryInfo directory = new DirectoryInfo(picturePath); - foreach (FileInfo file in directory.GetFiles()) + if (picturePath != null) { - file.Delete(); - } + DirectoryInfo directory = new DirectoryInfo(picturePath); + foreach (FileInfo file in directory.GetFiles()) + { + file.Delete(); + } - string zipFileCatalogItemPictures = Path.Combine(contentRootPath, "Setup", "CatalogItems.zip"); - ZipFile.ExtractToDirectory(zipFileCatalogItemPictures, picturePath); + string zipFileCatalogItemPictures = Path.Combine(contentRootPath, "Setup", "CatalogItems.zip"); + ZipFile.ExtractToDirectory(zipFileCatalogItemPictures, picturePath); + } } private Policy CreatePolicy( ILogger logger, string prefix,int retries = 3) diff --git a/src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj b/src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj new file mode 100644 index 000000000..a8e691e22 --- /dev/null +++ b/src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj @@ -0,0 +1,47 @@ + + + + netcoreapp2.1 + + false + + + + + + + + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + + + + + + + + + + + + + + diff --git a/test/Services/IntegrationTests/Services/Catalog/CatalogScenarioBase.cs b/src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarioBase.cs similarity index 67% rename from test/Services/IntegrationTests/Services/Catalog/CatalogScenarioBase.cs rename to src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarioBase.cs index 57d8c6ef1..46bdb07d1 100644 --- a/test/Services/IntegrationTests/Services/Catalog/CatalogScenarioBase.cs +++ b/src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarioBase.cs @@ -1,25 +1,33 @@ -namespace IntegrationTests.Services.Catalog -{ - using Microsoft.AspNetCore; - using Microsoft.AspNetCore.Hosting; - using Microsoft.AspNetCore.TestHost; - using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; - using Microsoft.eShopOnContainers.Services.Catalog.API; - using Microsoft.eShopOnContainers.Services.Catalog.API.Infrastructure; - using Microsoft.Extensions.DependencyInjection; - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Options; - using System.IO; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.TestHost; +using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; +using Microsoft.eShopOnContainers.Services.Catalog.API; +using Microsoft.eShopOnContainers.Services.Catalog.API.Infrastructure; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using System.IO; +using System.Reflection; - public class CatalogScenarioBase +namespace Catalog.FunctionalTests +{ + public class CatalogScenariosBase { public TestServer CreateServer() { - var webHostBuilder = WebHost.CreateDefaultBuilder(); - webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\Catalog"); - webHostBuilder.UseStartup(); + var path = Assembly.GetAssembly(typeof(CatalogScenariosBase)) + .Location; - var testServer = new TestServer(webHostBuilder); + var hostBuilder = new WebHostBuilder() + .UseContentRoot(Path.GetDirectoryName(path)) + .ConfigureAppConfiguration(cb => + { + cb.AddJsonFile("appsettings.json", optional: false) + .AddEnvironmentVariables(); + }).UseStartup(); + + var testServer = new TestServer(hostBuilder); testServer.Host .MigrateDbContext((context, services) => @@ -44,7 +52,7 @@ public static string Items(bool paginated = false) { - return paginated + return paginated ? "api/v1/catalog/items" + Paginated(PageIndex, PageCount) : "api/v1/catalog/items"; } diff --git a/test/Services/IntegrationTests/Services/Catalog/CatalogScenarios.cs b/src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarios.cs similarity index 94% rename from test/Services/IntegrationTests/Services/Catalog/CatalogScenarios.cs rename to src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarios.cs index 6414a57ea..abb6a6cbf 100644 --- a/test/Services/IntegrationTests/Services/Catalog/CatalogScenarios.cs +++ b/src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarios.cs @@ -1,13 +1,11 @@ -using System; -using System.Net; +using System.Net; +using System.Threading.Tasks; +using Xunit; -namespace IntegrationTests.Services.Catalog +namespace Catalog.FunctionalTests { - using System.Threading.Tasks; - using Xunit; - public class CatalogScenarios - : CatalogScenarioBase + : CatalogScenariosBase { [Fact] public async Task Get_get_all_catalogitems_and_response_ok_status_code() @@ -53,7 +51,7 @@ namespace IntegrationTests.Services.Catalog var response = await server.CreateClient() .GetAsync(Get.ItemById(int.MaxValue)); - Assert.Equal( HttpStatusCode.NotFound, response.StatusCode); + Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); } } diff --git a/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogBrands.csv b/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogBrands.csv new file mode 100644 index 000000000..95c9ee64c --- /dev/null +++ b/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogBrands.csv @@ -0,0 +1,8 @@ +CatalogBrand +Azure +.NET +Visual Studio +SQL Server +Other +CatalogBrandTestOne +CatalogBrandTestTwo \ No newline at end of file diff --git a/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogItems.csv b/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogItems.csv new file mode 100644 index 000000000..0257216d4 --- /dev/null +++ b/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogItems.csv @@ -0,0 +1,14 @@ +CatalogTypeName,CatalogBrandName,Description,Name,Price,PictureFileName,availablestock,onreorder +T-Shirt,.NET,".NET Bot Black Hoodie, and more",.NET Bot Black Hoodie,19.5,1.png,100,false +Mug,.NET,.NET Black & White Mug,.NET Black & White Mug,8.50,2.png,89,true +T-Shirt,Other,Prism White T-Shirt,Prism White T-Shirt,12,3.png,56,false +T-Shirt,.NET,.NET Foundation T-shirt,.NET Foundation T-shirt,12,4.png,120,false +Sheet,Other,Roslyn Red Sheet,Roslyn Red Sheet,8.5,5.png,55,false +T-Shirt,.NET,.NET Blue Hoodie,.NET Blue Hoodie,12,6.png,17,false +T-Shirt,Other,Roslyn Red T-Shirt,Roslyn Red T-Shirt",12,7.png,8,false +T-Shirt,Other,Kudu Purple Hoodie,Kudu Purple Hoodie,8.5,8.png,34,false +Mug,Other,Cup White Mug,Cup White Mug,12,9.png,76,false +Sheet,.NET,.NET Foundation Sheet,.NET Foundation Sheet,12,10.png,11,false +Sheet,.NET,Cup Sheet,Cup Sheet,8.5,11.png,3,false +T-Shirt,Other,Prism White TShirt,Prism White TShirt,12,12.png,0,false +Mug, Other, De los Palotes, pepito, 12, 12.png, 0, false \ No newline at end of file diff --git a/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogItems.zip b/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogItems.zip new file mode 100644 index 000000000..6d3edfb3c Binary files /dev/null and b/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogItems.zip differ diff --git a/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogTypes.csv b/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogTypes.csv new file mode 100644 index 000000000..ae636c265 --- /dev/null +++ b/src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogTypes.csv @@ -0,0 +1,7 @@ +CatalogType +Mug +T-Shirt +Sheet +USB Memory Stick +CatalogTypeTestOne +CatalogTypeTestTwo \ No newline at end of file diff --git a/test/Services/IntegrationTests/Services/Catalog/appsettings.json b/src/Services/Catalog/Catalog.FunctionalTests/appsettings.json similarity index 100% rename from test/Services/IntegrationTests/Services/Catalog/appsettings.json rename to src/Services/Catalog/Catalog.FunctionalTests/appsettings.json diff --git a/test/Catalog.UnitTests/Application/CatalogControllerTest.cs b/src/Services/Catalog/Catalog.UnitTests/Application/CatalogControllerTest.cs similarity index 100% rename from test/Catalog.UnitTests/Application/CatalogControllerTest.cs rename to src/Services/Catalog/Catalog.UnitTests/Application/CatalogControllerTest.cs diff --git a/test/Catalog.UnitTests/Catalog.UnitTests.csproj b/src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj similarity index 77% rename from test/Catalog.UnitTests/Catalog.UnitTests.csproj rename to src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj index 8611666f2..a336ba98d 100644 --- a/test/Catalog.UnitTests/Catalog.UnitTests.csproj +++ b/src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj @@ -15,8 +15,8 @@ - - + + diff --git a/test/Services/IntegrationTests/Services/Locations/LocationsTestsStartup.cs b/src/Services/Location/Locations.FunctionalTests/LocationTestsStartup.cs similarity index 78% rename from test/Services/IntegrationTests/Services/Locations/LocationsTestsStartup.cs rename to src/Services/Location/Locations.FunctionalTests/LocationTestsStartup.cs index bf19a1ca0..21d0814a0 100644 --- a/test/Services/IntegrationTests/Services/Locations/LocationsTestsStartup.cs +++ b/src/Services/Location/Locations.FunctionalTests/LocationTestsStartup.cs @@ -1,12 +1,12 @@ -namespace IntegrationTests.Services.Locations -{ - using Microsoft.AspNetCore.Builder; - using Microsoft.AspNetCore.Http; - using Microsoft.eShopOnContainers.Services.Locations.API; - using Microsoft.Extensions.Configuration; - using System.Security.Claims; - using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.eShopOnContainers.Services.Locations.API; +using Microsoft.Extensions.Configuration; +using System.Security.Claims; +using System.Threading.Tasks; +namespace Locations.FunctionalTests +{ public class LocationsTestsStartup : Startup { public LocationsTestsStartup(IConfiguration env) : base(env) diff --git a/test/Basket.FunctionalTests/Basket.FunctionalTests.csproj b/src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj similarity index 67% rename from test/Basket.FunctionalTests/Basket.FunctionalTests.csproj rename to src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj index e0d7316ac..28a8bf0b4 100644 --- a/test/Basket.FunctionalTests/Basket.FunctionalTests.csproj +++ b/src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj @@ -6,17 +6,26 @@ false + + + + + + + Always + + + - - - + + diff --git a/test/Services/IntegrationTests/Services/Locations/LocationsScenarioBase.cs b/src/Services/Location/Locations.FunctionalTests/LocationsScenarioBase.cs similarity index 51% rename from test/Services/IntegrationTests/Services/Locations/LocationsScenarioBase.cs rename to src/Services/Location/Locations.FunctionalTests/LocationsScenarioBase.cs index 600ef6a5d..8c68fa3f6 100644 --- a/test/Services/IntegrationTests/Services/Locations/LocationsScenarioBase.cs +++ b/src/Services/Location/Locations.FunctionalTests/LocationsScenarioBase.cs @@ -1,19 +1,27 @@ -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.TestHost; +using Microsoft.Extensions.Configuration; using System.IO; +using System.Reflection; -namespace IntegrationTests.Services.Locations +namespace Locations.FunctionalTests { public class LocationsScenarioBase { public TestServer CreateServer() { - var webHostBuilder = WebHost.CreateDefaultBuilder(); - webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\Locations"); - webHostBuilder.UseStartup(); + var path = Assembly.GetAssembly(typeof(LocationsScenarioBase)) + .Location; - return new TestServer(webHostBuilder); + var hostBuilder = new WebHostBuilder() + .UseContentRoot(Path.GetDirectoryName(path)) + .ConfigureAppConfiguration(cb => + { + cb.AddJsonFile("appsettings.json", optional: false) + .AddEnvironmentVariables(); + }).UseStartup(); + + return new TestServer(hostBuilder); } public static class Get diff --git a/test/Services/IntegrationTests/Services/Locations/LocationsScenarios.cs b/src/Services/Location/Locations.FunctionalTests/LocationsScenarios.cs similarity index 88% rename from test/Services/IntegrationTests/Services/Locations/LocationsScenarios.cs rename to src/Services/Location/Locations.FunctionalTests/LocationsScenarios.cs index 0a2d52c32..d08f777fd 100644 --- a/test/Services/IntegrationTests/Services/Locations/LocationsScenarios.cs +++ b/src/Services/Location/Locations.FunctionalTests/LocationsScenarios.cs @@ -1,15 +1,13 @@ using Microsoft.eShopOnContainers.Services.Locations.API.Model; using Microsoft.eShopOnContainers.Services.Locations.API.ViewModel; -using Location = Microsoft.eShopOnContainers.Services.Locations.API.Model.Locations; -using System.Collections.Generic; using Newtonsoft.Json; +using System.Collections.Generic; using System.Net.Http; using System.Text; using System.Threading.Tasks; using Xunit; -using System; -namespace IntegrationTests.Services.Locations +namespace Locations.FunctionalTests { public class LocationsScenarios : LocationsScenarioBase @@ -39,7 +37,7 @@ namespace IntegrationTests.Services.Locations .GetAsync(Get.LocationBy(userLocation.LocationId)); responseBody = await locationResponse.Content.ReadAsStringAsync(); - var location = JsonConvert.DeserializeObject(responseBody); + var location = JsonConvert.DeserializeObject(responseBody); // Assert Assert.Equal(expectedLocation, location.Code); @@ -71,7 +69,7 @@ namespace IntegrationTests.Services.Locations .GetAsync(Get.LocationBy(userLocation.LocationId)); responseBody = await locationResponse.Content.ReadAsStringAsync(); - var location = JsonConvert.DeserializeObject(responseBody); + var location = JsonConvert.DeserializeObject(responseBody); // Assert Assert.Equal(expectedLocation, location.Code); @@ -103,7 +101,7 @@ namespace IntegrationTests.Services.Locations .GetAsync(Get.LocationBy(userLocation.LocationId)); responseBody = await locationResponse.Content.ReadAsStringAsync(); - var location = JsonConvert.DeserializeObject(responseBody); + var location = JsonConvert.DeserializeObject(responseBody); // Assert Assert.Equal(expectedLocation, location.Code); @@ -116,10 +114,10 @@ namespace IntegrationTests.Services.Locations using (var server = CreateServer()) { var response = await server.CreateClient() - .GetAsync(Get.Locations); + .GetAsync(Get.Locations); var responseBody = await response.Content.ReadAsStringAsync(); - var locations = JsonConvert.DeserializeObject>(responseBody); + var locations = JsonConvert.DeserializeObject>(responseBody); // Assert Assert.NotEmpty(locations); @@ -132,7 +130,7 @@ namespace IntegrationTests.Services.Locations { Longitude = lon, Latitude = lat - }; + }; return JsonConvert.SerializeObject(location); } } diff --git a/test/Services/IntegrationTests/Services/Locations/appsettings.json b/src/Services/Location/Locations.FunctionalTests/appsettings.json similarity index 98% rename from test/Services/IntegrationTests/Services/Locations/appsettings.json rename to src/Services/Location/Locations.FunctionalTests/appsettings.json index ee763ba96..398cd54c0 100644 --- a/test/Services/IntegrationTests/Services/Locations/appsettings.json +++ b/src/Services/Location/Locations.FunctionalTests/appsettings.json @@ -1,4 +1,4 @@ -{ +{ "ConnectionString": "mongodb://localhost:27017", "Database": "LocationsDb", "ExternalCatalogBaseUrl": "http://localhost:5101", diff --git a/test/Services/IntegrationTests/Middleware/AutoAuthorizeMiddleware.cs b/src/Services/Marketing/Marketing.FunctionalTests/AutoAuthorizeMiddleware.cs similarity index 84% rename from test/Services/IntegrationTests/Middleware/AutoAuthorizeMiddleware.cs rename to src/Services/Marketing/Marketing.FunctionalTests/AutoAuthorizeMiddleware.cs index 598e4d0dd..31fa194cb 100644 --- a/test/Services/IntegrationTests/Middleware/AutoAuthorizeMiddleware.cs +++ b/src/Services/Marketing/Marketing.FunctionalTests/AutoAuthorizeMiddleware.cs @@ -1,15 +1,13 @@ using Microsoft.AspNetCore.Http; -using System; -using System.Collections.Generic; using System.Security.Claims; -using System.Text; using System.Threading.Tasks; -namespace IntegrationTests.Middleware +namespace Marketing.FunctionalTests { class AutoAuthorizeMiddleware { private readonly RequestDelegate _next; + public AutoAuthorizeMiddleware(RequestDelegate rd) { _next = rd; @@ -19,7 +17,9 @@ namespace IntegrationTests.Middleware { var identity = new ClaimsIdentity("cookies"); identity.AddClaim(new Claim("sub", "1234")); + httpContext.User.AddIdentity(identity); + await _next.Invoke(httpContext); } } diff --git a/test/Services/IntegrationTests/Services/Marketing/CampaignScenarioBase.cs b/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarioBase.cs similarity index 93% rename from test/Services/IntegrationTests/Services/Marketing/CampaignScenarioBase.cs rename to src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarioBase.cs index a23fd1677..c2c46dfa2 100644 --- a/test/Services/IntegrationTests/Services/Marketing/CampaignScenarioBase.cs +++ b/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarioBase.cs @@ -1,4 +1,4 @@ -namespace IntegrationTests.Services.Marketing +namespace Marketing.FunctionalTests { public class CampaignScenarioBase : MarketingScenarioBase { @@ -27,4 +27,4 @@ => $"{CampaignsUrlBase}/{id}"; } } -} \ No newline at end of file +} diff --git a/test/Services/IntegrationTests/Services/Marketing/CampaignScenarios.cs b/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs similarity index 92% rename from test/Services/IntegrationTests/Services/Marketing/CampaignScenarios.cs rename to src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs index 068777473..b2b49b92e 100644 --- a/test/Services/IntegrationTests/Services/Marketing/CampaignScenarios.cs +++ b/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs @@ -1,16 +1,16 @@ -namespace IntegrationTests.Services.Marketing +using Microsoft.eShopOnContainers.Services.Marketing.API.Dto; +using Newtonsoft.Json; +using System; +using System.Net; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using Xunit; + +namespace Marketing.FunctionalTests { - using System.Net.Http; - using System.Text; - using System.Threading.Tasks; - using Xunit; - using System; - using Newtonsoft.Json; - using System.Net; - using Microsoft.eShopOnContainers.Services.Marketing.API.Dto; - public class CampaignScenarios - : CampaignScenarioBase + : CampaignScenarioBase { [Fact] public async Task Get_get_all_campaigns_and_response_ok_status_code() @@ -122,7 +122,7 @@ From = DateTime.Now, To = DateTime.Now.AddDays(7), PictureUri = "http://externalcatalogbaseurltobereplaced/api/v1/campaigns/0/pic" - }; + }; } } } diff --git a/src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj b/src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj new file mode 100644 index 000000000..9a5d833c8 --- /dev/null +++ b/src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj @@ -0,0 +1,32 @@ + + + + netcoreapp2.1 + + false + + + + + + + + + Always + + + + + + + + + + + + + + + + + diff --git a/src/Services/Marketing/Marketing.FunctionalTests/MarketingScenarioBase.cs b/src/Services/Marketing/Marketing.FunctionalTests/MarketingScenarioBase.cs new file mode 100644 index 000000000..274db5f69 --- /dev/null +++ b/src/Services/Marketing/Marketing.FunctionalTests/MarketingScenarioBase.cs @@ -0,0 +1,45 @@ +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.TestHost; +using Microsoft.eShopOnContainers.Services.Marketing.API.Infrastructure; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using System.IO; +using System.Reflection; + +namespace Marketing.FunctionalTests +{ + public class MarketingScenarioBase + { + public static string CampaignsUrlBase => "api/v1/campaigns"; + + public TestServer CreateServer() + { + var path = Assembly.GetAssembly(typeof(MarketingScenarioBase)) + .Location; + + var hostBuilder = new WebHostBuilder() + .UseContentRoot(Path.GetDirectoryName(path)) + .ConfigureAppConfiguration(cb => + { + cb.AddJsonFile("appsettings.json", optional: false) + .AddEnvironmentVariables(); + }).UseStartup(); + + var testServer = new TestServer(hostBuilder); + + testServer.Host + .MigrateDbContext((context, services) => + { + var logger = services.GetService>(); + + new MarketingContextSeed() + .SeedAsync(context, logger) + .Wait(); + + }); + + return testServer; + } + } +} diff --git a/src/Services/Marketing/Marketing.FunctionalTests/MarketingTestStartup.cs b/src/Services/Marketing/Marketing.FunctionalTests/MarketingTestStartup.cs new file mode 100644 index 000000000..e227deff6 --- /dev/null +++ b/src/Services/Marketing/Marketing.FunctionalTests/MarketingTestStartup.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.eShopOnContainers.Services.Marketing.API; +using Microsoft.Extensions.Configuration; + +namespace Marketing.FunctionalTests +{ + public class MarketingTestsStartup : Startup + { + public MarketingTestsStartup(IConfiguration env) : base(env) + { + } + + protected override void ConfigureAuth(IApplicationBuilder app) + { + if (Configuration["isTest"] == bool.TrueString.ToLowerInvariant()) + { + app.UseMiddleware(); + } + else + { + base.ConfigureAuth(app); + } + } + } +} diff --git a/test/Services/IntegrationTests/Services/Marketing/UserLocationRoleScenariosBase.cs b/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarioBase.cs similarity index 92% rename from test/Services/IntegrationTests/Services/Marketing/UserLocationRoleScenariosBase.cs rename to src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarioBase.cs index cd6fcc9f3..495b3d292 100644 --- a/test/Services/IntegrationTests/Services/Marketing/UserLocationRoleScenariosBase.cs +++ b/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarioBase.cs @@ -1,4 +1,8 @@ -namespace IntegrationTests.Services.Marketing +using System; +using System.Collections.Generic; +using System.Text; + +namespace Marketing.FunctionalTests { public class UserLocationRoleScenariosBase : MarketingScenarioBase { @@ -15,7 +19,7 @@ public static class Post { - public static string AddNewuserLocationRule(int campaignId) + public static string AddNewuserLocationRule(int campaignId) => GetUserLocationRolesUrlBase(campaignId); } @@ -37,4 +41,4 @@ private static string GetUserLocationRolesUrlBase(int campaignId) => $"{CampaignsUrlBase}/{campaignId}/{EndpointLocationName}"; } -} \ No newline at end of file +} diff --git a/test/Services/IntegrationTests/Services/Marketing/UserLocationRoleScenarios.cs b/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs similarity index 89% rename from test/Services/IntegrationTests/Services/Marketing/UserLocationRoleScenarios.cs rename to src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs index f7fbd6cee..196c1b459 100644 --- a/test/Services/IntegrationTests/Services/Marketing/UserLocationRoleScenarios.cs +++ b/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs @@ -1,14 +1,13 @@ -namespace IntegrationTests.Services.Marketing -{ - using System.Net.Http; - using System.Text; - using System.Threading.Tasks; - using Xunit; - using System; - using Newtonsoft.Json; - using System.Net; - using Microsoft.eShopOnContainers.Services.Marketing.API.Dto; +using Microsoft.eShopOnContainers.Services.Marketing.API.Dto; +using Newtonsoft.Json; +using System.Net; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using Xunit; +namespace Marketing.FunctionalTests +{ public class UserLocationRoleScenarios : UserLocationRoleScenariosBase { diff --git a/test/Services/IntegrationTests/Services/Marketing/appsettings.json b/src/Services/Marketing/Marketing.FunctionalTests/appsettings.json similarity index 100% rename from test/Services/IntegrationTests/Services/Marketing/appsettings.json rename to src/Services/Marketing/Marketing.FunctionalTests/appsettings.json diff --git a/src/Services/Ordering/Ordering.FunctionalTests/AutoAuthorizeMiddleware.cs b/src/Services/Ordering/Ordering.FunctionalTests/AutoAuthorizeMiddleware.cs new file mode 100644 index 000000000..5b7d4301e --- /dev/null +++ b/src/Services/Ordering/Ordering.FunctionalTests/AutoAuthorizeMiddleware.cs @@ -0,0 +1,30 @@ +using Microsoft.AspNetCore.Http; +using System.Security.Claims; +using System.Threading.Tasks; + +namespace Ordering.FunctionalTests +{ + class AutoAuthorizeMiddleware + { + public const string IDENTITY_ID = "9e3163b9-1ae6-4652-9dc6-7898ab7b7a00"; + + private readonly RequestDelegate _next; + + public AutoAuthorizeMiddleware(RequestDelegate rd) + { + _next = rd; + } + + public async Task Invoke(HttpContext httpContext) + { + var identity = new ClaimsIdentity("cookies"); + + identity.AddClaim(new Claim("sub", IDENTITY_ID)); + identity.AddClaim(new Claim("unique_name", IDENTITY_ID)); + + httpContext.User.AddIdentity(identity); + + await _next.Invoke(httpContext); + } + } +} diff --git a/test/Services/IntegrationTests/Services/Extensions/HttpClientExtensions.cs b/src/Services/Ordering/Ordering.FunctionalTests/HttpClientExtensions.cs similarity index 79% rename from test/Services/IntegrationTests/Services/Extensions/HttpClientExtensions.cs rename to src/Services/Ordering/Ordering.FunctionalTests/HttpClientExtensions.cs index 00ed918b6..da2577b24 100644 --- a/test/Services/IntegrationTests/Services/Extensions/HttpClientExtensions.cs +++ b/src/Services/Ordering/Ordering.FunctionalTests/HttpClientExtensions.cs @@ -1,10 +1,8 @@ using Microsoft.AspNetCore.TestHost; using System; -using System.Collections.Generic; using System.Net.Http; -using System.Text; -namespace IntegrationTests.Services.Extensions +namespace Ordering.FunctionalTests { static class HttpClientExtensions { diff --git a/src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj b/src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj new file mode 100644 index 000000000..23fff0c44 --- /dev/null +++ b/src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj @@ -0,0 +1,34 @@ + + + + netcoreapp2.1 + + false + + + + + + + + + Always + + + + + + + + + + + + + + + + + + + diff --git a/test/Services/IntegrationTests/Services/Ordering/OrderingScenarioBase.cs b/src/Services/Ordering/Ordering.FunctionalTests/OrderingScenarioBase.cs similarity index 50% rename from test/Services/IntegrationTests/Services/Ordering/OrderingScenarioBase.cs rename to src/Services/Ordering/Ordering.FunctionalTests/OrderingScenarioBase.cs index 082ad4cd9..5b2979e1a 100644 --- a/test/Services/IntegrationTests/Services/Ordering/OrderingScenarioBase.cs +++ b/src/Services/Ordering/Ordering.FunctionalTests/OrderingScenarioBase.cs @@ -1,31 +1,37 @@ -namespace IntegrationTests.Services.Ordering -{ - using Microsoft.AspNetCore; - using Microsoft.AspNetCore.Hosting; - using Microsoft.AspNetCore.TestHost; - using Microsoft.eShopOnContainers.Services.Ordering.API; - using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure; - using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure; - using Microsoft.Extensions.DependencyInjection; - using Microsoft.Extensions.Configuration; - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.Options; - using System.IO; - using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.TestHost; +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Text; +using Microsoft.Extensions.Configuration; +using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.eShopOnContainers.Services.Ordering.API; +using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; +using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure; +using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; +namespace Ordering.FunctionalTests +{ public class OrderingScenarioBase { public TestServer CreateServer() { - var webHostBuilder = WebHost.CreateDefaultBuilder(); - webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\Ordering"); - webHostBuilder.UseStartup(); - webHostBuilder.ConfigureAppConfiguration((builderContext, config) => - { - config.AddJsonFile("settings.json"); - }); + var path = Assembly.GetAssembly(typeof(OrderingScenarioBase)) + .Location; + + var hostBuilder = new WebHostBuilder() + .UseContentRoot(Path.GetDirectoryName(path)) + .ConfigureAppConfiguration(cb => + { + cb.AddJsonFile("appsettings.json", optional: false) + .AddEnvironmentVariables(); + }).UseStartup(); - var testServer = new TestServer(webHostBuilder); + var testServer = new TestServer(hostBuilder); testServer.Host .MigrateDbContext((context, services) => diff --git a/test/Services/IntegrationTests/Services/Ordering/OrderingScenarios.cs b/src/Services/Ordering/Ordering.FunctionalTests/OrderingScenarios.cs similarity index 84% rename from test/Services/IntegrationTests/Services/Ordering/OrderingScenarios.cs rename to src/Services/Ordering/Ordering.FunctionalTests/OrderingScenarios.cs index 2d87e8395..b544ea221 100644 --- a/test/Services/IntegrationTests/Services/Ordering/OrderingScenarios.cs +++ b/src/Services/Ordering/Ordering.FunctionalTests/OrderingScenarios.cs @@ -1,14 +1,13 @@ -namespace IntegrationTests.Services.Ordering -{ - using IntegrationTests.Services.Extensions; - using Newtonsoft.Json; - using System.Net; - using System.Net.Http; - using System.Text; - using System.Threading.Tasks; - using WebMVC.Models; - using Xunit; +using Newtonsoft.Json; +using System.Net; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using WebMVC.Models; +using Xunit; +namespace Ordering.FunctionalTests +{ public class OrderingScenarios : OrderingScenarioBase { @@ -57,6 +56,6 @@ OrderNumber = "-1" }; return JsonConvert.SerializeObject(order); - } - } + } + } } diff --git a/test/Services/IntegrationTests/Services/Ordering/OrderingTestsStartup.cs b/src/Services/Ordering/Ordering.FunctionalTests/OrderingTestStartup.cs similarity index 66% rename from test/Services/IntegrationTests/Services/Ordering/OrderingTestsStartup.cs rename to src/Services/Ordering/Ordering.FunctionalTests/OrderingTestStartup.cs index a5aab6136..d68dd7c3a 100644 --- a/test/Services/IntegrationTests/Services/Ordering/OrderingTestsStartup.cs +++ b/src/Services/Ordering/Ordering.FunctionalTests/OrderingTestStartup.cs @@ -1,13 +1,8 @@ -using Microsoft.eShopOnContainers.Services.Ordering.API; -using System; -using System.Collections.Generic; -using System.Text; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Builder; -using IntegrationTests.Middleware; +using Microsoft.AspNetCore.Builder; +using Microsoft.eShopOnContainers.Services.Ordering.API; using Microsoft.Extensions.Configuration; -namespace IntegrationTests.Services.Ordering +namespace Ordering.FunctionalTests { public class OrderingTestsStartup : Startup { diff --git a/test/Ordering.FunctionalTests/settings.json b/src/Services/Ordering/Ordering.FunctionalTests/appsettings.json similarity index 100% rename from test/Ordering.FunctionalTests/settings.json rename to src/Services/Ordering/Ordering.FunctionalTests/appsettings.json diff --git a/test/Ordering.UnitTests/Application/IdentifiedCommandHandlerTest.cs b/src/Services/Ordering/Ordering.UnitTests/Application/IdentifiedCommandHandlerTest.cs similarity index 100% rename from test/Ordering.UnitTests/Application/IdentifiedCommandHandlerTest.cs rename to src/Services/Ordering/Ordering.UnitTests/Application/IdentifiedCommandHandlerTest.cs diff --git a/test/Ordering.UnitTests/Application/NewOrderCommandHandlerTest.cs b/src/Services/Ordering/Ordering.UnitTests/Application/NewOrderCommandHandlerTest.cs similarity index 100% rename from test/Ordering.UnitTests/Application/NewOrderCommandHandlerTest.cs rename to src/Services/Ordering/Ordering.UnitTests/Application/NewOrderCommandHandlerTest.cs diff --git a/test/Ordering.UnitTests/Application/OrderControllerTest.cs b/src/Services/Ordering/Ordering.UnitTests/Application/OrderControllerTest.cs similarity index 100% rename from test/Ordering.UnitTests/Application/OrderControllerTest.cs rename to src/Services/Ordering/Ordering.UnitTests/Application/OrderControllerTest.cs diff --git a/test/Ordering.UnitTests/Application/OrdersWebApiTest.cs b/src/Services/Ordering/Ordering.UnitTests/Application/OrdersWebApiTest.cs similarity index 100% rename from test/Ordering.UnitTests/Application/OrdersWebApiTest.cs rename to src/Services/Ordering/Ordering.UnitTests/Application/OrdersWebApiTest.cs diff --git a/test/Ordering.UnitTests/Builders.cs b/src/Services/Ordering/Ordering.UnitTests/Builders.cs similarity index 100% rename from test/Ordering.UnitTests/Builders.cs rename to src/Services/Ordering/Ordering.UnitTests/Builders.cs diff --git a/test/Ordering.UnitTests/Domain/BuyerAggregateTest.cs b/src/Services/Ordering/Ordering.UnitTests/Domain/BuyerAggregateTest.cs similarity index 100% rename from test/Ordering.UnitTests/Domain/BuyerAggregateTest.cs rename to src/Services/Ordering/Ordering.UnitTests/Domain/BuyerAggregateTest.cs diff --git a/test/Ordering.UnitTests/Domain/OrderAggregateTest.cs b/src/Services/Ordering/Ordering.UnitTests/Domain/OrderAggregateTest.cs similarity index 100% rename from test/Ordering.UnitTests/Domain/OrderAggregateTest.cs rename to src/Services/Ordering/Ordering.UnitTests/Domain/OrderAggregateTest.cs diff --git a/test/Ordering.UnitTests/Ordering.UnitTests.csproj b/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj similarity index 61% rename from test/Ordering.UnitTests/Ordering.UnitTests.csproj rename to src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj index dff99f424..ae35fa4ad 100644 --- a/test/Ordering.UnitTests/Ordering.UnitTests.csproj +++ b/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj @@ -16,10 +16,10 @@ - - - - + + + + diff --git a/test/Basket.FunctionalTests/RedisBasketRepositoryTests.cs b/test/Basket.FunctionalTests/RedisBasketRepositoryTests.cs deleted file mode 100644 index 2f2564df8..000000000 --- a/test/Basket.FunctionalTests/RedisBasketRepositoryTests.cs +++ /dev/null @@ -1,78 +0,0 @@ -using Microsoft.eShopOnContainers.Services.Basket.API; -using Microsoft.Extensions.Options; -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; -using Xunit; - -namespace Basket.FunctionalTests -{ - //public class RedisBasketRepositoryTests - //{ - // 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") - // { - // 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") - // { - // BuyerId = "buyerId", - // Items = BuildBasketItems() - // }); - - // var deleteResult = await redisBasketRepository.DeleteBasketAsync("buyerId"); - - // var result = await redisBasketRepository.GetBasketAsync(basket.BuyerId); - - // Assert.True(deleteResult); - // Assert.Null(result); - // } - - // RedisBasketRepository BuildBasketRepository() - // { - // var loggerFactory = new LoggerFactory(); - // var configuration = ConfigurationOptions.Parse("127.0.0.1", true); - // configuration.ResolveDns = true; - // return new RedisBasketRepository(loggerFactory, ConnectionMultiplexer.Connect(configuration)); - // } - - // List BuildBasketItems() - // { - // return new List() - // { - // new BasketItem() - // { - // Id = "basketId", - // PictureUrl = "pictureurl", - // ProductId = "productId", - // ProductName = "productName", - // Quantity = 1, - // UnitPrice = 1 - // } - // }; - // } - //} -} diff --git a/test/Marketing.FunctionalTests/Base/AutoAuthorizeMiddleware.cs b/test/Marketing.FunctionalTests-borrar/Base/AutoAuthorizeMiddleware.cs similarity index 100% rename from test/Marketing.FunctionalTests/Base/AutoAuthorizeMiddleware.cs rename to test/Marketing.FunctionalTests-borrar/Base/AutoAuthorizeMiddleware.cs diff --git a/test/Marketing.FunctionalTests/Base/CampaignScenarioBase.cs b/test/Marketing.FunctionalTests-borrar/Base/CampaignScenarioBase.cs similarity index 100% rename from test/Marketing.FunctionalTests/Base/CampaignScenarioBase.cs rename to test/Marketing.FunctionalTests-borrar/Base/CampaignScenarioBase.cs diff --git a/test/Marketing.FunctionalTests/Base/CampaignsScenarioBase.cs b/test/Marketing.FunctionalTests-borrar/Base/CampaignsScenarioBase.cs similarity index 100% rename from test/Marketing.FunctionalTests/Base/CampaignsScenarioBase.cs rename to test/Marketing.FunctionalTests-borrar/Base/CampaignsScenarioBase.cs diff --git a/test/Marketing.FunctionalTests/Base/LocationsScenarioBase.cs b/test/Marketing.FunctionalTests-borrar/Base/LocationsScenarioBase.cs similarity index 100% rename from test/Marketing.FunctionalTests/Base/LocationsScenarioBase.cs rename to test/Marketing.FunctionalTests-borrar/Base/LocationsScenarioBase.cs diff --git a/test/Marketing.FunctionalTests/Base/LocationsTestStartup.cs b/test/Marketing.FunctionalTests-borrar/Base/LocationsTestStartup.cs similarity index 100% rename from test/Marketing.FunctionalTests/Base/LocationsTestStartup.cs rename to test/Marketing.FunctionalTests-borrar/Base/LocationsTestStartup.cs diff --git a/test/Marketing.FunctionalTests/Base/MarketingScenarioBase.cs b/test/Marketing.FunctionalTests-borrar/Base/MarketingScenarioBase.cs similarity index 100% rename from test/Marketing.FunctionalTests/Base/MarketingScenarioBase.cs rename to test/Marketing.FunctionalTests-borrar/Base/MarketingScenarioBase.cs diff --git a/test/Marketing.FunctionalTests/Base/MarketingTestStartup.cs b/test/Marketing.FunctionalTests-borrar/Base/MarketingTestStartup.cs similarity index 100% rename from test/Marketing.FunctionalTests/Base/MarketingTestStartup.cs rename to test/Marketing.FunctionalTests-borrar/Base/MarketingTestStartup.cs diff --git a/test/Marketing.FunctionalTests/Base/UserLocationRoleScenarioBase.cs b/test/Marketing.FunctionalTests-borrar/Base/UserLocationRoleScenarioBase.cs similarity index 100% rename from test/Marketing.FunctionalTests/Base/UserLocationRoleScenarioBase.cs rename to test/Marketing.FunctionalTests-borrar/Base/UserLocationRoleScenarioBase.cs diff --git a/test/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj b/test/Marketing.FunctionalTests-borrar/Marketing.FunctionalTests.csproj similarity index 100% rename from test/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj rename to test/Marketing.FunctionalTests-borrar/Marketing.FunctionalTests.csproj diff --git a/test/Marketing.FunctionalTests/MarketingScenario.cs b/test/Marketing.FunctionalTests-borrar/MarketingScenario.cs similarity index 100% rename from test/Marketing.FunctionalTests/MarketingScenario.cs rename to test/Marketing.FunctionalTests-borrar/MarketingScenario.cs diff --git a/test/Marketing.FunctionalTests/appsettings.json b/test/Marketing.FunctionalTests-borrar/appsettings.json similarity index 100% rename from test/Marketing.FunctionalTests/appsettings.json rename to test/Marketing.FunctionalTests-borrar/appsettings.json diff --git a/test/Ordering.FunctionalTests/Base/AutoAuthorizedMiddleware.cs b/test/Ordering.FunctionalTests-borrar/Base/AutoAuthorizedMiddleware.cs similarity index 100% rename from test/Ordering.FunctionalTests/Base/AutoAuthorizedMiddleware.cs rename to test/Ordering.FunctionalTests-borrar/Base/AutoAuthorizedMiddleware.cs diff --git a/test/Ordering.FunctionalTests/Base/BasketScenarioBase.cs b/test/Ordering.FunctionalTests-borrar/Base/BasketScenarioBase.cs similarity index 100% rename from test/Ordering.FunctionalTests/Base/BasketScenarioBase.cs rename to test/Ordering.FunctionalTests-borrar/Base/BasketScenarioBase.cs diff --git a/test/Ordering.FunctionalTests/Base/BasketTestStartup.cs b/test/Ordering.FunctionalTests-borrar/Base/BasketTestStartup.cs similarity index 100% rename from test/Ordering.FunctionalTests/Base/BasketTestStartup.cs rename to test/Ordering.FunctionalTests-borrar/Base/BasketTestStartup.cs diff --git a/test/Ordering.FunctionalTests/Base/HttpClientExtensions.cs b/test/Ordering.FunctionalTests-borrar/Base/HttpClientExtensions.cs similarity index 100% rename from test/Ordering.FunctionalTests/Base/HttpClientExtensions.cs rename to test/Ordering.FunctionalTests-borrar/Base/HttpClientExtensions.cs diff --git a/test/Ordering.FunctionalTests/Base/OrderingScenarioBase.cs b/test/Ordering.FunctionalTests-borrar/Base/OrderingScenarioBase.cs similarity index 100% rename from test/Ordering.FunctionalTests/Base/OrderingScenarioBase.cs rename to test/Ordering.FunctionalTests-borrar/Base/OrderingScenarioBase.cs diff --git a/test/Ordering.FunctionalTests/Base/OrderingTestStartup.cs b/test/Ordering.FunctionalTests-borrar/Base/OrderingTestStartup.cs similarity index 100% rename from test/Ordering.FunctionalTests/Base/OrderingTestStartup.cs rename to test/Ordering.FunctionalTests-borrar/Base/OrderingTestStartup.cs diff --git a/test/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj b/test/Ordering.FunctionalTests-borrar/Ordering.FunctionalTests.csproj similarity index 100% rename from test/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj rename to test/Ordering.FunctionalTests-borrar/Ordering.FunctionalTests.csproj diff --git a/test/Ordering.FunctionalTests/OrderingScenario.cs b/test/Ordering.FunctionalTests-borrar/OrderingScenario.cs similarity index 100% rename from test/Ordering.FunctionalTests/OrderingScenario.cs rename to test/Ordering.FunctionalTests-borrar/OrderingScenario.cs diff --git a/test/Services/FunctionalTests/Services/Ordering/settings.json b/test/Ordering.FunctionalTests-borrar/settings.json similarity index 100% rename from test/Services/FunctionalTests/Services/Ordering/settings.json rename to test/Ordering.FunctionalTests-borrar/settings.json diff --git a/test/Services/FunctionalTests/FunctionalTests.csproj b/test/Services/FunctionalTests/FunctionalTests.csproj index f5bc0ff62..fd3b506c7 100644 --- a/test/Services/FunctionalTests/FunctionalTests.csproj +++ b/test/Services/FunctionalTests/FunctionalTests.csproj @@ -17,6 +17,15 @@ + + + + + + + + + @@ -34,12 +43,27 @@ PreserveNewest + + Always + + + Always + + + Always + + + Always + PreserveNewest PreserveNewest + + PreserveNewest + @@ -59,15 +83,9 @@ - - PreserveNewest - PreserveNewest - - PreserveNewest - diff --git a/test/Services/FunctionalTests/Middleware/AutoAuthorizeMiddleware.cs b/test/Services/FunctionalTests/Middleware/AutoAuthorizeMiddleware.cs index 093ca4e97..65206db4f 100644 --- a/test/Services/FunctionalTests/Middleware/AutoAuthorizeMiddleware.cs +++ b/test/Services/FunctionalTests/Middleware/AutoAuthorizeMiddleware.cs @@ -9,7 +9,11 @@ namespace FunctionalTests.Middleware { class AutoAuthorizeMiddleware { + public const string IDENTITY_ID = "9e3163b9-1ae6-4652-9dc6-7898ab7b7a00"; + private readonly RequestDelegate _next; + + public AutoAuthorizeMiddleware(RequestDelegate rd) { _next = rd; @@ -18,7 +22,10 @@ namespace FunctionalTests.Middleware public async Task Invoke(HttpContext httpContext) { var identity = new ClaimsIdentity("cookies"); - identity.AddClaim(new Claim("sub", "9e3163b9-1ae6-4652-9dc6-7898ab7b7a00")); + + identity.AddClaim(new Claim("sub", IDENTITY_ID)); + identity.AddClaim(new Claim("unique_name", IDENTITY_ID)); + httpContext.User.AddIdentity(identity); await _next.Invoke(httpContext); } diff --git a/test/Services/FunctionalTests/Services/Basket/BasketScenariosBase.cs b/test/Services/FunctionalTests/Services/Basket/BasketScenariosBase.cs index d1454fb23..a447d2922 100644 --- a/test/Services/FunctionalTests/Services/Basket/BasketScenariosBase.cs +++ b/test/Services/FunctionalTests/Services/Basket/BasketScenariosBase.cs @@ -1,26 +1,39 @@ -namespace FunctionalTests.Services.Basket -{ - using Microsoft.AspNetCore; - using Microsoft.AspNetCore.Hosting; - using Microsoft.AspNetCore.TestHost; - using Microsoft.Extensions.Configuration; - using System.IO; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.TestHost; +using Microsoft.Extensions.Configuration; +using System.IO; +using System.Reflection; +namespace FunctionalTests.Services.Basket +{ public class BasketScenariosBase { private const string ApiUrlBase = "api/v1/basket"; + public TestServer CreateServer() { - var webHostBuilder = WebHost.CreateDefaultBuilder(); - webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\Basket"); - webHostBuilder.UseStartup(); - - return new TestServer(webHostBuilder); + var path = Assembly.GetAssembly(typeof(BasketScenariosBase)) + .Location; + + var hostBuilder = new WebHostBuilder() + .UseContentRoot(Path.GetDirectoryName(path)) + .ConfigureAppConfiguration(cb => + { + cb.AddJsonFile("Services/Basket/appsettings.json", optional: false) + .AddEnvironmentVariables(); + }).UseStartup(); + + return new TestServer(hostBuilder); } public static class Get { + public static string GetBasket(int id) + { + return $"{ApiUrlBase}/{id}"; + } + public static string GetBasketByCustomer(string customerId) { return $"{ApiUrlBase}/{customerId}"; @@ -30,7 +43,7 @@ public static class Post { public static string CreateBasket = $"{ApiUrlBase}/"; - public static string Checkout = $"{ApiUrlBase}/checkout"; + public static string CheckoutOrder = $"{ApiUrlBase}/checkout"; } } -} \ No newline at end of file +} diff --git a/test/Services/FunctionalTests/Services/Basket/BasketTestsStartup.cs b/test/Services/FunctionalTests/Services/Basket/BasketTestsStartup.cs index a6695c12f..cfb91fd40 100644 --- a/test/Services/FunctionalTests/Services/Basket/BasketTestsStartup.cs +++ b/test/Services/FunctionalTests/Services/Basket/BasketTestsStartup.cs @@ -1,14 +1,13 @@ using FunctionalTests.Middleware; using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; using Microsoft.eShopOnContainers.Services.Basket.API; using Microsoft.Extensions.Configuration; namespace FunctionalTests.Services.Basket { - public class BasketTestsStartup : Startup + class BasketTestsStartup : Startup { - public BasketTestsStartup(IConfiguration configuration) : base(configuration) + public BasketTestsStartup(IConfiguration env) : base(env) { } @@ -22,6 +21,6 @@ namespace FunctionalTests.Services.Basket { base.ConfigureAuth(app); } - } + } } } diff --git a/test/Services/FunctionalTests/Services/Basket/appsettings.json b/test/Services/FunctionalTests/Services/Basket/appsettings.json index f83d4de4b..5e8dbc02e 100644 --- a/test/Services/FunctionalTests/Services/Basket/appsettings.json +++ b/test/Services/FunctionalTests/Services/Basket/appsettings.json @@ -1,4 +1,4 @@ -{ +{ "Logging": { "IncludeScopes": false, "LogLevel": { @@ -13,5 +13,3 @@ "EventBusConnection": "localhost", "SubscriptionClientName": "Basket" } - - diff --git a/test/Services/FunctionalTests/Services/Catalog/CatalogScenariosBase.cs b/test/Services/FunctionalTests/Services/Catalog/CatalogScenariosBase.cs index 2d5daff6d..3ce419230 100644 --- a/test/Services/FunctionalTests/Services/Catalog/CatalogScenariosBase.cs +++ b/test/Services/FunctionalTests/Services/Catalog/CatalogScenariosBase.cs @@ -8,6 +8,8 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System.IO; +using System.Reflection; +using Microsoft.Extensions.Configuration; namespace FunctionalTests.Services.Catalog { @@ -15,11 +17,18 @@ namespace FunctionalTests.Services.Catalog { public TestServer CreateServer() { - var webHostBuilder = WebHost.CreateDefaultBuilder(); - webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\Catalog"); - webHostBuilder.UseStartup(); + var path = Assembly.GetAssembly(typeof(CatalogScenariosBase)) + .Location; - var testServer = new TestServer(webHostBuilder); + var hostBuilder = new WebHostBuilder() + .UseContentRoot(Path.GetDirectoryName(path)) + .ConfigureAppConfiguration(cb => + { + cb.AddJsonFile("Services/Catalog/appsettings.json", optional: false) + .AddEnvironmentVariables(); + }).UseStartup(); + + var testServer = new TestServer(hostBuilder); testServer.Host .MigrateDbContext((context, services) => diff --git a/test/Services/FunctionalTests/Services/Location/LocationsScenariosBase.cs b/test/Services/FunctionalTests/Services/Location/LocationsScenariosBase.cs index d3ede7d15..334f3f024 100644 --- a/test/Services/FunctionalTests/Services/Location/LocationsScenariosBase.cs +++ b/test/Services/FunctionalTests/Services/Location/LocationsScenariosBase.cs @@ -6,16 +6,26 @@ using Microsoft.Extensions.Configuration; using System; using System.IO; + using System.Reflection; public class LocationsScenariosBase { public TestServer CreateServer() { - var webHostBuilder = WebHost.CreateDefaultBuilder(); - webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\Location"); - webHostBuilder.UseStartup(); - - return new TestServer(webHostBuilder); + var path = Assembly.GetAssembly(typeof(LocationsScenariosBase)) + .Location; + + var hostBuilder = new WebHostBuilder() + .UseContentRoot(Path.GetDirectoryName(path)) + .ConfigureAppConfiguration(cb => + { + cb.AddJsonFile("Services/Locations/appsettings.json", optional: false) + .AddEnvironmentVariables(); + }).UseStartup(); + + var testServer = new TestServer(hostBuilder); + + return testServer; } public static class Get diff --git a/test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs b/test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs index fe4f6c0cd..63b9214b2 100644 --- a/test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs +++ b/test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs @@ -1,12 +1,15 @@ -namespace FunctionalTests.Services.Marketing +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.TestHost; +using Microsoft.eShopOnContainers.Services.Marketing.API.Infrastructure; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using System.IO; +using System.Reflection; +using Microsoft.Extensions.Configuration; + +namespace FunctionalTests.Services.Marketing { - using Microsoft.AspNetCore; - using Microsoft.AspNetCore.Hosting; - using Microsoft.AspNetCore.TestHost; - using Microsoft.eShopOnContainers.Services.Marketing.API.Infrastructure; - using Microsoft.Extensions.DependencyInjection; - using Microsoft.Extensions.Logging; - using System.IO; public class MarketingScenariosBase { @@ -14,21 +17,29 @@ public TestServer CreateServer() { - var webHostBuilder = WebHost.CreateDefaultBuilder(); - webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\Marketing"); - webHostBuilder.UseStartup(); + var path = Assembly.GetAssembly(typeof(MarketingScenariosBase)) + .Location; + + var hostBuilder = new WebHostBuilder() + .UseContentRoot(Path.GetDirectoryName(path)) + .ConfigureAppConfiguration(cb => + { + cb.AddJsonFile("Services/Marketing/appsettings.json", optional: false) + .AddEnvironmentVariables(); + }).UseStartup(); - var testServer = new TestServer(webHostBuilder); + var testServer = new TestServer(hostBuilder); testServer.Host - .MigrateDbContext((context, services) => - { - var logger = services.GetService>(); - - new MarketingContextSeed() - .SeedAsync(context, logger) - .Wait(); - }); + .MigrateDbContext((context, services) => + { + var logger = services.GetService>(); + + new MarketingContextSeed() + .SeedAsync(context, logger) + .Wait(); + }); + return testServer; } diff --git a/test/Services/FunctionalTests/Services/Ordering/OrderingScenarios.cs b/test/Services/FunctionalTests/Services/Ordering/OrderingScenarios.cs index 0f4426dd7..b09526bf3 100644 --- a/test/Services/FunctionalTests/Services/Ordering/OrderingScenarios.cs +++ b/test/Services/FunctionalTests/Services/Ordering/OrderingScenarios.cs @@ -34,7 +34,7 @@ namespace FunctionalTests.Services.Ordering await basketClient.PostAsync(BasketScenariosBase.Post.CreateBasket, contentBasket); // AND basket checkout is sent - await basketClient.PostAsync(BasketScenariosBase.Post.Checkout, new StringContent(BuildCheckout(cityExpected), UTF8Encoding.UTF8, "application/json")); + await basketClient.PostAsync(BasketScenariosBase.Post.CheckoutOrder, new StringContent(BuildCheckout(cityExpected), UTF8Encoding.UTF8, "application/json")); // WHEN Order is created in Ordering.api var newOrder = await TryGetNewOrderCreated(cityExpected, orderClient); @@ -43,13 +43,21 @@ namespace FunctionalTests.Services.Ordering await orderClient.PutAsync(OrderingScenariosBase.Put.CancelOrder, new StringContent(BuildCancelOrder(newOrder.OrderNumber), UTF8Encoding.UTF8, "application/json")); // AND the requested order is retrieved - var order = await TryGetNewOrderCreated(cityExpected, orderClient); + var order = await TryGetOrder(newOrder.OrderNumber, orderClient); // THEN check status Assert.Equal(orderStatusExpected, order.Status); } } + async Task TryGetOrder(string orderNumber, HttpClient orderClient) + { + var ordersGetResponse = await orderClient.GetStringAsync(OrderingScenariosBase.Get.Orders); + var orders = JsonConvert.DeserializeObject>(ordersGetResponse); + + return orders.Single(o => o.OrderNumber == orderNumber); + } + private async Task TryGetNewOrderCreated(string city, HttpClient orderClient) { var counter = 0; @@ -71,6 +79,7 @@ namespace FunctionalTests.Services.Ordering int.TryParse(lastOrder.OrderNumber, out int id); var orderDetails = await orderClient.GetStringAsync(OrderingScenariosBase.Get.OrderBy(id)); order = JsonConvert.DeserializeObject(orderDetails); + order.City = city; if (IsOrderCreated(order, city)) { diff --git a/test/Services/FunctionalTests/Services/Ordering/OrderingScenariosBase.cs b/test/Services/FunctionalTests/Services/Ordering/OrderingScenariosBase.cs index b41f66fb9..ad5230fcd 100644 --- a/test/Services/FunctionalTests/Services/Ordering/OrderingScenariosBase.cs +++ b/test/Services/FunctionalTests/Services/Ordering/OrderingScenariosBase.cs @@ -1,5 +1,4 @@ -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.TestHost; using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; using Microsoft.eShopOnContainers.Services.Ordering.API; @@ -10,6 +9,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System.IO; +using System.Reflection; namespace FunctionalTests.Services.Ordering { @@ -17,15 +17,18 @@ namespace FunctionalTests.Services.Ordering { public TestServer CreateServer() { - var webHostBuilder = WebHost.CreateDefaultBuilder(); - webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\Ordering"); - webHostBuilder.UseStartup(); - webHostBuilder.ConfigureAppConfiguration((builderContext, config) => - { - config.AddJsonFile("settings.json"); - }); + var path = Assembly.GetAssembly(typeof(OrderingScenariosBase)) + .Location; - var testServer = new TestServer(webHostBuilder); + var hostBuilder = new WebHostBuilder() + .UseContentRoot(Path.GetDirectoryName(path)) + .ConfigureAppConfiguration(cb => + { + cb.AddJsonFile("Services/Ordering/appsettings.json", optional: false) + .AddEnvironmentVariables(); + }).UseStartup(); + + var testServer = new TestServer(hostBuilder); testServer.Host .MigrateDbContext((context, services) => diff --git a/test/Services/IntegrationTests/Services/Ordering/settings.json b/test/Services/FunctionalTests/Services/Ordering/appsettings.json similarity index 100% rename from test/Services/IntegrationTests/Services/Ordering/settings.json rename to test/Services/FunctionalTests/Services/Ordering/appsettings.json diff --git a/test/Services/FunctionalTests/Setup/CatalogBrands.csv b/test/Services/FunctionalTests/Setup/CatalogBrands.csv new file mode 100644 index 000000000..95c9ee64c --- /dev/null +++ b/test/Services/FunctionalTests/Setup/CatalogBrands.csv @@ -0,0 +1,8 @@ +CatalogBrand +Azure +.NET +Visual Studio +SQL Server +Other +CatalogBrandTestOne +CatalogBrandTestTwo \ No newline at end of file diff --git a/test/Services/FunctionalTests/Setup/CatalogItems.csv b/test/Services/FunctionalTests/Setup/CatalogItems.csv new file mode 100644 index 000000000..0257216d4 --- /dev/null +++ b/test/Services/FunctionalTests/Setup/CatalogItems.csv @@ -0,0 +1,14 @@ +CatalogTypeName,CatalogBrandName,Description,Name,Price,PictureFileName,availablestock,onreorder +T-Shirt,.NET,".NET Bot Black Hoodie, and more",.NET Bot Black Hoodie,19.5,1.png,100,false +Mug,.NET,.NET Black & White Mug,.NET Black & White Mug,8.50,2.png,89,true +T-Shirt,Other,Prism White T-Shirt,Prism White T-Shirt,12,3.png,56,false +T-Shirt,.NET,.NET Foundation T-shirt,.NET Foundation T-shirt,12,4.png,120,false +Sheet,Other,Roslyn Red Sheet,Roslyn Red Sheet,8.5,5.png,55,false +T-Shirt,.NET,.NET Blue Hoodie,.NET Blue Hoodie,12,6.png,17,false +T-Shirt,Other,Roslyn Red T-Shirt,Roslyn Red T-Shirt",12,7.png,8,false +T-Shirt,Other,Kudu Purple Hoodie,Kudu Purple Hoodie,8.5,8.png,34,false +Mug,Other,Cup White Mug,Cup White Mug,12,9.png,76,false +Sheet,.NET,.NET Foundation Sheet,.NET Foundation Sheet,12,10.png,11,false +Sheet,.NET,Cup Sheet,Cup Sheet,8.5,11.png,3,false +T-Shirt,Other,Prism White TShirt,Prism White TShirt,12,12.png,0,false +Mug, Other, De los Palotes, pepito, 12, 12.png, 0, false \ No newline at end of file diff --git a/test/Services/FunctionalTests/Setup/CatalogItems.zip b/test/Services/FunctionalTests/Setup/CatalogItems.zip new file mode 100644 index 000000000..6d3edfb3c Binary files /dev/null and b/test/Services/FunctionalTests/Setup/CatalogItems.zip differ diff --git a/test/Services/FunctionalTests/Setup/CatalogTypes.csv b/test/Services/FunctionalTests/Setup/CatalogTypes.csv new file mode 100644 index 000000000..ae636c265 --- /dev/null +++ b/test/Services/FunctionalTests/Setup/CatalogTypes.csv @@ -0,0 +1,7 @@ +CatalogType +Mug +T-Shirt +Sheet +USB Memory Stick +CatalogTypeTestOne +CatalogTypeTestTwo \ No newline at end of file diff --git a/test/Services/FunctionalTests/appsettings.json b/test/Services/FunctionalTests/appsettings.json deleted file mode 100644 index 2b1bdb46a..000000000 --- a/test/Services/FunctionalTests/appsettings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ConnectionString": "127.0.0.1", - "IdentityUrl": "http://localhost:5105", - "isTest": "true", - "EventBusConnection": "localhost" -} diff --git a/test/Services/IntegrationTests/IntegrationTests.csproj b/test/Services/IntegrationTests/IntegrationTests.csproj deleted file mode 100644 index 9172f4254..000000000 --- a/test/Services/IntegrationTests/IntegrationTests.csproj +++ /dev/null @@ -1,66 +0,0 @@ - - - - netcoreapp2.1 - IntegrationTests - IntegrationTests - true - $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; - false - false - false - - - - - - - - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - - - - - - - - - - - - - - - - - - - - - - - PreserveNewest - - - - - - - - diff --git a/test/Services/IntegrationTests/Properties/AssemblyInfo.cs b/test/Services/IntegrationTests/Properties/AssemblyInfo.cs deleted file mode 100644 index 2adf86bca..000000000 --- a/test/Services/IntegrationTests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("FunctionalTests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("621e7211-58d0-45fd-9600-1cb490bd930e")] diff --git a/test/Services/IntegrationTests/Services/Basket/BasketScenarioBase.cs b/test/Services/IntegrationTests/Services/Basket/BasketScenarioBase.cs deleted file mode 100644 index 2136867f3..000000000 --- a/test/Services/IntegrationTests/Services/Basket/BasketScenarioBase.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.TestHost; -using System.IO; - -namespace IntegrationTests.Services.Basket -{ - public class BasketScenarioBase - { - private const string ApiUrlBase = "api/v1/basket"; - - public TestServer CreateServer() - { - var webHostBuilder = WebHost.CreateDefaultBuilder(); - webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\basket"); - webHostBuilder.UseStartup(); - - return new TestServer(webHostBuilder); - } - - public static class Get - { - public static string GetBasket(int id) - { - return $"{ApiUrlBase}/{id}"; - } - } - - public static class Post - { - public static string Basket = $"{ApiUrlBase}/"; - public static string CheckoutOrder = $"{ApiUrlBase}/checkout"; - } - } -} diff --git a/test/Services/IntegrationTests/Services/Basket/BasketScenarios.cs b/test/Services/IntegrationTests/Services/Basket/BasketScenarios.cs deleted file mode 100644 index 747efc8ed..000000000 --- a/test/Services/IntegrationTests/Services/Basket/BasketScenarios.cs +++ /dev/null @@ -1,94 +0,0 @@ -using IntegrationTests.Services.Extensions; -using Microsoft.eShopOnContainers.Services.Basket.API.Model; -using Newtonsoft.Json; -using System; -using System.Net.Http; -using System.Text; -using System.Threading.Tasks; -using WebMVC.Models; -using Xunit; - -namespace IntegrationTests.Services.Basket -{ - public class BasketScenarios - : BasketScenarioBase - { - [Fact] - public async Task Post_basket_and_response_ok_status_code() - { - using (var server = CreateServer()) - { - var content = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); - var response = await server.CreateClient() - .PostAsync(Post.Basket, content); - - response.EnsureSuccessStatusCode(); - } - } - - [Fact] - public async Task Get_basket_and_response_ok_status_code() - { - using (var server = CreateServer()) - { - var response = await server.CreateClient() - .GetAsync(Get.GetBasket(1)); - - response.EnsureSuccessStatusCode(); - } - } - - [Fact] - public async Task Send_Checkout_basket_and_response_ok_status_code() - { - using (var server = CreateServer()) - { - var contentBasket = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); - await server.CreateClient() - .PostAsync(Post.Basket, contentBasket); - - var contentCheckout = new StringContent(BuildCheckout(), UTF8Encoding.UTF8, "application/json"); - var response = await server.CreateIdempotentClient() - .PostAsync(Post.CheckoutOrder, contentCheckout); - - response.EnsureSuccessStatusCode(); - } - } - - string BuildBasket() - { - var order = new CustomerBasket("1234"); - - order.Items.Add(new BasketItem - { - ProductId = "1", - ProductName = ".NET Bot Black Hoodie", - UnitPrice = 10, - Quantity = 1 - }); - - return JsonConvert.SerializeObject(order); - } - - string BuildCheckout() - { - var checkoutBasket = new BasketDTO() - { - City = "city", - Street = "street", - State = "state", - Country = "coutry", - ZipCode = "zipcode", - CardNumber = "1234567890123456", - CardHolderName = "CardHolderName", - CardExpiration = DateTime.UtcNow.AddDays(1), - CardSecurityNumber = "123", - CardTypeId = 1, - Buyer = "Buyer", - RequestId = Guid.NewGuid() - }; - - return JsonConvert.SerializeObject(checkoutBasket); - } - } -} diff --git a/test/Services/IntegrationTests/Services/Basket/BasketTestsStartup.cs b/test/Services/IntegrationTests/Services/Basket/BasketTestsStartup.cs deleted file mode 100644 index 6bc1bbe6d..000000000 --- a/test/Services/IntegrationTests/Services/Basket/BasketTestsStartup.cs +++ /dev/null @@ -1,27 +0,0 @@ -using IntegrationTests.Middleware; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.eShopOnContainers.Services.Basket.API; -using Microsoft.Extensions.Configuration; - -namespace IntegrationTests.Services.Basket -{ - public class BasketTestsStartup : Startup - { - public BasketTestsStartup(IConfiguration env) : base(env) - { - } - - protected override void ConfigureAuth(IApplicationBuilder app) - { - if (Configuration["isTest"] == bool.TrueString.ToLowerInvariant()) - { - app.UseMiddleware(); - } - else - { - base.ConfigureAuth(app); - } - } - } -} diff --git a/test/Services/IntegrationTests/Services/Basket/appsettings.json b/test/Services/IntegrationTests/Services/Basket/appsettings.json deleted file mode 100644 index f83d4de4b..000000000 --- a/test/Services/IntegrationTests/Services/Basket/appsettings.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "Logging": { - "IncludeScopes": false, - "LogLevel": { - "Default": "Debug", - "System": "Information", - "Microsoft": "Information" - } - }, - "IdentityUrl": "http://localhost:5105", - "ConnectionString": "127.0.0.1", - "isTest": "true", - "EventBusConnection": "localhost", - "SubscriptionClientName": "Basket" -} - - diff --git a/test/Services/IntegrationTests/Services/Marketing/MarketingScenariosBase.cs b/test/Services/IntegrationTests/Services/Marketing/MarketingScenariosBase.cs deleted file mode 100644 index 7d0bf784e..000000000 --- a/test/Services/IntegrationTests/Services/Marketing/MarketingScenariosBase.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace IntegrationTests.Services.Marketing -{ - using Microsoft.AspNetCore; - using Microsoft.AspNetCore.Hosting; - using Microsoft.AspNetCore.TestHost; - using Microsoft.eShopOnContainers.Services.Marketing.API.Infrastructure; - using Microsoft.Extensions.Logging; - using Microsoft.Extensions.DependencyInjection; - using System.IO; - - public class MarketingScenarioBase - { - public static string CampaignsUrlBase => "api/v1/campaigns"; - - public TestServer CreateServer() - { - var webHostBuilder = WebHost.CreateDefaultBuilder(); - webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory() + "\\Services\\Marketing"); - webHostBuilder.UseStartup(); - - var testServer = new TestServer(webHostBuilder); - - testServer.Host - .MigrateDbContext((context, services) => - { - var logger = services.GetService>(); - - new MarketingContextSeed() - .SeedAsync(context, logger) - .Wait(); - - }); - - return testServer; - } - } -} \ No newline at end of file diff --git a/test/Services/IntegrationTests/Services/Marketing/MarketingTestsStartup.cs b/test/Services/IntegrationTests/Services/Marketing/MarketingTestsStartup.cs deleted file mode 100644 index b2d8ed3dc..000000000 --- a/test/Services/IntegrationTests/Services/Marketing/MarketingTestsStartup.cs +++ /dev/null @@ -1,27 +0,0 @@ -namespace IntegrationTests.Services.Marketing -{ - using Microsoft.eShopOnContainers.Services.Marketing.API; - using Microsoft.AspNetCore.Hosting; - using Microsoft.AspNetCore.Builder; - using IntegrationTests.Middleware; - using Microsoft.Extensions.Configuration; - - public class MarketingTestsStartup : Startup - { - public MarketingTestsStartup(IConfiguration env) : base(env) - { - } - - protected override void ConfigureAuth(IApplicationBuilder app) - { - if (Configuration["isTest"] == bool.TrueString.ToLowerInvariant()) - { - app.UseMiddleware(); - } - else - { - base.ConfigureAuth(app); - } - } - } -} diff --git a/test/Services/UnitTest/Account/AccountControllerTest.cs b/test/Services/UnitTest/Account/AccountControllerTest.cs deleted file mode 100644 index d413c9d12..000000000 --- a/test/Services/UnitTest/Account/AccountControllerTest.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Http.Authentication; -using Microsoft.AspNetCore.Mvc; -using Microsoft.eShopOnContainers.WebMVC.Controllers; -using Moq; -using System.Security.Claims; -using Xunit; - -namespace UnitTest.Account -{ - public class AccountControllerTest - { - private readonly Mock _httpContextMock; - - public AccountControllerTest() - { - _httpContextMock = new Mock(); - } - - /* TBD: Find a way to mock HttpContext GetTokenAsync method */ - //[Fact] - //public void Signin_with_token_success() - //{ - // //Arrange - // var fakeCP = GenerateFakeClaimsIdentity(); - // var mockAuth = new Mock(); - - // _httpContextMock.Setup(x => x.User) - // .Returns(new ClaimsPrincipal(fakeCP)); - - // _httpContextMock.Setup(c => c.Authentication) - // .Returns(mockAuth.Object); - - // //Act - // var accountController = new AccountController(); - // accountController.ControllerContext.HttpContext = _httpContextMock.Object; - // var actionResult = accountController.SignIn("").Result; - - // //Assert - // var redirectResult = Assert.IsType(actionResult); - // Assert.Equal(redirectResult.ActionName, "Index"); - // Assert.Equal(redirectResult.ControllerName, "Catalog"); - //} - - private ClaimsIdentity GenerateFakeClaimsIdentity() - { - var ci = new ClaimsIdentity(); - ci.AddClaim(new Claim("access_token", "fakeToken")); - return ci; - } - } -} diff --git a/test/Services/UnitTest/Basket/Application/BasketWebApiTest.cs b/test/Services/UnitTest/Basket/Application/BasketWebApiTest.cs deleted file mode 100644 index 7e17a9980..000000000 --- a/test/Services/UnitTest/Basket/Application/BasketWebApiTest.cs +++ /dev/null @@ -1,116 +0,0 @@ -using Basket.API.IntegrationEvents.Events; -using Basket.API.Model; -using Microsoft.AspNetCore.Mvc; -using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; -using Microsoft.eShopOnContainers.Services.Basket.API.Controllers; -using Microsoft.eShopOnContainers.Services.Basket.API.Model; -using Moq; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Xunit; -using IBasketIdentityService = Microsoft.eShopOnContainers.Services.Basket.API.Services.IIdentityService; - -namespace UnitTest.Basket.Application -{ - public class BasketWebApiTest - { - private readonly Mock _basketRepositoryMock; - private readonly Mock _identityServiceMock; - private readonly Mock _serviceBusMock; - - public BasketWebApiTest() - { - _basketRepositoryMock = new Mock(); - _identityServiceMock = new Mock(); - _serviceBusMock = new Mock(); - } - - [Fact] - public async Task Get_customer_basket_success() - { - //Arrange - var fakeCustomerId = "1"; - var fakeCustomerBasket = GetCustomerBasketFake(fakeCustomerId); - - _basketRepositoryMock.Setup(x => x.GetBasketAsync(It.IsAny())) - .Returns(Task.FromResult(fakeCustomerBasket)); - _identityServiceMock.Setup(x => x.GetUserIdentity()).Returns(fakeCustomerId); - - _serviceBusMock.Setup(x => x.Publish(It.IsAny())); - //Act - var basketController = new BasketController( - _basketRepositoryMock.Object, _identityServiceMock.Object, _serviceBusMock.Object); - var actionResult = await basketController.Get(fakeCustomerId) as OkObjectResult; - - //Assert - Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK); - Assert.Equal(((CustomerBasket)actionResult.Value).BuyerId, fakeCustomerId); - } - - [Fact] - public async Task Post_customer_basket_success() - { - //Arrange - var fakeCustomerId = "1"; - var fakeCustomerBasket = GetCustomerBasketFake(fakeCustomerId); - - _basketRepositoryMock.Setup(x => x.UpdateBasketAsync(It.IsAny())) - .Returns(Task.FromResult(fakeCustomerBasket)); - _identityServiceMock.Setup(x => x.GetUserIdentity()).Returns(fakeCustomerId); - _serviceBusMock.Setup(x => x.Publish(It.IsAny())); - //Act - var basketController = new BasketController( - _basketRepositoryMock.Object, _identityServiceMock.Object, _serviceBusMock.Object); - - var actionResult = await basketController.Post(fakeCustomerBasket) as OkObjectResult; - - //Assert - Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK); - Assert.Equal(((CustomerBasket)actionResult.Value).BuyerId, fakeCustomerId); - } - - [Fact] - public async Task Doing_Checkout_Without_Basket_Should_Return_Bad_Request() - { - var fakeCustomerId = "2"; - _basketRepositoryMock.Setup(x => x.GetBasketAsync(It.IsAny())) - .Returns(Task.FromResult((CustomerBasket)null)); - _identityServiceMock.Setup(x => x.GetUserIdentity()).Returns(fakeCustomerId); - //Act - var basketController = new BasketController( - _basketRepositoryMock.Object, _identityServiceMock.Object, _serviceBusMock.Object); - - var result = await basketController.Checkout(new BasketCheckout(), Guid.NewGuid().ToString()) as BadRequestResult; - Assert.NotNull(result); - } - - [Fact] - public async Task Doing_Checkout_Wit_Basket_Should_Publish_UserCheckoutAccepted_Integration_Event() - { - var fakeCustomerId = "1"; - var fakeCustomerBasket = GetCustomerBasketFake(fakeCustomerId); - _basketRepositoryMock.Setup(x => x.GetBasketAsync(It.IsAny())) - .Returns(Task.FromResult(fakeCustomerBasket)); - _identityServiceMock.Setup(x => x.GetUserIdentity()).Returns(fakeCustomerId); - //Act - var basketController = new BasketController( - _basketRepositoryMock.Object, _identityServiceMock.Object, _serviceBusMock.Object); - - var result = await basketController.Checkout(new BasketCheckout(), Guid.NewGuid().ToString()) as AcceptedResult; - _serviceBusMock.Verify(mock => mock.Publish(It.IsAny()), Times.Once); - Assert.NotNull(result); - } - - private CustomerBasket GetCustomerBasketFake(string fakeCustomerId) - { - return new CustomerBasket(fakeCustomerId) - { - Items = new List() - { - new BasketItem() - } - }; - } - } -} diff --git a/test/Services/UnitTest/Basket/Application/CartControllerTest.cs b/test/Services/UnitTest/Basket/Application/CartControllerTest.cs deleted file mode 100644 index 63f74cf35..000000000 --- a/test/Services/UnitTest/Basket/Application/CartControllerTest.cs +++ /dev/null @@ -1,131 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.eShopOnContainers.WebMVC.Controllers; -using Microsoft.eShopOnContainers.WebMVC.Services; -using Microsoft.eShopOnContainers.WebMVC.ViewModels; -using Moq; -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; -using Xunit; -using BasketModel = Microsoft.eShopOnContainers.WebMVC.ViewModels.Basket; - -namespace UnitTest.Basket.Application -{ - public class CartControllerTest - { - private readonly Mock _catalogServiceMock; - private readonly Mock _basketServiceMock; - private readonly Mock> _identityParserMock; - private readonly Mock _contextMock; - - public CartControllerTest() - { - _catalogServiceMock = new Mock(); - _basketServiceMock = new Mock(); - _identityParserMock = new Mock>(); - _contextMock = new Mock(); - } - - [Fact] - public async Task Post_cart_success() - { - //Arrange - var fakeBuyerId = "1"; - var action = string.Empty; - var fakeBasket = GetFakeBasket(fakeBuyerId); - var fakeQuantities = new Dictionary() - { - ["fakeProdA"] = 1, - ["fakeProdB"] = 2 - }; - - _basketServiceMock.Setup(x => x.SetQuantities(It.IsAny(), It.IsAny>())) - .Returns(Task.FromResult(fakeBasket)); - - _basketServiceMock.Setup(x => x.UpdateBasket(It.IsAny())) - .Returns(Task.FromResult(fakeBasket)); - - //Act - var cartController = new CartController(_basketServiceMock.Object, _catalogServiceMock.Object, _identityParserMock.Object); - cartController.ControllerContext.HttpContext = _contextMock.Object; - var actionResult = await cartController.Index(fakeQuantities, action); - - //Assert - var viewResult = Assert.IsType(actionResult); - } - - [Fact] - public async Task Post_cart_checkout_success() - { - //Arrange - var fakeBuyerId = "1"; - var action = "[ Checkout ]"; - var fakeBasket = GetFakeBasket(fakeBuyerId); - var fakeQuantities = new Dictionary() - { - ["fakeProdA"] = 1, - ["fakeProdB"] = 2 - }; - - _basketServiceMock.Setup(x => x.SetQuantities(It.IsAny(), It.IsAny>())) - .Returns(Task.FromResult(fakeBasket)); - - _basketServiceMock.Setup(x => x.UpdateBasket(It.IsAny())) - .Returns(Task.FromResult(fakeBasket)); - - //Act - var orderController = new CartController(_basketServiceMock.Object, _catalogServiceMock.Object, _identityParserMock.Object); - orderController.ControllerContext.HttpContext = _contextMock.Object; - var actionResult = await orderController.Index(fakeQuantities, action); - - //Assert - var redirectToActionResult = Assert.IsType(actionResult); - Assert.Equal("Order", redirectToActionResult.ControllerName); - Assert.Equal("Create", redirectToActionResult.ActionName); - } - - [Fact] - public async Task Add_to_cart_success() - { - //Arrange - var fakeCatalogItem = GetFakeCatalogItem(); - - _basketServiceMock.Setup(x => x.AddItemToBasket(It.IsAny(), It.IsAny())) - .Returns(Task.FromResult(1)); - - //Act - var orderController = new CartController(_basketServiceMock.Object, _catalogServiceMock.Object, _identityParserMock.Object); - orderController.ControllerContext.HttpContext = _contextMock.Object; - var actionResult = await orderController.AddToCart(fakeCatalogItem); - - //Assert - var redirectToActionResult = Assert.IsType(actionResult); - Assert.Equal("Catalog", redirectToActionResult.ControllerName); - Assert.Equal("Index", redirectToActionResult.ActionName); - } - - private BasketModel GetFakeBasket(string buyerId) - { - return new BasketModel() - { - BuyerId = buyerId - }; - } - - private CatalogItem GetFakeCatalogItem() - { - return new CatalogItem() - { - Id = 1, - Name = "fakeName", - CatalogBrand = "fakeBrand", - CatalogType = "fakeType", - CatalogBrandId = 2, - CatalogTypeId = 5, - Price = 20 - }; - } - } -} diff --git a/test/Services/UnitTest/Catalog/Application/CatalogControllerTest.cs b/test/Services/UnitTest/Catalog/Application/CatalogControllerTest.cs deleted file mode 100644 index 7410551e4..000000000 --- a/test/Services/UnitTest/Catalog/Application/CatalogControllerTest.cs +++ /dev/null @@ -1,90 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.eShopOnContainers.WebMVC.Controllers; -using Microsoft.eShopOnContainers.WebMVC.Services; -using Microsoft.eShopOnContainers.WebMVC.ViewModels; -using Microsoft.eShopOnContainers.WebMVC.ViewModels.CatalogViewModels; -using Moq; -using System.Collections.Generic; -using System.Threading.Tasks; -using Xunit; -using CatalogModel = Microsoft.eShopOnContainers.WebMVC.ViewModels.Catalog; - -namespace UnitTest.Catalog.Application -{ - public class CatalogControllerTest - { - private readonly Mock _catalogServiceMock; - - public CatalogControllerTest() - { - _catalogServiceMock = new Mock(); - } - - [Fact] - public async Task Get_catalog_items_success() - { - //Arrange - var fakeBrandFilterApplied = 1; - var fakeTypesFilterApplied = 2; - var fakePage = 2; - var fakeCatalog = GetFakeCatalog(); - - var expectedNumberOfPages = 5; - var expectedTotalPages = 50; - var expectedCurrentPage = 2; - - _catalogServiceMock.Setup(x => x.GetCatalogItems - ( - It.Is(y => y == fakePage), - It.IsAny(), - It.Is(y => y == fakeBrandFilterApplied), - It.Is(y => y == fakeTypesFilterApplied) - )) - .Returns(Task.FromResult(fakeCatalog)); - - //Act - var orderController = new CatalogController(_catalogServiceMock.Object); - var actionResult = await orderController.Index(fakeBrandFilterApplied, fakeTypesFilterApplied, fakePage, null); - - //Assert - var viewResult = Assert.IsType(actionResult); - var model = Assert.IsAssignableFrom(viewResult.ViewData.Model); - Assert.Equal(model.PaginationInfo.TotalPages, expectedNumberOfPages); - Assert.Equal(model.PaginationInfo.TotalItems, expectedTotalPages); - Assert.Equal(model.PaginationInfo.ActualPage, expectedCurrentPage); - Assert.Empty(model.PaginationInfo.Next); - Assert.Empty(model.PaginationInfo.Previous); - } - - private CatalogModel GetFakeCatalog() - { - return new CatalogModel() - { - PageSize = 10, - Count = 50, - PageIndex = 2, - Data = new List() - { - new CatalogItem() - { - Id = 1, - Name = "fakeItemA", - CatalogTypeId = 1 - }, - new CatalogItem() - { - Id = 2, - Name = "fakeItemB", - CatalogTypeId = 1 - }, - new CatalogItem() - { - Id = 3, - Name = "fakeItemC", - CatalogTypeId = 1 - } - } - }; - } - } -} diff --git a/test/Services/UnitTest/Dockerfile b/test/Services/UnitTest/Dockerfile deleted file mode 100644 index fc9d5e576..000000000 --- a/test/Services/UnitTest/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM microsoft/dotnet:2.0-sdk AS build -WORKDIR /src -COPY eShopOnContainers-ServicesAndWebApps.sln ./ -COPY test/Services/UnitTest/UnitTest.csproj test/Services/UnitTest/ -COPY src/Services/Catalog/Catalog.API/Catalog.API.csproj src/Services/Catalog/Catalog.API/ -COPY src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/Microsoft.AspNetCore.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.AspNetCore.HealthChecks/ -COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/Microsoft.Extensions.HealthChecks.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks/ -COPY src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj src/BuildingBlocks/EventBus/IntegrationEventLogEF/ -COPY src/BuildingBlocks/EventBus/EventBus/EventBus.csproj src/BuildingBlocks/EventBus/EventBus/ -COPY src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj src/BuildingBlocks/EventBus/EventBusRabbitMQ/ -COPY src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj src/BuildingBlocks/EventBus/EventBusServiceBus/ -COPY src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj src/BuildingBlocks/WebHostCustomization/WebHost.Customization/ -COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/Microsoft.Extensions.HealthChecks.SqlServer.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.SqlServer/ -COPY src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.AzureStorage/Microsoft.Extensions.HealthChecks.AzureStorage.csproj src/BuildingBlocks/HealthChecks/src/Microsoft.Extensions.HealthChecks.AzureStorage/ -COPY src/Web/WebMVC/WebMVC.csproj src/Web/WebMVC/ -COPY src/BuildingBlocks/Resilience/Resilience.Http/Resilience.Http.csproj src/BuildingBlocks/Resilience/Resilience.Http/ -COPY src/Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj src/Services/Ordering/Ordering.Infrastructure/ -COPY src/Services/Ordering/Ordering.Domain/Ordering.Domain.csproj src/Services/Ordering/Ordering.Domain/ -COPY src/Services/Ordering/Ordering.API/Ordering.API.csproj src/Services/Ordering/Ordering.API/ -COPY src/Services/Basket/Basket.API/Basket.API.csproj src/Services/Basket/Basket.API/ -RUN dotnet restore -nowarn:msb3202,nu1503 -COPY . . -WORKDIR /src/test/Services/UnitTest -RUN dotnet build -c Release -ENTRYPOINT ["dotnet", "test", "-c","Release", "--logger:trx"] diff --git a/test/Services/UnitTest/Ordering/Application/IdentifiedCommandHandlerTest.cs b/test/Services/UnitTest/Ordering/Application/IdentifiedCommandHandlerTest.cs deleted file mode 100644 index e0f861017..000000000 --- a/test/Services/UnitTest/Ordering/Application/IdentifiedCommandHandlerTest.cs +++ /dev/null @@ -1,91 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace UnitTest.Ordering.Application -{ - using global::Ordering.API.Application.Models; - using MediatR; - using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; - using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; - using Moq; - using System.Collections; - using System.Collections.Generic; - using System.Threading.Tasks; - using Xunit; - public class IdentifiedCommandHandlerTest - { - private readonly Mock _requestManager; - private readonly Mock _mediator; - - public IdentifiedCommandHandlerTest() - { - _requestManager = new Mock(); - _mediator = new Mock(); - } - - [Fact] - public async Task Handler_sends_command_when_order_no_exists() - { - // Arrange - var fakeGuid = Guid.NewGuid(); - var fakeOrderCmd = new IdentifiedCommand(FakeOrderRequest(), fakeGuid); - - _requestManager.Setup(x => x.ExistAsync(It.IsAny())) - .Returns(Task.FromResult(false)); - - _mediator.Setup(x => x.Send(It.IsAny>(),default(System.Threading.CancellationToken))) - .Returns(Task.FromResult(true)); - - //Act - var handler = new IdentifiedCommandHandler(_mediator.Object, _requestManager.Object); - var cltToken = new System.Threading.CancellationToken(); - var result = await handler.Handle(fakeOrderCmd, cltToken); - - //Assert - Assert.True(result); - _mediator.Verify(x => x.Send(It.IsAny>(), default(System.Threading.CancellationToken)), Times.Once()); - } - - [Fact] - public async Task Handler_sends_no_command_when_order_already_exists() - { - // Arrange - var fakeGuid = Guid.NewGuid(); - var fakeOrderCmd = new IdentifiedCommand(FakeOrderRequest(), fakeGuid); - - _requestManager.Setup(x => x.ExistAsync(It.IsAny())) - .Returns(Task.FromResult(true)); - - _mediator.Setup(x => x.Send(It.IsAny>(), default(System.Threading.CancellationToken))) - .Returns(Task.FromResult(true)); - - //Act - var handler = new IdentifiedCommandHandler(_mediator.Object, _requestManager.Object); - var cltToken = new System.Threading.CancellationToken(); - var result = await handler.Handle(fakeOrderCmd, cltToken); - - //Assert - Assert.False(result); - _mediator.Verify(x => x.Send(It.IsAny>(), default(System.Threading.CancellationToken)), Times.Never()); - } - - private CreateOrderCommand FakeOrderRequest(Dictionary args = null) - { - return new CreateOrderCommand( - new List(), - userId: args != null && args.ContainsKey("userId") ? (string)args["userId"] : null, - userName: args != null && args.ContainsKey("userName") ? (string)args["userName"] : null, - city: args != null && args.ContainsKey("city") ? (string)args["city"] : null, - street: args != null && args.ContainsKey("street") ? (string)args["street"] : null, - state: args != null && args.ContainsKey("state") ? (string)args["state"] : null, - country: args != null && args.ContainsKey("country") ? (string)args["country"] : null, - zipcode: args != null && args.ContainsKey("zipcode") ? (string)args["zipcode"] : null, - cardNumber: args != null && args.ContainsKey("cardNumber") ? (string)args["cardNumber"] : "1234", - cardExpiration: args != null && args.ContainsKey("cardExpiration") ? (DateTime)args["cardExpiration"] : DateTime.MinValue, - cardSecurityNumber: args != null && args.ContainsKey("cardSecurityNumber") ? (string)args["cardSecurityNumber"] : "123", - cardHolderName: args != null && args.ContainsKey("cardHolderName") ? (string)args["cardHolderName"] : "XXX", - cardTypeId: args != null && args.ContainsKey("cardTypeId") ? (int)args["cardTypeId"] : 0); - } - } -} diff --git a/test/Services/UnitTest/Ordering/Application/NewOrderCommandHandlerTest.cs b/test/Services/UnitTest/Ordering/Application/NewOrderCommandHandlerTest.cs deleted file mode 100644 index 7fe02017b..000000000 --- a/test/Services/UnitTest/Ordering/Application/NewOrderCommandHandlerTest.cs +++ /dev/null @@ -1,94 +0,0 @@ -using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; -using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services; -using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate; -using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; -using Moq; -using System; -using System.Threading; -using System.Threading.Tasks; - - -namespace UnitTest.Ordering.Application -{ - using global::Ordering.API.Application.Models; - using MediatR; - using System.Collections; - using System.Collections.Generic; - using Xunit; - using static Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands.CreateOrderCommand; - - public class NewOrderRequestHandlerTest - { - private readonly Mock _orderRepositoryMock; - private readonly Mock _identityServiceMock; - private readonly Mock _mediator; - - public NewOrderRequestHandlerTest() - { - - _orderRepositoryMock = new Mock(); - _identityServiceMock = new Mock(); - _mediator = new Mock(); - } - - [Fact] - public async Task Handle_return_false_if_order_is_not_persisted() - { - var buyerId = "1234"; - - var fakeOrderCmd = FakeOrderRequestWithBuyer(new Dictionary - { ["cardExpiration"] = DateTime.Now.AddYears(1) }); - - _orderRepositoryMock.Setup(orderRepo => orderRepo.GetAsync(It.IsAny())) - .Returns(Task.FromResult(FakeOrder())); - - _orderRepositoryMock.Setup(buyerRepo => buyerRepo.UnitOfWork.SaveChangesAsync(default(CancellationToken))) - .Returns(Task.FromResult(1)); - - _identityServiceMock.Setup(svc => svc.GetUserIdentity()).Returns(buyerId); - - //Act - var handler = new CreateOrderCommandHandler(_mediator.Object, _orderRepositoryMock.Object, _identityServiceMock.Object); - var cltToken = new System.Threading.CancellationToken(); - var result = await handler.Handle(fakeOrderCmd, cltToken); - - //Assert - Assert.False(result); - } - - [Fact] - public void Handle_throws_exception_when_no_buyerId() - { - //Assert - Assert.Throws(() => new Buyer(string.Empty, string.Empty)); - } - - private Buyer FakeBuyer() - { - return new Buyer(Guid.NewGuid().ToString(), "1"); - } - - private Order FakeOrder() - { - return new Order("1", "fakeName", new Address("street", "city", "state", "country", "zipcode"), 1, "12", "111", "fakeName", DateTime.Now.AddYears(1)); - } - - private CreateOrderCommand FakeOrderRequestWithBuyer(Dictionary args = null) - { - return new CreateOrderCommand( - new List(), - userId: args != null && args.ContainsKey("userId") ? (string)args["userId"] : null, - userName: args != null && args.ContainsKey("userName") ? (string)args["userName"] : null, - city: args != null && args.ContainsKey("city") ? (string)args["city"] : null, - street: args != null && args.ContainsKey("street") ? (string)args["street"] : null, - state: args != null && args.ContainsKey("state") ? (string)args["state"] : null, - country: args != null && args.ContainsKey("country") ? (string)args["country"] : null, - zipcode: args != null && args.ContainsKey("zipcode") ? (string)args["zipcode"] : null, - cardNumber: args != null && args.ContainsKey("cardNumber") ? (string)args["cardNumber"] : "1234", - cardExpiration: args != null && args.ContainsKey("cardExpiration") ? (DateTime)args["cardExpiration"] : DateTime.MinValue, - cardSecurityNumber: args != null && args.ContainsKey("cardSecurityNumber") ? (string)args["cardSecurityNumber"] : "123", - cardHolderName: args != null && args.ContainsKey("cardHolderName") ? (string)args["cardHolderName"] : "XXX", - cardTypeId: args != null && args.ContainsKey("cardTypeId") ? (int)args["cardTypeId"] : 0); - } - } -} diff --git a/test/Services/UnitTest/Ordering/Application/OrderControllerTest.cs b/test/Services/UnitTest/Ordering/Application/OrderControllerTest.cs deleted file mode 100644 index a60ce3bb3..000000000 --- a/test/Services/UnitTest/Ordering/Application/OrderControllerTest.cs +++ /dev/null @@ -1,86 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.eShopOnContainers.WebMVC.Controllers; -using Microsoft.eShopOnContainers.WebMVC.Services; -using Microsoft.eShopOnContainers.WebMVC.ViewModels; -using Moq; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Xunit; -using BasketModel = Microsoft.eShopOnContainers.WebMVC.ViewModels.Basket; - -namespace UnitTest.Ordering.Application -{ - public class OrderControllerTest - { - private readonly Mock _orderServiceMock; - private readonly Mock _basketServiceMock; - private readonly Mock> _identityParserMock; - private readonly Mock _contextMock; - - public OrderControllerTest() - { - _orderServiceMock = new Mock(); - _basketServiceMock = new Mock(); - _identityParserMock = new Mock>(); - _contextMock = new Mock(); - } - - [Fact] - public async Task Get_order_list_success() - { - //Arrange - var expectedTotalResults = 1; - var fakeOrder = GetFakeOrder(); - - _orderServiceMock.Setup(x => x.GetMyOrders(It.IsAny())) - .Returns(Task.FromResult(new List() { fakeOrder })); - - //Act - var orderController = new OrderController(_orderServiceMock.Object, _basketServiceMock.Object, _identityParserMock.Object); - orderController.ControllerContext.HttpContext = _contextMock.Object; - var actionResult = await orderController.Index(fakeOrder); - - //Assert - var viewResult = Assert.IsType(actionResult); - var model = Assert.IsAssignableFrom>(viewResult.ViewData.Model); - Assert.Equal(model.Count, expectedTotalResults); - } - - [Fact] - public async Task Get_order_detail_success() - { - //Arrange - var fakeOrderId = "12"; - var fakeOrder = GetFakeOrder(); - - _orderServiceMock.Setup(x => x.GetOrder(It.IsAny(), It.IsAny())) - .Returns(Task.FromResult(fakeOrder)); - - //Act - var orderController = new OrderController(_orderServiceMock.Object, _basketServiceMock.Object, _identityParserMock.Object); - orderController.ControllerContext.HttpContext = _contextMock.Object; - var actionResult = await orderController.Detail(fakeOrderId); - - //Assert - var viewResult = Assert.IsType(actionResult); - Assert.IsAssignableFrom(viewResult.ViewData.Model); - } - - - - private Order GetFakeOrder() - { - return new Order() - { - OrderNumber = "1", - CardNumber = "12", - CardSecurityNumber = "1212", - Status = "Pending", - RequestId = Guid.NewGuid(), - CardExpiration = DateTime.Now.AddYears(1), - }; - } - } -} diff --git a/test/Services/UnitTest/Ordering/Application/OrdersWebApiTest.cs b/test/Services/UnitTest/Ordering/Application/OrdersWebApiTest.cs deleted file mode 100644 index 516f9ba54..000000000 --- a/test/Services/UnitTest/Ordering/Application/OrdersWebApiTest.cs +++ /dev/null @@ -1,141 +0,0 @@ -using MediatR; -using Microsoft.AspNetCore.Mvc; -using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; -using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries; -using Microsoft.eShopOnContainers.Services.Ordering.API.Controllers; -using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services; -using Moq; -using Ordering.API.Application.Commands; -using System; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Xunit; - -namespace UnitTest.Ordering.Application -{ - public class OrdersWebApiTest - { - private readonly Mock _mediatorMock; - private readonly Mock _orderQueriesMock; - private readonly Mock _identityServiceMock; - - public OrdersWebApiTest() - { - _mediatorMock = new Mock(); - _orderQueriesMock = new Mock(); - _identityServiceMock = new Mock(); - } - - [Fact] - public async Task Create_order_with_requestId_success() - { - //Arrange - _mediatorMock.Setup(x => x.Send(It.IsAny>(), default(CancellationToken))) - .Returns(Task.FromResult(true)); - - //Act - var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object); - var actionResult = await orderController.CancelOrder(new CancelOrderCommand(1), Guid.NewGuid().ToString()) as OkResult; - - //Assert - Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK); - - } - - [Fact] - public async Task Cancel_order_bad_request() - { - //Arrange - _mediatorMock.Setup(x => x.Send(It.IsAny>(), default(CancellationToken))) - .Returns(Task.FromResult(true)); - - //Act - var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object); - var actionResult = await orderController.CancelOrder(new CancelOrderCommand(1), String.Empty) as BadRequestResult; - - //Assert - Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.BadRequest); - } - - [Fact] - public async Task Ship_order_with_requestId_success() - { - //Arrange - _mediatorMock.Setup(x => x.Send(It.IsAny>(), default(System.Threading.CancellationToken))) - .Returns(Task.FromResult(true)); - - //Act - var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object); - var actionResult = await orderController.ShipOrder(new ShipOrderCommand(1), Guid.NewGuid().ToString()) as OkResult; - - //Assert - Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK); - - } - - [Fact] - public async Task Ship_order_bad_request() - { - //Arrange - _mediatorMock.Setup(x => x.Send(It.IsAny>(), default(System.Threading.CancellationToken))) - .Returns(Task.FromResult(true)); - - //Act - var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object); - var actionResult = await orderController.ShipOrder(new ShipOrderCommand(1), String.Empty) as BadRequestResult; - - //Assert - Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.BadRequest); - } - - [Fact] - public async Task Get_orders_success() - { - //Arrange - var fakeDynamicResult = Enumerable.Empty(); - _orderQueriesMock.Setup(x => x.GetOrdersFromUserAsync(Guid.NewGuid())) - .Returns(Task.FromResult(fakeDynamicResult)); - - //Act - var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object); - var actionResult = await orderController.GetOrders() as OkObjectResult; - - //Assert - Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK); - } - - [Fact] - public async Task Get_order_success() - { - //Arrange - var fakeOrderId = 123; - var fakeDynamicResult = new Order(); - _orderQueriesMock.Setup(x => x.GetOrderAsync(It.IsAny())) - .Returns(Task.FromResult(fakeDynamicResult)); - - //Act - var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object); - var actionResult = await orderController.GetOrder(fakeOrderId) as OkObjectResult; - - //Assert - Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK); - } - - [Fact] - public async Task Get_cardTypes_success() - { - //Arrange - var fakeDynamicResult = Enumerable.Empty(); - _orderQueriesMock.Setup(x => x.GetCardTypesAsync()) - .Returns(Task.FromResult(fakeDynamicResult)); - - //Act - var orderController = new OrdersController(_mediatorMock.Object, _orderQueriesMock.Object, _identityServiceMock.Object); - var actionResult = await orderController.GetCardTypes() as OkObjectResult; - - //Assert - Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.OK); - } - } -} diff --git a/test/Services/UnitTest/Ordering/Builders.cs b/test/Services/UnitTest/Ordering/Builders.cs deleted file mode 100644 index 3103aee19..000000000 --- a/test/Services/UnitTest/Ordering/Builders.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; - -namespace UnitTest.Ordering -{ - public class AddressBuilder - { - public Address Build() - { - return new Address("street", "city", "state", "country", "zipcode"); - } - } - - public class OrderBuilder - { - private readonly Order order; - - public OrderBuilder(Address address) - { - order = new Order( - "userId", - "fakeName", - address, - cardTypeId:5, - cardNumber:"12", - cardSecurityNumber:"123", - cardHolderName:"name", - cardExpiration:DateTime.UtcNow); - } - - public OrderBuilder AddOne( - int productId, - string productName, - decimal unitPrice, - decimal discount, - string pictureUrl, - int units = 1) - { - order.AddOrderItem(productId, productName, unitPrice, discount, pictureUrl, units); - return this; - } - - public Order Build() - { - return order; - } - } -} diff --git a/test/Services/UnitTest/Ordering/Domain/BuyerAggregateTest.cs b/test/Services/UnitTest/Ordering/Domain/BuyerAggregateTest.cs deleted file mode 100644 index 588b929fd..000000000 --- a/test/Services/UnitTest/Ordering/Domain/BuyerAggregateTest.cs +++ /dev/null @@ -1,132 +0,0 @@ -using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate; -using Ordering.Domain.Exceptions; -using System; -using Xunit; - -public class BuyerAggregateTest -{ - public BuyerAggregateTest() - { } - - [Fact] - public void Create_buyer_item_success() - { - //Arrange - var identity = new Guid().ToString(); - var name = "fakeUser"; - - //Act - var fakeBuyerItem = new Buyer(identity, name); - - //Assert - Assert.NotNull(fakeBuyerItem); - } - - [Fact] - public void Create_buyer_item_fail() - { - //Arrange - var identity = string.Empty; - var name = "fakeUser"; - - //Act - Assert - Assert.Throws(() => new Buyer(identity, name)); - } - - [Fact] - public void add_payment_success() - { - //Arrange - var cardTypeId = 1; - var alias = "fakeAlias"; - var cardNumber = "124"; - var securityNumber = "1234"; - var cardHolderName = "FakeHolderNAme"; - var expiration = DateTime.Now.AddYears(1); - var orderId = 1; - var name = "fakeUser"; - var identity = new Guid().ToString(); - var fakeBuyerItem = new Buyer(identity, name); - - //Act - var result = fakeBuyerItem.VerifyOrAddPaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration, orderId); - - //Assert - Assert.NotNull(result); - } - - [Fact] - public void create_payment_method_success() - { - //Arrange - var cardTypeId = 1; - var alias = "fakeAlias"; - var cardNumber = "124"; - var securityNumber = "1234"; - var cardHolderName = "FakeHolderNAme"; - var expiration = DateTime.Now.AddYears(1); - var fakePaymentMethod = new PaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration); - - //Act - var result = new PaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration); - - //Assert - Assert.NotNull(result); - } - - [Fact] - public void create_payment_method_expiration_fail() - { - //Arrange - var cardTypeId = 1; - var alias = "fakeAlias"; - var cardNumber = "124"; - var securityNumber = "1234"; - var cardHolderName = "FakeHolderNAme"; - var expiration = DateTime.Now.AddYears(-1); - - //Act - Assert - Assert.Throws(() => new PaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration)); - } - - [Fact] - public void payment_method_isEqualTo() - { - //Arrange - var cardTypeId = 1; - var alias = "fakeAlias"; - var cardNumber = "124"; - var securityNumber = "1234"; - var cardHolderName = "FakeHolderNAme"; - var expiration = DateTime.Now.AddYears(1); - - //Act - var fakePaymentMethod = new PaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration); - var result = fakePaymentMethod.IsEqualTo(cardTypeId, cardNumber, expiration); - - //Assert - Assert.True(result); - } - - [Fact] - public void Add_new_PaymentMethod_raises_new_event() - { - //Arrange - var alias = "fakeAlias"; - var orderId = 1; - var cardTypeId = 5; - var cardNumber = "12"; - var cardSecurityNumber = "123"; - var cardHolderName = "FakeName"; - var cardExpiration = DateTime.Now.AddYears(1); - var expectedResult = 1; - var name = "fakeUser"; - - //Act - var fakeBuyer = new Buyer(Guid.NewGuid().ToString(), name); - fakeBuyer.VerifyOrAddPaymentMethod(cardTypeId, alias, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration, orderId); - - //Assert - Assert.Equal(fakeBuyer.DomainEvents.Count, expectedResult); - } -} \ No newline at end of file diff --git a/test/Services/UnitTest/Ordering/Domain/OrderAggregateTest.cs b/test/Services/UnitTest/Ordering/Domain/OrderAggregateTest.cs deleted file mode 100644 index bf0678f5f..000000000 --- a/test/Services/UnitTest/Ordering/Domain/OrderAggregateTest.cs +++ /dev/null @@ -1,180 +0,0 @@ -using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; -using Ordering.Domain.Events; -using Ordering.Domain.Exceptions; -using System; -using System.Linq; -using UnitTest.Ordering; -using Xunit; - -public class OrderAggregateTest -{ - public OrderAggregateTest() - { } - - [Fact] - public void Create_order_item_success() - { - //Arrange - var productId = 1; - var productName = "FakeProductName"; - var unitPrice = 12; - var discount = 15; - var pictureUrl = "FakeUrl"; - var units = 5; - - //Act - var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units); - - //Assert - Assert.NotNull(fakeOrderItem); - } - - [Fact] - public void Invalid_number_of_units() - { - //Arrange - var productId = 1; - var productName = "FakeProductName"; - var unitPrice = 12; - var discount = 15; - var pictureUrl = "FakeUrl"; - var units = -1; - - //Act - Assert - Assert.Throws(() => new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units)); - } - - [Fact] - public void Invalid_total_of_order_item_lower_than_discount_applied() - { - //Arrange - var productId = 1; - var productName = "FakeProductName"; - var unitPrice = 12; - var discount = 15; - var pictureUrl = "FakeUrl"; - var units = 1; - - //Act - Assert - Assert.Throws(() => new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units)); - } - - [Fact] - public void Invalid_discount_setting() - { - //Arrange - var productId = 1; - var productName = "FakeProductName"; - var unitPrice = 12; - var discount = 15; - var pictureUrl = "FakeUrl"; - var units = 5; - - //Act - var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units); - - //Assert - Assert.Throws(() => fakeOrderItem.SetNewDiscount(-1)); - } - - [Fact] - public void Invalid_units_setting() - { - //Arrange - var productId = 1; - var productName = "FakeProductName"; - var unitPrice = 12; - var discount = 15; - var pictureUrl = "FakeUrl"; - var units = 5; - - //Act - var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units); - - //Assert - Assert.Throws(() => fakeOrderItem.AddUnits(-1)); - } - - [Fact] - public void when_add_two_times_on_the_same_item_then_the_total_of_order_should_be_the_sum_of_the_two_items() - { - var address = new AddressBuilder().Build(); - var order = new OrderBuilder(address) - .AddOne(1,"cup",10.0m,0,string.Empty) - .AddOne(1,"cup",10.0m,0,string.Empty) - .Build(); - - Assert.Equal(20.0m, order.GetTotal()); - } - - [Fact] - public void Add_new_Order_raises_new_event() - { - //Arrange - var street = "fakeStreet"; - var city = "FakeCity"; - var state = "fakeState"; - var country = "fakeCountry"; - var zipcode = "FakeZipCode"; - var cardTypeId = 5; - var cardNumber = "12"; - var cardSecurityNumber = "123"; - var cardHolderName = "FakeName"; - var cardExpiration = DateTime.Now.AddYears(1); - var expectedResult = 1; - - //Act - var fakeOrder = new Order("1", "fakeName", new Address(street, city, state, country, zipcode), cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration); - - //Assert - Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult); - } - - [Fact] - public void Add_event_Order_explicitly_raises_new_event() - { - //Arrange - var street = "fakeStreet"; - var city = "FakeCity"; - var state = "fakeState"; - var country = "fakeCountry"; - var zipcode = "FakeZipCode"; - var cardTypeId = 5; - var cardNumber = "12"; - var cardSecurityNumber = "123"; - var cardHolderName = "FakeName"; - var cardExpiration = DateTime.Now.AddYears(1); - var expectedResult = 2; - - //Act - var fakeOrder = new Order("1", "fakeName", new Address(street, city, state, country, zipcode), cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration); - fakeOrder.AddDomainEvent(new OrderStartedDomainEvent(fakeOrder, "fakeName", "1", cardTypeId,cardNumber,cardSecurityNumber,cardHolderName,cardExpiration)); - //Assert - Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult); - } - - [Fact] - public void Remove_event_Order_explicitly() - { - //Arrange - var street = "fakeStreet"; - var city = "FakeCity"; - var state = "fakeState"; - var country = "fakeCountry"; - var zipcode = "FakeZipCode"; - var cardTypeId = 5; - var cardNumber = "12"; - var cardSecurityNumber = "123"; - var cardHolderName = "FakeName"; - var cardExpiration = DateTime.Now.AddYears(1); - var fakeOrder = new Order("1", "fakeName", new Address(street, city, state, country, zipcode), cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration); - var @fakeEvent = new OrderStartedDomainEvent(fakeOrder, "1", "fakeName", cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration); - var expectedResult = 1; - - //Act - fakeOrder.AddDomainEvent(@fakeEvent); - fakeOrder.RemoveDomainEvent(@fakeEvent); - //Assert - Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult); - } -} \ No newline at end of file diff --git a/test/Services/UnitTest/Properties/AssemblyInfo.cs b/test/Services/UnitTest/Properties/AssemblyInfo.cs deleted file mode 100644 index 0d5dcb370..000000000 --- a/test/Services/UnitTest/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("UnitTest")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("7796f5d8-31fc-45a4-b673-19de5ba194cf")] diff --git a/test/Services/UnitTest/UnitTest.csproj b/test/Services/UnitTest/UnitTest.csproj deleted file mode 100644 index 21a68b750..000000000 --- a/test/Services/UnitTest/UnitTest.csproj +++ /dev/null @@ -1,36 +0,0 @@ - - - - netcoreapp2.1 - true - $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; - false - false - false - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/test/docker-compose-tests.override.yml b/test/docker-compose-tests.override.yml new file mode 100644 index 000000000..27308ec75 --- /dev/null +++ b/test/docker-compose-tests.override.yml @@ -0,0 +1,20 @@ +version: '3' + +services: + redis.data: + ports: + - "6379:6379" + rabbitmq: + ports: + - "15672:15672" + - "5672:5672" + sql.data: + environment: + - SA_PASSWORD=Pass@word + - ACCEPT_EULA=Y + ports: + - "5433:1433" + nosql.data: + ports: + - "27017:27017" # Important: In a production environment your should remove the external por + diff --git a/test/docker-compose-tests.yml b/test/docker-compose-tests.yml new file mode 100644 index 000000000..113aca9ed --- /dev/null +++ b/test/docker-compose-tests.yml @@ -0,0 +1,10 @@ +version: '3' +services: + redis.data: + image: redis:alpine + rabbitmq: + image: rabbitmq:3-management-alpine + sql.data: + image: microsoft/mssql-server-linux:2017-latest + nosql.data: + image: mongo \ No newline at end of file