public async Task TestUpdateExistingServiceAsync_RecreatesServiceWhenWrongType()
        {
            _kubectlContextMock.Setup(k => k.GetServiceAsync(It.IsAny <string>()))
            .ReturnsResult(
                new GkeService
            {
                Spec = new GkeServiceSpec {
                    Type = GkeServiceSpec.LoadBalancerType
                },
                Metadata = new GkeMetadata {
                    Name = ExpectedDeploymentName
                }
            });
            GkeDeploymentService.Options options = GetOptionsBuilder()
                                                   .SetExposeService(true)
                                                   .SetExposePublicService(false)
                                                   .SetDeploymentName(ExpectedDeploymentName)
                                                   .Build();

            await _objectUnderTest.DeployProjectToGkeAsync(_mockedParsedProject, options);

            _kubectlContextMock.Verify(
                k => k.DeleteServiceAsync(ExpectedDeploymentName, _gcpOutputWindowMock.Object.OutputLine));
            _kubectlContextMock.Verify(
                k => k.ExposeServiceAsync(
                    ExpectedDeploymentName,
                    false,
                    _gcpOutputWindowMock.Object.OutputLine));
        }
        public async Task TestDeleteExistingServiceAsync_DeleteServiceFailureFailsDeployment()
        {
            _kubectlContextMock.Setup(
                k => k.DeleteServiceAsync(It.IsAny <string>(), It.IsAny <Action <string> >()))
            .ReturnsResult(false);
            _kubectlContextMock.Setup(k => k.GetServiceAsync(It.IsAny <string>()))
            .ReturnsResult(
                new GkeService
            {
                Spec = new GkeServiceSpec {
                    Type = GkeServiceSpec.LoadBalancerType
                },
                Metadata = new GkeMetadata {
                    Name = ExpectedDeploymentName
                }
            });
            GkeDeploymentService.Options options = GetOptionsBuilder()
                                                   .SetExposeService(false)
                                                   .SetDeploymentName(ExpectedDeploymentName)
                                                   .Build();

            await _objectUnderTest.DeployProjectToGkeAsync(_mockedParsedProject, options);

            _statusbarServiceMock.Verify(s => s.SetTextAsync(Resources.PublishFailureStatusMessage));
        }
        public async Task TestUpdateExistingServiceAsync_DoesNotUpdateWhenAlreadyCorrectType()
        {
            _kubectlContextMock.Setup(k => k.GetServiceAsync(It.IsAny <string>()))
            .ReturnsResult(
                new GkeService
            {
                Spec = new GkeServiceSpec {
                    Type = GkeServiceSpec.ClusterIpType
                },
                Metadata = new GkeMetadata {
                    Name = ExpectedDeploymentName
                }
            });
            GkeDeploymentService.Options options = GetOptionsBuilder()
                                                   .SetExposeService(true)
                                                   .SetExposePublicService(false)
                                                   .SetDeploymentName(ExpectedDeploymentName)
                                                   .Build();

            await _objectUnderTest.DeployProjectToGkeAsync(_mockedParsedProject, options);

            _kubectlContextMock.Verify(
                k => k.DeleteServiceAsync(It.IsAny <string>(), It.IsAny <Action <string> >()), Times.Never);
            _kubectlContextMock.Verify(
                k => k.ExposeServiceAsync(
                    It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <Action <string> >()), Times.Never);
        }
        public async Task TestOutputResultData_OutputsClusterIpMessageWhenExposedServiceIsPrivate()
        {
            _kubectlContextMock.Setup(k => k.GetServiceClusterIpAsync(It.IsAny <string>()))
            .ReturnsResult(ExpectedClusterIp);
            GkeDeploymentService.Options options = GetOptionsBuilder()
                                                   .SetExposeService(true)
                                                   .SetExposePublicService(false)
                                                   .Build();

            await _objectUnderTest.DeployProjectToGkeAsync(_mockedParsedProject, options);

            _gcpOutputWindowMock.Verify(o => o.OutputLine(It.Is <string>(s => s.Contains(ExpectedClusterIp))));
        }
        public async Task TestDeployProjectToGkeAsync_OpensBrowserWhenRequested()
        {
            _kubectlContextMock.Setup(k => k.GetPublicServiceIpAsync(It.IsAny <string>()))
            .ReturnsResult(ExpectedPublicIp);
            GkeDeploymentService.Options options = GetOptionsBuilder()
                                                   .SetExposeService(true)
                                                   .SetExposePublicService(true)
                                                   .SetOpenWebsite(true)
                                                   .Build();

            await _objectUnderTest.DeployProjectToGkeAsync(_mockedParsedProject, options);

            _browserMock.Verify(b => b.OpenBrowser(It.Is <string>(s => s.Contains(ExpectedPublicIp))));
        }
        public async Task TestCreateOrUpdateDeploymentAsync_ScaleDeploymentFailureFailsDeployment()
        {
            _kubectlContextMock.Setup(
                g => g.ScaleDeploymentAsync(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <Action <string> >()))
            .ReturnsResult(false);
            GkeDeploymentService.Options options = GetOptionsBuilder()
                                                   .SetReplicas(ExpectedReplicas)
                                                   .SetExistingDeployment(s_defaultExistingDeployment)
                                                   .Build();

            await _objectUnderTest.DeployProjectToGkeAsync(_mockedParsedProject, options);

            _statusbarServiceMock.Verify(s => s.SetTextAsync(Resources.PublishFailureStatusMessage));
        }
Esempio n. 7
0
        public async Task TestCreateOrUpdateDeploymentAsync_CreateDeploymentFailureFailsDeployment()
        {
            GkeDeploymentService.Options options = GetOptionsBuilder().SetExistingDeployment(null).Build();
            _kubectlContextMock.Setup(
                g => g.CreateDeploymentAsync(
                    It.IsAny <string>(),
                    It.IsAny <string>(),
                    It.IsAny <int>(),
                    It.IsAny <Func <string, OutputStream, Task> >()))
            .ReturnsResult(false);

            await _objectUnderTest.DeployProjectToGkeAsync(_mockedParsedProject, options);

            _statusbarServiceMock.Verify(s => s.SetTextAsync(Resources.PublishFailureStatusMessage));
        }
        public async Task TestCreateOrUpdateDeploymentAsync_ScalesExistingDeployment()
        {
            GkeDeploymentService.Options options = GetOptionsBuilder()
                                                   .SetDeploymentName(ExpectedDeploymentName)
                                                   .SetReplicas(ExpectedReplicas)
                                                   .SetExistingDeployment(s_defaultExistingDeployment)
                                                   .Build();

            await _objectUnderTest.DeployProjectToGkeAsync(_mockedParsedProject, options);

            _kubectlContextMock.Verify(
                g => g.ScaleDeploymentAsync(
                    ExpectedDeploymentName,
                    ExpectedReplicas,
                    _gcpOutputWindowMock.Object.OutputLine));
        }
        public async Task TestExposeNewServiceAsync_ExposesNewServiceWhenMissingAndRequested(bool exposePublicService)
        {
            _kubectlContextMock.Setup(k => k.GetServiceAsync(It.IsAny <string>()))
            .Returns(Task.FromResult <GkeService>(null));
            GkeDeploymentService.Options options = GetOptionsBuilder()
                                                   .SetExposeService(true)
                                                   .SetExposePublicService(exposePublicService)
                                                   .SetDeploymentName(ExpectedDeploymentName)
                                                   .Build();

            await _objectUnderTest.DeployProjectToGkeAsync(_mockedParsedProject, options);

            _kubectlContextMock.Verify(
                k => k.ExposeServiceAsync(
                    ExpectedDeploymentName,
                    exposePublicService,
                    _gcpOutputWindowMock.Object.OutputLine));
        }
        public async Task TestBuildImageAsync_BuildsContainer()
        {
            _kubectlContextMock.Setup(k => k.ProjectId).Returns(ExpectedProjectId);
            GkeDeploymentService.Options options = GetOptionsBuilder()
                                                   .SetDeploymentName(ExpectedDeploymentName)
                                                   .SetDeploymentVersion(ExpectedDeploymentVersion)
                                                   .Build();

            await _objectUnderTest.DeployProjectToGkeAsync(_mockedParsedProject, options);

            _kubectlContextMock.Verify(
                g => g.BuildContainerAsync(
                    It.Is <string>(
                        s => s.Contains(ExpectedProjectId) &&
                        s.Contains(ExpectedDeploymentName) &&
                        s.Contains(ExpectedDeploymentVersion)),
                    It.IsAny <string>(),
                    _gcpOutputWindowMock.Object.OutputLineAsync));
        }
        public async Task TestCreateOrUpdateDeploymentAsync_UpdatesDeploymentImageForExisting()
        {
            _kubectlContextMock.Setup(k => k.ProjectId).Returns(ExpectedProjectId);
            GkeDeploymentService.Options options = GetOptionsBuilder()
                                                   .SetDeploymentName(ExpectedDeploymentName)
                                                   .SetDeploymentVersion(ExpectedDeploymentVersion)
                                                   .SetExistingDeployment(s_defaultExistingDeployment)
                                                   .Build();

            await _objectUnderTest.DeployProjectToGkeAsync(_mockedParsedProject, options);

            _kubectlContextMock.Verify(
                g => g.UpdateDeploymentImageAsync(
                    ExpectedDeploymentName,
                    It.Is <string>(
                        s => s.Contains(ExpectedProjectId) &&
                        s.Contains(ExpectedDeploymentName) &&
                        s.Contains(ExpectedDeploymentVersion)),
                    _gcpOutputWindowMock.Object.OutputLine));
        }