public async Task WhenConnectingByUrlWithoutUsernameAndNoCredentialsExist_ThenConnectionIsMadeWithoutUsername() { this.serviceRegistry.AddMock <ICredentialPrompt>() .Setup(p => p.ShowCredentialsPromptAsync( It.IsAny <IWin32Window>(), It.IsAny <InstanceLocator>(), It.IsAny <ConnectionSettingsEditor>(), It.IsAny <bool>())); // Nop -> Connect without configuring credentials. this.serviceRegistry.AddMock <IProjectExplorer>() .Setup(p => p.TryFindNode( It.IsAny <InstanceLocator>())) .Returns <VmInstanceNode>(null); // Not found var remoteDesktopService = new Mock <IRemoteDesktopService>(); remoteDesktopService.Setup(s => s.Connect( It.IsAny <InstanceLocator>(), "localhost", It.IsAny <ushort>(), It.IsAny <VmInstanceConnectionSettings>())).Returns <IRemoteDesktopSession>(null); this.serviceRegistry.AddSingleton <IRemoteDesktopService>(remoteDesktopService.Object); var service = new IapRdpConnectionService(this.serviceRegistry); await service.ActivateOrConnectInstanceAsync( IapRdpUrl.FromString("iap-rdp:///project/us-central-1/instance")); remoteDesktopService.Verify(s => s.Connect( It.IsAny <InstanceLocator>(), "localhost", It.IsAny <ushort>(), It.Is <VmInstanceConnectionSettings>(i => i.Username == null)), Times.Once); }
public async Task WhenConnectingByUrlWithUsernameAndCredentialsExist_ThenConnectionIsMadeWithUsernameFromUrl() { var settings = new VmInstanceConnectionSettings() { Username = "******", Password = SecureStringExtensions.FromClearText("password") }; var settingsService = this.serviceRegistry.AddMock <IConnectionSettingsService>(); settingsService.Setup(s => s.GetConnectionSettingsEditor( It.IsAny <IProjectExplorerNode>())) .Returns(new ConnectionSettingsEditor( settings, _ => { }, null)); var vmNode = new Mock <IProjectExplorerVmInstanceNode>(); vmNode.SetupGet(n => n.Reference) .Returns(new InstanceLocator("project-1", "zone-1", "instance-1")); this.serviceRegistry.AddMock <ICredentialPrompt>() .Setup(p => p.ShowCredentialsPromptAsync( It.IsAny <IWin32Window>(), It.IsAny <InstanceLocator>(), It.IsAny <ConnectionSettingsEditor>(), It.IsAny <bool>())); this.serviceRegistry.AddMock <IProjectExplorer>() .Setup(p => p.TryFindNode( It.IsAny <InstanceLocator>())) .Returns(vmNode.Object); var remoteDesktopService = new Mock <IRemoteDesktopConnectionBroker>(); remoteDesktopService.Setup(s => s.Connect( It.IsAny <InstanceLocator>(), "localhost", It.IsAny <ushort>(), It.IsAny <VmInstanceConnectionSettings>())).Returns <IRemoteDesktopSession>(null); this.serviceRegistry.AddSingleton <IRemoteDesktopConnectionBroker>(remoteDesktopService.Object); var service = new IapRdpConnectionService(this.serviceRegistry); await service.ActivateOrConnectInstanceAsync( IapRdpUrl.FromString("iap-rdp:///project/us-central-1/instance-1?username=john%20doe")); remoteDesktopService.Verify(s => s.Connect( It.IsAny <InstanceLocator>(), "localhost", It.IsAny <ushort>(), It.Is <VmInstanceConnectionSettings>(i => i.Username == "john doe")), Times.Once); settingsService.Verify(s => s.GetConnectionSettingsEditor( It.IsAny <IProjectExplorerNode>()), Times.Once); }
public async Task WhenConnectingByNodeAndPersistentCredentialsDisallowed_ThenPasswordIsClear() { var settings = VmInstanceConnectionSettings.CreateNew("project", "instance-1"); settings.Username.Value = "existinguser"; settings.Password.Value = SecureStringExtensions.FromClearText("password"); var settingsService = this.serviceRegistry.AddMock <IConnectionSettingsService>(); settingsService.Setup(s => s.GetConnectionSettings( It.IsAny <IProjectExplorerNode>())) .Returns(settings); var vmNode = new Mock <IProjectExplorerVmInstanceNode>(); vmNode.SetupGet(n => n.Reference) .Returns(new InstanceLocator("project-1", "zone-1", "instance-1")); this.serviceRegistry.AddMock <IProjectExplorer>() .Setup(p => p.TryFindNode( It.IsAny <InstanceLocator>())) .Returns(vmNode.Object); var remoteDesktopService = new Mock <IRemoteDesktopSessionBroker>(); remoteDesktopService.Setup(s => s.Connect( It.IsAny <InstanceLocator>(), "localhost", It.IsAny <ushort>(), It.IsAny <VmInstanceConnectionSettings>())).Returns <IRemoteDesktopSession>(null); this.serviceRegistry.AddSingleton <IRemoteDesktopSessionBroker>(remoteDesktopService.Object); var service = new IapRdpConnectionService(this.serviceRegistry); await service.ActivateOrConnectInstanceAsync(vmNode.Object, false); remoteDesktopService.Verify(s => s.Connect( It.IsAny <InstanceLocator>(), "localhost", It.IsAny <ushort>(), It.Is <VmInstanceConnectionSettings>(i => i.Username.StringValue == "existinguser" && i.Password.ClearTextValue == "")), Times.Once); settingsService.Verify(s => s.SaveConnectionSettings( It.IsAny <ConnectionSettingsBase>()), Times.Never); }