public static IHttpClientFactory ConstructChallengeRespondingMock()
        {
            // A mock which returns the input challenge.
            return(HttpFactoryMock.CreateMock((message, _) => {
                var challenge = int.Parse(Regex.Match(message.RequestUri.Query, "(?<=challenge=)\\d+").Value, CultureInfo.CurrentCulture);

                return Task.FromResult(
                    new HttpResponseMessage {
                    StatusCode = HttpStatusCode.OK,
                    Content = new StringContent($"{{ \"challenge\": {challenge} }}")
                }
                    );
            }).Object);
        }
        public async void GetServers_WithOutdated_OnlyReturnsCurrent()
        {
            using (var context = MockDataContext.GetContext()) {
                context.Servers.Add(new GameServer {
                    Name           = "A",
                    Address        = "127.0.0.1",
                    QueryPort      = 100,
                    GamePort       = 100,
                    RoundStatus    = "starting",
                    RoundStartTime = DateTime.Now,
                    Game           = "SS3D",
                    LastUpdate     = DateTime.Now
                });
                context.Servers.Add(new GameServer {
                    Name           = "B",
                    Address        = "127.0.0.2",
                    QueryPort      = 200,
                    GamePort       = 200,
                    RoundStatus    = "starting",
                    RoundStartTime = DateTime.Now,
                    Game           = "SS3D",
                    LastUpdate     = DateTime.Now - TimeSpan.FromMinutes(2)
                });
                // This one should definitely be out of date
                context.Servers.Add(new GameServer {
                    Name           = "C",
                    Address        = "127.0.0.3",
                    QueryPort      = 300,
                    GamePort       = 300,
                    RoundStatus    = "starting",
                    RoundStartTime = DateTime.Now,
                    Game           = "SS3D",
                    LastUpdate     = DateTime.Now - TimeSpan.FromMinutes(6)
                });
                context.SaveChanges();
            }

            // Use a separate, fresh context for testing.
            using (var context = MockDataContext.GetContext()) {
                var controller = new ServersController(context, HttpFactoryMock.CreateMock().Object, logger);

                IEnumerable <GameServer> servers = await controller.GetServers().ToListAsync();

                Assert.Equal(2, servers.Count());
                Assert.DoesNotContain(servers, server => server.Name == "C");
            }
        }