示例#1
0
        public async Task <string> GetTokenAsync()
        {
            var httpClient = new HttpClient();

            httpClient.BaseAddress = IdentityHost.GetContainerUri();

            TokenResponse res = await httpClient.RequestClientCredentialsTokenAsync(
                new ClientCredentialsTokenRequest
            {
                Address      = $"{httpClient.BaseAddress}connect/token",
                ClientId     = "Media.Test",
                ClientSecret = "geCDNACu94a5DfZQ2Sm46DBjkSErAnNA"
            });

            return(res.AccessToken);
        }
示例#2
0
        public async Task InitializeAsync()
        {
            Containers = new ComposeResource <MagicApiAppOptions>();
            await Containers.InitializeAsync();

            MongoResource = Containers.GetResource <MongoResource>("mongo");
            IdentityHost  = Containers
                            .GetResource <GenericContainerResource <IdentityHostOptions> >("identity");

            Database = MongoResource.CreateDatabase();

            DbContext = new MediaStoreContext(
                new MongoOptions
            {
                ConnectionString = MongoResource.ConnectionString,
                DatabaseName     = Database.DatabaseNamespace.DatabaseName
            });

            string identityUrl = IdentityHost.GetContainerUri().ToString();

            IWebHostBuilder hostBuilder = new WebHostBuilder()
                                          .ConfigureAppConfiguration(builder =>
            {
                builder.SetBasePath(Directory.GetCurrentDirectory());
                builder.AddJsonFile("appsettings.test.json", optional: true);
                builder.AddInMemoryCollection(new Dictionary <string, string>
                {
                    ["MagicMedia:Database:ConnectionString"] =
                        MongoResource.ConnectionString,
                    ["MagicMedia:Database:DatabaseName"] =
                        Database.DatabaseNamespace.DatabaseName,
                    ["MagicMedia:Security:Authority"] = identityUrl
                });
            })
                                          .ConfigureTestServices(services =>
            {
                services.AddSingleton(_httpClientFactory);
                services.AddMagicMediaTest();
                services.RemoveAll <IOperationExecutorFactory>();
                services.AddSingleton <IOperationExecutorFactory>(sp =>
                                                                  new HttpOperationExecutorFactory(
                                                                      "MagicMediaTest",
                                                                      sp.GetRequiredService <InMemoryHttpClientFactory>().CreateClient,
                                                                      PipelineFactory(sp),
                                                                      sp));
            })
                                          .UseStartup <Startup>();

            var server = new TestServer(hostBuilder);

            Services   = server.Services;
            HttpClient = server.CreateClient();

            GraphQLClient = Services.GetService <IMagicMediaTest>();
            _httpClientFactory.HttpClient             = server.CreateClient();
            _httpClientFactory.HttpClient.BaseAddress = new Uri("http://localhost/graphql");
            _httpClientFactory.TokenResolver          = GetTokenAsync;

            await SeedIntialDataAsync();

            //TODO. Improve readycheck for IdentityServer container
            await Task.Delay(TimeSpan.FromSeconds(1));
        }