예제 #1
0
        public void LoginModeTracksAvailableConnections()
        {
            var connectionManager    = Substitute.For <IConnectionManager>();
            var connections          = new ObservableCollectionEx <IConnection>();
            var gitHubLogin          = Substitute.For <ILoginToGitHubViewModel>();
            var enterpriseLogin      = Substitute.For <ILoginToGitHubForEnterpriseViewModel>();
            var gitHubConnection     = Substitute.For <IConnection>();
            var enterpriseConnection = Substitute.For <IConnection>();

            connectionManager.Connections.Returns(connections);
            gitHubConnection.HostAddress.Returns(HostAddress.GitHubDotComHostAddress);
            enterpriseConnection.HostAddress.Returns(HostAddress.Create("https://enterprise.url"));

            var loginViewModel = new LoginControlViewModel(connectionManager, gitHubLogin, enterpriseLogin);

            Assert.Equal(LoginMode.DotComOrEnterprise, loginViewModel.LoginMode);

            connections.Add(enterpriseConnection);
            Assert.Equal(LoginMode.DotComOnly, loginViewModel.LoginMode);

            connections.Add(gitHubConnection);
            Assert.Equal(LoginMode.None, loginViewModel.LoginMode);

            connections.RemoveAt(0);
            Assert.Equal(LoginMode.EnterpriseOnly, loginViewModel.LoginMode);
        }
예제 #2
0
        public async Task AllowsLoginFromEnterpriseAfterGitHubLoginHasFailed()
        {
            var connectionManager = Substitute.For <IConnectionManager>();

            var gitHubLogin        = Substitute.For <ILoginToGitHubViewModel>();
            var gitHubLoginCommand = ReactiveCommand.CreateAsyncObservable(_ =>
                                                                           Observable.Return(AuthenticationResult.CredentialFailure));

            gitHubLogin.Login.Returns(gitHubLoginCommand);

            var enterpriseLogin        = Substitute.For <ILoginToGitHubForEnterpriseViewModel>();
            var enterpriseLoginCommand = ReactiveCommand.CreateAsyncObservable(_ =>
                                                                               Observable.Return(AuthenticationResult.Success));

            enterpriseLogin.Login.Returns(enterpriseLoginCommand);

            var loginViewModel = new LoginControlViewModel(connectionManager, gitHubLogin, enterpriseLogin);
            var success        = false;

            loginViewModel.AuthenticationResults
            .Where(x => x == AuthenticationResult.Success)
            .Subscribe(_ => success = true);

            await gitHubLoginCommand.ExecuteAsync();

            await enterpriseLoginCommand.ExecuteAsync();

            Assert.True(success);
        }
예제 #3
0
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            LoginControlWindow    app     = new LoginControlWindow();
            LoginControlViewModel context = new LoginControlViewModel();

            app.DataContext = context;
            app.Show();
        }
예제 #4
0
        public LoginControl()
        {
            InitializeComponent();
            LoginModel = new LoginControlViewModel()
            {
                Account = "",
                Pwd     = "",
                IsError = false,
                IsLogin = false
            };
            this.DataContext = LoginModel;

            Loaded += UserControl_Loaded;
        }
예제 #5
0
        public async Task FailedGitHubLoginDoesNotSignalDone()
        {
            var connectionManager = Substitute.For <IConnectionManager>();

            var gitHubLogin        = Substitute.For <ILoginToGitHubViewModel>();
            var gitHubLoginCommand = ReactiveCommand.CreateAsyncObservable(_ =>
                                                                           Observable.Return(AuthenticationResult.CredentialFailure));

            gitHubLogin.Login.Returns(gitHubLoginCommand);
            var enterpriseLogin = Substitute.For <ILoginToGitHubForEnterpriseViewModel>();

            var loginViewModel = new LoginControlViewModel(connectionManager, gitHubLogin, enterpriseLogin);
            var signalled      = false;

            loginViewModel.Done.Subscribe(_ => signalled = true);
            await gitHubLoginCommand.ExecuteAsync();

            Assert.False(signalled);
        }
        public async Task SucessfulGitHubLoginSignalsDone()
        {
            var repositoryHosts = Substitute.For <IRepositoryHosts>();

            var gitHubLogin        = Substitute.For <ILoginToGitHubViewModel>();
            var gitHubLoginCommand = ReactiveCommand.CreateAsyncObservable(_ =>
                                                                           Observable.Return(AuthenticationResult.Success));

            gitHubLogin.Login.Returns(gitHubLoginCommand);
            var enterpriseLogin = Substitute.For <ILoginToGitHubForEnterpriseViewModel>();

            var loginViewModel = new LoginControlViewModel(repositoryHosts, gitHubLogin, enterpriseLogin);
            var signalled      = false;

            loginViewModel.Done.Subscribe(_ => signalled = true);
            await gitHubLoginCommand.ExecuteAsync();

            Assert.True(signalled);
        }
예제 #7
0
        //Command list of window
        //konstruktor muze byt z nastaveni okna
        public WindowViewModel(System.Windows.Window p_window)
        {
            mWindow = p_window;
            AuthVM  = AuthenticationViewModel.Instance; // autentizace take
            LoginControlViewModel Temp = new LoginControlViewModel();

            Temp.SuccesFullLogin += NavToProfileUser;
            CurrentPage           = Temp;

            NavCommand = new RelayCommand <string>(OnNav);

            // Listen out for the window resizing
            mWindow.StateChanged += (sender, e) =>
            {
                // Fire off events for all properties that are affected by a resize
                WindowResized();
            };

            // Create commands
            MinimizeCommand = new RelayCommand(() => mWindow.WindowState = WindowState.Minimized);
            MaximizeCommand = new RelayCommand(() => mWindow.WindowState ^= WindowState.Maximized);
            CloseCommand    = new RelayCommand(() => mWindow.Close());
            MenuCommand     = new RelayCommand(() => SystemCommands.ShowSystemMenu(mWindow, GetMousePosition()));

            // Fix window resize issue
            var resizer = new WindowResizer(mWindow);

            // Listen out for dock changes
            resizer.WindowDockChanged += (dock) =>
            {
                // Store last position
                mDockPosition = dock;

                // Fire off resize events
                WindowResized();
            };
        }