public async Task GetLockRequest_ThrowsOnInvalidInput(string lockId)
        {
            Mock <IEnvironment> _environment = new Mock <IEnvironment>();
            var handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            var httpClient  = new HttpClient(handlerMock.Object);
            var lockManager = new KubernetesDistributedLockManager(
                new KubernetesClient(_environment.Object, httpClient), ScriptSettingsManager.Instance);

            await Assert.ThrowsAsync <ArgumentNullException>(() => lockManager.GetLockOwnerAsync(
                                                                 "", lockId, new CancellationToken()));
        }
        public async Task GetLockRequest_ReturnsCorrectLockHandle(HttpStatusCode status, string lockId, string ownerId)
        {
            Mock <IEnvironment> _environment = new Mock <IEnvironment>();

            _environment.Setup(p => p.GetEnvironmentVariable(HttpLeaderEndpoint)).Returns("http://test-endpoint");

            var expectedLockHandle = new KubernetesLockHandle()
            {
                Owner = ownerId
            };

            var handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            handlerMock.Protected().Setup <Task <HttpResponseMessage> >("SendAsync",
                                                                        ItExpr.Is <HttpRequestMessage>(request =>
                                                                                                       request.Method == HttpMethod.Get &&
                                                                                                       request.RequestUri.AbsoluteUri.Equals($"{TestHttpLeaderEndpoint}/lock?name={lockId}")),
                                                                        ItExpr.IsAny <CancellationToken>()).ReturnsAsync(new HttpResponseMessage
            {
                StatusCode = status,
                Content    = new StringContent(JsonConvert.SerializeObject(expectedLockHandle))
            });

            var httpClient = new HttpClient(handlerMock.Object);

            var lockClient  = new KubernetesClient(_environment.Object, httpClient);
            var lockManager = new KubernetesDistributedLockManager(lockClient, ScriptSettingsManager.Instance);

            if (status != HttpStatusCode.OK)
            {
                await Assert.ThrowsAsync <HttpRequestException>(() => lockManager.GetLockOwnerAsync(
                                                                    "", lockId, new CancellationToken()));
            }
            else
            {
                var actualOwner = await lockManager.GetLockOwnerAsync("", lockId, new CancellationToken());

                Assert.Equal(expectedLockHandle.Owner, actualOwner);
            }
        }