Browse Source

Created unit test and functional tests on each microservice, work on settings for each project tests, modifyc how TestServer is created. Create a docker-compose for run tests

pull/675/head
unaizorrilla 6 years ago
parent
commit
afca2308b1
115 changed files with 1098 additions and 2342 deletions
  1. +402
    -456
      eShopOnContainers-ServicesAndWebApps.sln
  2. +3
    -1
      src/Services/Basket/Basket.API/Controllers/BasketController.cs
  3. +5
    -1
      src/Services/Basket/Basket.FunctionalTests/Base/AutoAuthorizeMiddleware.cs
  4. +14
    -9
      src/Services/Basket/Basket.FunctionalTests/Base/BasketScenarioBase.cs
  5. +0
    -0
      src/Services/Basket/Basket.FunctionalTests/Base/BasketTestStartup.cs
  6. +0
    -0
      src/Services/Basket/Basket.FunctionalTests/Base/HttpClientExtensions.cs
  7. +33
    -0
      src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj
  8. +3
    -1
      src/Services/Basket/Basket.FunctionalTests/BasketScenarios.cs
  9. +14
    -12
      src/Services/Basket/Basket.FunctionalTests/RedisBasketRepositoryTests.cs
  10. +0
    -0
      src/Services/Basket/Basket.FunctionalTests/appsettings.json
  11. +3
    -0
      src/Services/Basket/Basket.UnitTests/Application/BasketWebApiTest.cs
  12. +0
    -0
      src/Services/Basket/Basket.UnitTests/Application/CartControllerTest.cs
  13. +2
    -2
      src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj
  14. +4
    -1
      src/Services/Catalog/Catalog.API/Extensions/CatalogItemExtensions.cs
  15. +9
    -6
      src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs
  16. +47
    -0
      src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj
  17. +26
    -18
      src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarioBase.cs
  18. +6
    -8
      src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarios.cs
  19. +8
    -0
      src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogBrands.csv
  20. +14
    -0
      src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogItems.csv
  21. BIN
      src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogItems.zip
  22. +7
    -0
      src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogTypes.csv
  23. +0
    -0
      src/Services/Catalog/Catalog.FunctionalTests/appsettings.json
  24. +0
    -0
      src/Services/Catalog/Catalog.UnitTests/Application/CatalogControllerTest.cs
  25. +2
    -2
      src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj
  26. +8
    -8
      src/Services/Location/Locations.FunctionalTests/LocationTestsStartup.cs
  27. +12
    -3
      src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj
  28. +15
    -7
      src/Services/Location/Locations.FunctionalTests/LocationsScenarioBase.cs
  29. +8
    -10
      src/Services/Location/Locations.FunctionalTests/LocationsScenarios.cs
  30. +1
    -1
      src/Services/Location/Locations.FunctionalTests/appsettings.json
  31. +4
    -4
      src/Services/Marketing/Marketing.FunctionalTests/AutoAuthorizeMiddleware.cs
  32. +2
    -2
      src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarioBase.cs
  33. +12
    -12
      src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs
  34. +32
    -0
      src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj
  35. +45
    -0
      src/Services/Marketing/Marketing.FunctionalTests/MarketingScenarioBase.cs
  36. +25
    -0
      src/Services/Marketing/Marketing.FunctionalTests/MarketingTestStartup.cs
  37. +7
    -3
      src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarioBase.cs
  38. +9
    -10
      src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs
  39. +0
    -0
      src/Services/Marketing/Marketing.FunctionalTests/appsettings.json
  40. +30
    -0
      src/Services/Ordering/Ordering.FunctionalTests/AutoAuthorizeMiddleware.cs
  41. +1
    -3
      src/Services/Ordering/Ordering.FunctionalTests/HttpClientExtensions.cs
  42. +34
    -0
      src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj
  43. +28
    -22
      src/Services/Ordering/Ordering.FunctionalTests/OrderingScenarioBase.cs
  44. +11
    -12
      src/Services/Ordering/Ordering.FunctionalTests/OrderingScenarios.cs
  45. +3
    -8
      src/Services/Ordering/Ordering.FunctionalTests/OrderingTestStartup.cs
  46. +0
    -0
      src/Services/Ordering/Ordering.FunctionalTests/appsettings.json
  47. +0
    -0
      src/Services/Ordering/Ordering.UnitTests/Application/IdentifiedCommandHandlerTest.cs
  48. +0
    -0
      src/Services/Ordering/Ordering.UnitTests/Application/NewOrderCommandHandlerTest.cs
  49. +0
    -0
      src/Services/Ordering/Ordering.UnitTests/Application/OrderControllerTest.cs
  50. +0
    -0
      src/Services/Ordering/Ordering.UnitTests/Application/OrdersWebApiTest.cs
  51. +0
    -0
      src/Services/Ordering/Ordering.UnitTests/Builders.cs
  52. +0
    -0
      src/Services/Ordering/Ordering.UnitTests/Domain/BuyerAggregateTest.cs
  53. +0
    -0
      src/Services/Ordering/Ordering.UnitTests/Domain/OrderAggregateTest.cs
  54. +4
    -4
      src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj
  55. +0
    -78
      test/Basket.FunctionalTests/RedisBasketRepositoryTests.cs
  56. +0
    -0
      test/Marketing.FunctionalTests-borrar/Base/AutoAuthorizeMiddleware.cs
  57. +0
    -0
      test/Marketing.FunctionalTests-borrar/Base/CampaignScenarioBase.cs
  58. +0
    -0
      test/Marketing.FunctionalTests-borrar/Base/CampaignsScenarioBase.cs
  59. +0
    -0
      test/Marketing.FunctionalTests-borrar/Base/LocationsScenarioBase.cs
  60. +0
    -0
      test/Marketing.FunctionalTests-borrar/Base/LocationsTestStartup.cs
  61. +0
    -0
      test/Marketing.FunctionalTests-borrar/Base/MarketingScenarioBase.cs
  62. +0
    -0
      test/Marketing.FunctionalTests-borrar/Base/MarketingTestStartup.cs
  63. +0
    -0
      test/Marketing.FunctionalTests-borrar/Base/UserLocationRoleScenarioBase.cs
  64. +0
    -0
      test/Marketing.FunctionalTests-borrar/Marketing.FunctionalTests.csproj
  65. +0
    -0
      test/Marketing.FunctionalTests-borrar/MarketingScenario.cs
  66. +0
    -0
      test/Marketing.FunctionalTests-borrar/appsettings.json
  67. +0
    -0
      test/Ordering.FunctionalTests-borrar/Base/AutoAuthorizedMiddleware.cs
  68. +0
    -0
      test/Ordering.FunctionalTests-borrar/Base/BasketScenarioBase.cs
  69. +0
    -0
      test/Ordering.FunctionalTests-borrar/Base/BasketTestStartup.cs
  70. +0
    -0
      test/Ordering.FunctionalTests-borrar/Base/HttpClientExtensions.cs
  71. +0
    -0
      test/Ordering.FunctionalTests-borrar/Base/OrderingScenarioBase.cs
  72. +0
    -0
      test/Ordering.FunctionalTests-borrar/Base/OrderingTestStartup.cs
  73. +0
    -0
      test/Ordering.FunctionalTests-borrar/Ordering.FunctionalTests.csproj
  74. +0
    -0
      test/Ordering.FunctionalTests-borrar/OrderingScenario.cs
  75. +0
    -0
      test/Ordering.FunctionalTests-borrar/settings.json
  76. +24
    -6
      test/Services/FunctionalTests/FunctionalTests.csproj
  77. +8
    -1
      test/Services/FunctionalTests/Middleware/AutoAuthorizeMiddleware.cs
  78. +27
    -14
      test/Services/FunctionalTests/Services/Basket/BasketScenariosBase.cs
  79. +3
    -4
      test/Services/FunctionalTests/Services/Basket/BasketTestsStartup.cs
  80. +1
    -3
      test/Services/FunctionalTests/Services/Basket/appsettings.json
  81. +13
    -4
      test/Services/FunctionalTests/Services/Catalog/CatalogScenariosBase.cs
  82. +15
    -5
      test/Services/FunctionalTests/Services/Location/LocationsScenariosBase.cs
  83. +31
    -20
      test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs
  84. +11
    -2
      test/Services/FunctionalTests/Services/Ordering/OrderingScenarios.cs
  85. +13
    -10
      test/Services/FunctionalTests/Services/Ordering/OrderingScenariosBase.cs
  86. +0
    -0
      test/Services/FunctionalTests/Services/Ordering/appsettings.json
  87. +8
    -0
      test/Services/FunctionalTests/Setup/CatalogBrands.csv
  88. +14
    -0
      test/Services/FunctionalTests/Setup/CatalogItems.csv
  89. BIN
      test/Services/FunctionalTests/Setup/CatalogItems.zip
  90. +7
    -0
      test/Services/FunctionalTests/Setup/CatalogTypes.csv
  91. +0
    -6
      test/Services/FunctionalTests/appsettings.json
  92. +0
    -66
      test/Services/IntegrationTests/IntegrationTests.csproj
  93. +0
    -19
      test/Services/IntegrationTests/Properties/AssemblyInfo.cs
  94. +0
    -35
      test/Services/IntegrationTests/Services/Basket/BasketScenarioBase.cs
  95. +0
    -94
      test/Services/IntegrationTests/Services/Basket/BasketScenarios.cs
  96. +0
    -27
      test/Services/IntegrationTests/Services/Basket/BasketTestsStartup.cs
  97. +0
    -17
      test/Services/IntegrationTests/Services/Basket/appsettings.json
  98. +0
    -37
      test/Services/IntegrationTests/Services/Marketing/MarketingScenariosBase.cs
  99. +0
    -27
      test/Services/IntegrationTests/Services/Marketing/MarketingTestsStartup.cs
  100. +0
    -52
      test/Services/UnitTest/Account/AccountControllerTest.cs

+ 402
- 456
eShopOnContainers-ServicesAndWebApps.sln View File

@ -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}


+ 3
- 1
src/Services/Basket/Basket.API/Controllers/BasketController.cs View File

@ -59,7 +59,7 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Controllers
public async Task<IActionResult> 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);


test/Basket.FunctionalTests/Base/AutoAuthorizeMiddleware.cs → src/Services/Basket/Basket.FunctionalTests/Base/AutoAuthorizeMiddleware.cs View File

@ -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);

test/Basket.FunctionalTests/Base/BasketScenarioBase.cs → src/Services/Basket/Basket.FunctionalTests/Base/BasketScenarioBase.cs View File

@ -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<BasketTestsStartup>();
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<BasketTestsStartup>();
return new TestServer(hostBuilder);
}
public static class Get

test/Basket.FunctionalTests/Base/BasketTestStartup.cs → src/Services/Basket/Basket.FunctionalTests/Base/BasketTestStartup.cs View File


test/Basket.FunctionalTests/Base/HttpClientExtensions.cs → src/Services/Basket/Basket.FunctionalTests/Base/HttpClientExtensions.cs View File


+ 33
- 0
src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj View File

@ -0,0 +1,33 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<None Remove="appsettings.json" />
</ItemGroup>
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.1.0" />
<PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
<PackageReference Include="Moq" Version="4.8.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Web\WebMVC\WebMVC.csproj" />
<ProjectReference Include="..\..\Location\Locations.API\Locations.API.csproj" />
<ProjectReference Include="..\Basket.API\Basket.API.csproj" />
</ItemGroup>
</Project>

test/Basket.FunctionalTests/BasketScenarios.cs → src/Services/Basket/Basket.FunctionalTests/BasketScenarios.cs View File

@ -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
{

test/Services/IntegrationTests/Services/Basket/RedisBasketRepositoryTests.cs → src/Services/Basket/Basket.FunctionalTests/RedisBasketRepositoryTests.cs View File

@ -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<IOptionsSnapshot<BasketSettings>> _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));

test/Basket.FunctionalTests/appsettings.json → src/Services/Basket/Basket.FunctionalTests/appsettings.json View File


test/Basket.UnitTests/Application/BasketWebApiTest.cs → src/Services/Basket/Basket.UnitTests/Application/BasketWebApiTest.cs View File

@ -38,6 +38,7 @@ namespace UnitTest.Basket.Application
_identityServiceMock.Setup(x => x.GetUserIdentity()).Returns(fakeCustomerId);
_serviceBusMock.Setup(x => x.Publish(It.IsAny<UserCheckoutAcceptedIntegrationEvent>()));
//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<UserCheckoutAcceptedIntegrationEvent>()));
//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<string>()))
.Returns(Task.FromResult((CustomerBasket)null));
_identityServiceMock.Setup(x => x.GetUserIdentity()).Returns(fakeCustomerId);
//Act
var basketController = new BasketController(
_basketRepositoryMock.Object, _identityServiceMock.Object, _serviceBusMock.Object);

test/Basket.UnitTests/Application/CartControllerTest.cs → src/Services/Basket/Basket.UnitTests/Application/CartControllerTest.cs View File


test/Basket.UnitTests/Basket.UnitTests.csproj → src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj View File

@ -16,8 +16,8 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Services\Basket\Basket.API\Basket.API.csproj" />
<ProjectReference Include="..\..\src\Web\WebMVC\WebMVC.csproj" />
<ProjectReference Include="..\..\..\Web\WebMVC\WebMVC.csproj" />
<ProjectReference Include="..\Basket.API\Basket.API.csproj" />
</ItemGroup>
</Project>

+ 4
- 1
src/Services/Catalog/Catalog.API/Extensions/CatalogItemExtensions.cs View File

@ -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());
}
}
}
}

+ 9
- 6
src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs View File

@ -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<CatalogContextSeed> logger, string prefix,int retries = 3)


+ 47
- 0
src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj View File

@ -0,0 +1,47 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<None Remove="appsettings.json" />
<None Remove="Setup\CatalogBrands.csv" />
<None Remove="Setup\CatalogItems.csv" />
<None Remove="Setup\CatalogItems.zip" />
<None Remove="Setup\CatalogTypes.csv" />
</ItemGroup>
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Setup\CatalogBrands.csv">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Setup\CatalogItems.csv">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Setup\CatalogItems.zip">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Setup\CatalogTypes.csv">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.1.0" />
<PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Catalog.API\Catalog.API.csproj" />
</ItemGroup>
</Project>

test/Services/IntegrationTests/Services/Catalog/CatalogScenarioBase.cs → src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarioBase.cs View File

@ -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<Startup>();
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<Startup>();
var testServer = new TestServer(hostBuilder);
testServer.Host
.MigrateDbContext<CatalogContext>((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";
}

test/Services/IntegrationTests/Services/Catalog/CatalogScenarios.cs → src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarios.cs View File

@ -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);
}
}

+ 8
- 0
src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogBrands.csv View File

@ -0,0 +1,8 @@
CatalogBrand
Azure
.NET
Visual Studio
SQL Server
Other
CatalogBrandTestOne
CatalogBrandTestTwo

+ 14
- 0
src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogItems.csv View File

@ -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<T> White Mug,Cup<T> White Mug,12,9.png,76,false
Sheet,.NET,.NET Foundation Sheet,.NET Foundation Sheet,12,10.png,11,false
Sheet,.NET,Cup<T> Sheet,Cup<T> 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

BIN
src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogItems.zip View File


+ 7
- 0
src/Services/Catalog/Catalog.FunctionalTests/Setup/CatalogTypes.csv View File

@ -0,0 +1,7 @@
CatalogType
Mug
T-Shirt
Sheet
USB Memory Stick
CatalogTypeTestOne
CatalogTypeTestTwo

test/Services/IntegrationTests/Services/Catalog/appsettings.json → src/Services/Catalog/Catalog.FunctionalTests/appsettings.json View File


test/Catalog.UnitTests/Application/CatalogControllerTest.cs → src/Services/Catalog/Catalog.UnitTests/Application/CatalogControllerTest.cs View File


test/Catalog.UnitTests/Catalog.UnitTests.csproj → src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj View File

@ -15,8 +15,8 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Services\Catalog\Catalog.API\Catalog.API.csproj" />
<ProjectReference Include="..\..\src\Web\WebMVC\WebMVC.csproj" />
<ProjectReference Include="..\..\..\Web\WebMVC\WebMVC.csproj" />
<ProjectReference Include="..\Catalog.API\Catalog.API.csproj" />
</ItemGroup>
</Project>

test/Services/IntegrationTests/Services/Locations/LocationsTestsStartup.cs → src/Services/Location/Locations.FunctionalTests/LocationTestsStartup.cs View File

@ -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)

test/Basket.FunctionalTests/Basket.FunctionalTests.csproj → src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj View File

@ -6,17 +6,26 @@
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<None Remove="appsettings.json" />
</ItemGroup>
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.1.0" />
<PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
<PackageReference Include="Moq" Version="4.8.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Web\WebMVC\WebMVC.csproj" />
<ProjectReference Include="..\..\src\Services\Basket\Basket.API\Basket.API.csproj" />
<ProjectReference Include="..\Locations.API\Locations.API.csproj" />
</ItemGroup>
</Project>

test/Services/IntegrationTests/Services/Locations/LocationsScenarioBase.cs → src/Services/Location/Locations.FunctionalTests/LocationsScenarioBase.cs View File

@ -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<LocationsTestsStartup>();
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<LocationsTestsStartup>();
return new TestServer(hostBuilder);
}
public static class Get

test/Services/IntegrationTests/Services/Locations/LocationsScenarios.cs → src/Services/Location/Locations.FunctionalTests/LocationsScenarios.cs View File

@ -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<Location>(responseBody);
var location = JsonConvert.DeserializeObject<Microsoft.eShopOnContainers.Services.Locations.API.Model.Locations>(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<Location>(responseBody);
var location = JsonConvert.DeserializeObject<Microsoft.eShopOnContainers.Services.Locations.API.Model.Locations>(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<Location>(responseBody);
var location = JsonConvert.DeserializeObject<Microsoft.eShopOnContainers.Services.Locations.API.Model.Locations>(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<List<Location>>(responseBody);
var locations = JsonConvert.DeserializeObject<List<Microsoft.eShopOnContainers.Services.Locations.API.Model.Locations>>(responseBody);
// Assert
Assert.NotEmpty(locations);
@ -132,7 +130,7 @@ namespace IntegrationTests.Services.Locations
{
Longitude = lon,
Latitude = lat
};
};
return JsonConvert.SerializeObject(location);
}
}

test/Services/IntegrationTests/Services/Locations/appsettings.json → src/Services/Location/Locations.FunctionalTests/appsettings.json View File

@ -1,4 +1,4 @@
{
{
"ConnectionString": "mongodb://localhost:27017",
"Database": "LocationsDb",
"ExternalCatalogBaseUrl": "http://localhost:5101",

test/Services/IntegrationTests/Middleware/AutoAuthorizeMiddleware.cs → src/Services/Marketing/Marketing.FunctionalTests/AutoAuthorizeMiddleware.cs View File

@ -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);
}
}

test/Services/IntegrationTests/Services/Marketing/CampaignScenarioBase.cs → src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarioBase.cs View File

@ -1,4 +1,4 @@
namespace IntegrationTests.Services.Marketing
namespace Marketing.FunctionalTests
{
public class CampaignScenarioBase : MarketingScenarioBase
{
@ -27,4 +27,4 @@
=> $"{CampaignsUrlBase}/{id}";
}
}
}
}

test/Services/IntegrationTests/Services/Marketing/CampaignScenarios.cs → src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs View File

@ -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"
};
};
}
}
}

+ 32
- 0
src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj View File

@ -0,0 +1,32 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<None Remove="appsettings.json" />
</ItemGroup>
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.1.0" />
<PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Web\WebMVC\WebMVC.csproj" />
<ProjectReference Include="..\Marketing.API\Marketing.API.csproj" />
</ItemGroup>
</Project>

+ 45
- 0
src/Services/Marketing/Marketing.FunctionalTests/MarketingScenarioBase.cs View File

@ -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<MarketingTestsStartup>();
var testServer = new TestServer(hostBuilder);
testServer.Host
.MigrateDbContext<MarketingContext>((context, services) =>
{
var logger = services.GetService<ILogger<MarketingContextSeed>>();
new MarketingContextSeed()
.SeedAsync(context, logger)
.Wait();
});
return testServer;
}
}
}

+ 25
- 0
src/Services/Marketing/Marketing.FunctionalTests/MarketingTestStartup.cs View File

@ -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<AutoAuthorizeMiddleware>();
}
else
{
base.ConfigureAuth(app);
}
}
}
}

test/Services/IntegrationTests/Services/Marketing/UserLocationRoleScenariosBase.cs → src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarioBase.cs View File

@ -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}";
}
}
}

test/Services/IntegrationTests/Services/Marketing/UserLocationRoleScenarios.cs → src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs View File

@ -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
{

test/Services/IntegrationTests/Services/Marketing/appsettings.json → src/Services/Marketing/Marketing.FunctionalTests/appsettings.json View File


+ 30
- 0
src/Services/Ordering/Ordering.FunctionalTests/AutoAuthorizeMiddleware.cs View File

@ -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);
}
}
}

test/Services/IntegrationTests/Services/Extensions/HttpClientExtensions.cs → src/Services/Ordering/Ordering.FunctionalTests/HttpClientExtensions.cs View File

@ -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
{

+ 34
- 0
src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj View File

@ -0,0 +1,34 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<None Remove="appsettings.json" />
</ItemGroup>
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.1.0" />
<PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Web\WebMVC\WebMVC.csproj" />
<ProjectReference Include="..\Ordering.API\Ordering.API.csproj" />
<ProjectReference Include="..\Ordering.Domain\Ordering.Domain.csproj" />
<ProjectReference Include="..\Ordering.Infrastructure\Ordering.Infrastructure.csproj" />
</ItemGroup>
</Project>

test/Services/IntegrationTests/Services/Ordering/OrderingScenarioBase.cs → src/Services/Ordering/Ordering.FunctionalTests/OrderingScenarioBase.cs View File

@ -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<OrderingTestsStartup>();
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<OrderingTestsStartup>();
var testServer = new TestServer(webHostBuilder);
var testServer = new TestServer(hostBuilder);
testServer.Host
.MigrateDbContext<OrderingContext>((context, services) =>

test/Services/IntegrationTests/Services/Ordering/OrderingScenarios.cs → src/Services/Ordering/Ordering.FunctionalTests/OrderingScenarios.cs View File

@ -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);
}
}
}
}
}

test/Services/IntegrationTests/Services/Ordering/OrderingTestsStartup.cs → src/Services/Ordering/Ordering.FunctionalTests/OrderingTestStartup.cs View File

@ -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
{

test/Ordering.FunctionalTests/settings.json → src/Services/Ordering/Ordering.FunctionalTests/appsettings.json View File


test/Ordering.UnitTests/Application/IdentifiedCommandHandlerTest.cs → src/Services/Ordering/Ordering.UnitTests/Application/IdentifiedCommandHandlerTest.cs View File


test/Ordering.UnitTests/Application/NewOrderCommandHandlerTest.cs → src/Services/Ordering/Ordering.UnitTests/Application/NewOrderCommandHandlerTest.cs View File


test/Ordering.UnitTests/Application/OrderControllerTest.cs → src/Services/Ordering/Ordering.UnitTests/Application/OrderControllerTest.cs View File


test/Ordering.UnitTests/Application/OrdersWebApiTest.cs → src/Services/Ordering/Ordering.UnitTests/Application/OrdersWebApiTest.cs View File


test/Ordering.UnitTests/Builders.cs → src/Services/Ordering/Ordering.UnitTests/Builders.cs View File


test/Ordering.UnitTests/Domain/BuyerAggregateTest.cs → src/Services/Ordering/Ordering.UnitTests/Domain/BuyerAggregateTest.cs View File


test/Ordering.UnitTests/Domain/OrderAggregateTest.cs → src/Services/Ordering/Ordering.UnitTests/Domain/OrderAggregateTest.cs View File


test/Ordering.UnitTests/Ordering.UnitTests.csproj → src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj View File

@ -16,10 +16,10 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Services\Ordering\Ordering.API\Ordering.API.csproj" />
<ProjectReference Include="..\..\src\Services\Ordering\Ordering.Domain\Ordering.Domain.csproj" />
<ProjectReference Include="..\..\src\Services\Ordering\Ordering.Infrastructure\Ordering.Infrastructure.csproj" />
<ProjectReference Include="..\..\src\Web\WebMVC\WebMVC.csproj" />
<ProjectReference Include="..\..\..\Web\WebMVC\WebMVC.csproj" />
<ProjectReference Include="..\Ordering.API\Ordering.API.csproj" />
<ProjectReference Include="..\Ordering.Domain\Ordering.Domain.csproj" />
<ProjectReference Include="..\Ordering.Infrastructure\Ordering.Infrastructure.csproj" />
</ItemGroup>
</Project>

+ 0
- 78
test/Basket.FunctionalTests/RedisBasketRepositoryTests.cs View File

@ -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<IOptionsSnapshot<BasketSettings>> _optionsMock;
// public RedisBasketRepositoryTests()
// {
// _optionsMock = new Mock<IOptionsSnapshot<BasketSettings>>();
// }
// [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<BasketItem> BuildBasketItems()
// {
// return new List<BasketItem>()
// {
// new BasketItem()
// {
// Id = "basketId",
// PictureUrl = "pictureurl",
// ProductId = "productId",
// ProductName = "productName",
// Quantity = 1,
// UnitPrice = 1
// }
// };
// }
//}
}

test/Marketing.FunctionalTests/Base/AutoAuthorizeMiddleware.cs → test/Marketing.FunctionalTests-borrar/Base/AutoAuthorizeMiddleware.cs View File


test/Marketing.FunctionalTests/Base/CampaignScenarioBase.cs → test/Marketing.FunctionalTests-borrar/Base/CampaignScenarioBase.cs View File


test/Marketing.FunctionalTests/Base/CampaignsScenarioBase.cs → test/Marketing.FunctionalTests-borrar/Base/CampaignsScenarioBase.cs View File


test/Marketing.FunctionalTests/Base/LocationsScenarioBase.cs → test/Marketing.FunctionalTests-borrar/Base/LocationsScenarioBase.cs View File


test/Marketing.FunctionalTests/Base/LocationsTestStartup.cs → test/Marketing.FunctionalTests-borrar/Base/LocationsTestStartup.cs View File


test/Marketing.FunctionalTests/Base/MarketingScenarioBase.cs → test/Marketing.FunctionalTests-borrar/Base/MarketingScenarioBase.cs View File


test/Marketing.FunctionalTests/Base/MarketingTestStartup.cs → test/Marketing.FunctionalTests-borrar/Base/MarketingTestStartup.cs View File


test/Marketing.FunctionalTests/Base/UserLocationRoleScenarioBase.cs → test/Marketing.FunctionalTests-borrar/Base/UserLocationRoleScenarioBase.cs View File


test/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj → test/Marketing.FunctionalTests-borrar/Marketing.FunctionalTests.csproj View File


test/Marketing.FunctionalTests/MarketingScenario.cs → test/Marketing.FunctionalTests-borrar/MarketingScenario.cs View File


test/Marketing.FunctionalTests/appsettings.json → test/Marketing.FunctionalTests-borrar/appsettings.json View File


test/Ordering.FunctionalTests/Base/AutoAuthorizedMiddleware.cs → test/Ordering.FunctionalTests-borrar/Base/AutoAuthorizedMiddleware.cs View File


test/Ordering.FunctionalTests/Base/BasketScenarioBase.cs → test/Ordering.FunctionalTests-borrar/Base/BasketScenarioBase.cs View File


test/Ordering.FunctionalTests/Base/BasketTestStartup.cs → test/Ordering.FunctionalTests-borrar/Base/BasketTestStartup.cs View File


test/Ordering.FunctionalTests/Base/HttpClientExtensions.cs → test/Ordering.FunctionalTests-borrar/Base/HttpClientExtensions.cs View File


test/Ordering.FunctionalTests/Base/OrderingScenarioBase.cs → test/Ordering.FunctionalTests-borrar/Base/OrderingScenarioBase.cs View File


test/Ordering.FunctionalTests/Base/OrderingTestStartup.cs → test/Ordering.FunctionalTests-borrar/Base/OrderingTestStartup.cs View File


test/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj → test/Ordering.FunctionalTests-borrar/Ordering.FunctionalTests.csproj View File


test/Ordering.FunctionalTests/OrderingScenario.cs → test/Ordering.FunctionalTests-borrar/OrderingScenario.cs View File


test/Services/FunctionalTests/Services/Ordering/settings.json → test/Ordering.FunctionalTests-borrar/settings.json View File


+ 24
- 6
test/Services/FunctionalTests/FunctionalTests.csproj View File

@ -17,6 +17,15 @@
<None Remove="Services\Marketing\**" />
</ItemGroup>
<ItemGroup>
<None Remove="Services\Basket\appsettings.json" />
<None Remove="Setup\CatalogBrands.csv" />
<None Remove="Setup\CatalogItems.csv" />
<None Remove="Setup\CatalogItems.zip" />
<None Remove="Setup\CatalogTypes.csv" />
<None Remove="Services\Ordering\appsettings.json" />
</ItemGroup>
<ItemGroup>
<Compile Include="Services\Location\LocationsScenariosBase.cs" />
<Compile Include="Services\Location\LocationsTestsStartup.cs" />
@ -34,12 +43,27 @@
<Content Include="Services\Catalog\appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Setup\CatalogBrands.csv">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Setup\CatalogItems.csv">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Setup\CatalogItems.zip">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Setup\CatalogTypes.csv">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Services\Location\appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Services\Marketing\appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Services\Ordering\appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
@ -59,15 +83,9 @@
</ItemGroup>
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Services\Locations\appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Services\Ordering\settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>


+ 8
- 1
test/Services/FunctionalTests/Middleware/AutoAuthorizeMiddleware.cs View File

@ -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);
}


+ 27
- 14
test/Services/FunctionalTests/Services/Basket/BasketScenariosBase.cs View File

@ -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<BasketTestsStartup>();
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<BasketTestsStartup>();
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";
}
}
}
}

+ 3
- 4
test/Services/FunctionalTests/Services/Basket/BasketTestsStartup.cs View File

@ -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);
}
}
}
}
}

+ 1
- 3
test/Services/FunctionalTests/Services/Basket/appsettings.json View File

@ -1,4 +1,4 @@
{
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
@ -13,5 +13,3 @@
"EventBusConnection": "localhost",
"SubscriptionClientName": "Basket"
}

+ 13
- 4
test/Services/FunctionalTests/Services/Catalog/CatalogScenariosBase.cs View File

@ -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<Startup>();
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<Startup>();
var testServer = new TestServer(hostBuilder);
testServer.Host
.MigrateDbContext<CatalogContext>((context, services) =>


+ 15
- 5
test/Services/FunctionalTests/Services/Location/LocationsScenariosBase.cs View File

@ -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<LocationsTestsStartup>();
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<LocationsTestsStartup>();
var testServer = new TestServer(hostBuilder);
return testServer;
}
public static class Get


+ 31
- 20
test/Services/FunctionalTests/Services/Marketing/MarketingScenariosBase.cs View File

@ -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<MarketingTestsStartup>();
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<MarketingTestsStartup>();
var testServer = new TestServer(webHostBuilder);
var testServer = new TestServer(hostBuilder);
testServer.Host
.MigrateDbContext<MarketingContext>((context, services) =>
{
var logger = services.GetService<ILogger<MarketingContextSeed>>();
new MarketingContextSeed()
.SeedAsync(context, logger)
.Wait();
});
.MigrateDbContext<MarketingContext>((context, services) =>
{
var logger = services.GetService<ILogger<MarketingContextSeed>>();
new MarketingContextSeed()
.SeedAsync(context, logger)
.Wait();
});
return testServer;
}


+ 11
- 2
test/Services/FunctionalTests/Services/Ordering/OrderingScenarios.cs View File

@ -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<Order> TryGetOrder(string orderNumber, HttpClient orderClient)
{
var ordersGetResponse = await orderClient.GetStringAsync(OrderingScenariosBase.Get.Orders);
var orders = JsonConvert.DeserializeObject<List<Order>>(ordersGetResponse);
return orders.Single(o => o.OrderNumber == orderNumber);
}
private async Task<Order> 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<Order>(orderDetails);
order.City = city;
if (IsOrderCreated(order, city))
{


+ 13
- 10
test/Services/FunctionalTests/Services/Ordering/OrderingScenariosBase.cs View File

@ -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<OrderingTestsStartup>();
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<OrderingTestsStartup>();
var testServer = new TestServer(hostBuilder);
testServer.Host
.MigrateDbContext<OrderingContext>((context, services) =>


test/Services/IntegrationTests/Services/Ordering/settings.json → test/Services/FunctionalTests/Services/Ordering/appsettings.json View File


+ 8
- 0
test/Services/FunctionalTests/Setup/CatalogBrands.csv View File

@ -0,0 +1,8 @@
CatalogBrand
Azure
.NET
Visual Studio
SQL Server
Other
CatalogBrandTestOne
CatalogBrandTestTwo

+ 14
- 0
test/Services/FunctionalTests/Setup/CatalogItems.csv View File

@ -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<T> White Mug,Cup<T> White Mug,12,9.png,76,false
Sheet,.NET,.NET Foundation Sheet,.NET Foundation Sheet,12,10.png,11,false
Sheet,.NET,Cup<T> Sheet,Cup<T> 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

BIN
test/Services/FunctionalTests/Setup/CatalogItems.zip View File


+ 7
- 0
test/Services/FunctionalTests/Setup/CatalogTypes.csv View File

@ -0,0 +1,7 @@
CatalogType
Mug
T-Shirt
Sheet
USB Memory Stick
CatalogTypeTestOne
CatalogTypeTestTwo

+ 0
- 6
test/Services/FunctionalTests/appsettings.json View File

@ -1,6 +0,0 @@
{
"ConnectionString": "127.0.0.1",
"IdentityUrl": "http://localhost:5105",
"isTest": "true",
"EventBusConnection": "localhost"
}

+ 0
- 66
test/Services/IntegrationTests/IntegrationTests.csproj View File

@ -1,66 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<AssemblyName>IntegrationTests</AssemblyName>
<PackageId>IntegrationTests</PackageId>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
</PropertyGroup>
<ItemGroup>
<None Remove="Services\Locations\appsettings.json" />
</ItemGroup>
<ItemGroup>
<!--<Content Include="settings.json;web.config">-->
<Content Include="Services\Basket\appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Services\Catalog\appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Services\Marketing\appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Services\Locations\appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Services\Ordering\settings.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Services\Basket\Basket.API\Basket.API.csproj" />
<ProjectReference Include="..\..\..\src\Services\Catalog\Catalog.API\Catalog.API.csproj" />
<ProjectReference Include="..\..\..\src\Services\Location\Locations.API\Locations.API.csproj" />
<ProjectReference Include="..\..\..\src\Services\Marketing\Marketing.API\Marketing.API.csproj" />
<ProjectReference Include="..\..\..\src\Services\Ordering\Ordering.API\Ordering.API.csproj" />
<ProjectReference Include="..\..\..\src\Web\WebMVC\WebMVC.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="Moq" Version="4.8.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.1.0" />
<PackageReference Include="Microsoft.DotNet.InternalAbstractions" Version="1.0.0" />
<PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="StackExchange.Redis.StrongName" Version="1.2.4" />
</ItemGroup>
<ItemGroup>
<Content Update="Services\Ordering\settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>
</Project>

+ 0
- 19
test/Services/IntegrationTests/Properties/AssemblyInfo.cs View File

@ -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")]

+ 0
- 35
test/Services/IntegrationTests/Services/Basket/BasketScenarioBase.cs View File

@ -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<BasketTestsStartup>();
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";
}
}
}

+ 0
- 94
test/Services/IntegrationTests/Services/Basket/BasketScenarios.cs View File

@ -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);
}
}
}

+ 0
- 27
test/Services/IntegrationTests/Services/Basket/BasketTestsStartup.cs View File

@ -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<AutoAuthorizeMiddleware>();
}
else
{
base.ConfigureAuth(app);
}
}
}
}

+ 0
- 17
test/Services/IntegrationTests/Services/Basket/appsettings.json View File

@ -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"
}

+ 0
- 37
test/Services/IntegrationTests/Services/Marketing/MarketingScenariosBase.cs View File

@ -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<MarketingTestsStartup>();
var testServer = new TestServer(webHostBuilder);
testServer.Host
.MigrateDbContext<MarketingContext>((context, services) =>
{
var logger = services.GetService<ILogger<MarketingContextSeed>>();
new MarketingContextSeed()
.SeedAsync(context, logger)
.Wait();
});
return testServer;
}
}
}

+ 0
- 27
test/Services/IntegrationTests/Services/Marketing/MarketingTestsStartup.cs View File

@ -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<AutoAuthorizeMiddleware>();
}
else
{
base.ConfigureAuth(app);
}
}
}
}

+ 0
- 52
test/Services/UnitTest/Account/AccountControllerTest.cs View File

@ -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<HttpContext> _httpContextMock;
public AccountControllerTest()
{
_httpContextMock = new Mock<HttpContext>();
}
/* TBD: Find a way to mock HttpContext GetTokenAsync method */
//[Fact]
//public void Signin_with_token_success()
//{
// //Arrange
// var fakeCP = GenerateFakeClaimsIdentity();
// var mockAuth = new Mock<AuthenticationManager>();
// _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<RedirectToActionResult>(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;
}
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save