public void If_Client_Secret_Is_Null_Then_ArgumentNullException_Is_Thrown(ValidLocaleAndRegionPair localeAndRegion)
        {
            var exception = Assert.Throws <ArgumentNullException>(() =>
                                                                  _services.AddWarcraftClients("fake-client-id", null, localeAndRegion.Region, localeAndRegion.Locale)
                                                                  );

            Assert.Equal("clientSecret", exception.ParamName);
        }
        public void Then_WarcraftClient_Does_Not_Use_InternalHttpClient(ValidLocaleAndRegionPair validLocaleAndRegion)
        {
            _services.AddWarcraftClients("fake-client-id", "fake-client-secret", validLocaleAndRegion.Region,
                                         validLocaleAndRegion.Locale);

            IServiceProvider serviceProvider = _services.BuildServiceProvider();

            var warcraftClient = serviceProvider.GetRequiredService <WarcraftClient>();

            Assert.NotSame(InternalHttpClient.Instance, warcraftClient.Client);
        }
        public void Then_All_Warcraft_Interfaces_Are_Resolved_To_A_WarcraftClient_Instance(
            Type clientInterfaceToResolve, ValidLocaleAndRegionPair localeAndRegion)
        {
            _services.AddWarcraftClients("fake-client-id", "fake-client-secret", localeAndRegion.Region,
                                         localeAndRegion.Locale);

            IServiceProvider serviceProvider = _services.BuildServiceProvider();

            var client = serviceProvider.GetRequiredService(clientInterfaceToResolve);

            Assert.IsType <WarcraftClient>(client);
        }
        public void Then_WarcraftClient_Is_Configured_To_Accept_Json_Content(ValidLocaleAndRegionPair localeAndRegion)
        {
            _services.AddWarcraftClients("fake-client-id", "fake-client-secret", localeAndRegion.Region,
                                         localeAndRegion.Locale);

            IServiceProvider serviceProvider = _services.BuildServiceProvider();

            var warcraftClient     = serviceProvider.GetRequiredService <WarcraftClient>();
            var acceptsJsonContent =
                warcraftClient.Client.DefaultRequestHeaders.Accept.Contains(
                    new MediaTypeWithQualityHeaderValue("application/json"));

            Assert.True(acceptsJsonContent);
        }
        public void Then_WarcraftClient_Is_Created_With_Provided_Client_Credentials_And_Region_And_Locale(
            ValidLocaleAndRegionPair localeAndRegion)
        {
            const string expectedClientId     = "the client Id";
            const string expectedClientSecret = "the client secret";

            _services.AddWarcraftClients(expectedClientId, expectedClientSecret, localeAndRegion.Region,
                                         localeAndRegion.Locale);

            IServiceProvider serviceProvider = _services.BuildServiceProvider();

            var warcraftClient = serviceProvider.GetRequiredService <WarcraftClient>();

            Assert.Equal(expectedClientId, warcraftClient.ClientId);
            Assert.Equal(expectedClientSecret, warcraftClient.ClientSecret);
            Assert.Equal(localeAndRegion.Region, warcraftClient.Region);
            Assert.Equal(localeAndRegion.Locale, warcraftClient.Locale);
        }