public override async Task OnConnected()
        {
            string username     = Context.User.Identity.Name;
            string connectionId = Context.ConnectionId;

            Logger.Debug("OnConnected for {username} and {connectionId}", username, connectionId);

            await GetUserProjectsAndBuildsAndSendTheInfoToClient(username, connectionId);

            await _refreshInfo.SendRefreshBuildResults(connectionId);

            await base.OnConnected();
        }
コード例 #2
0
        public async Task OnConnect_QueriesUserProjectAndBuildConfigs_AndSendMappedInfoToClient_AndTriggersRefreshForThisClient()
        {
            string username     = _fixture.Create <string>();
            string connectionId = _fixture.Create <string>();

            A.CallTo(() => _principal.Identity.Name).Returns(username);
            A.CallTo(() => _context.ConnectionId).Returns(connectionId);
            A.CallTo(() => _context.User).Returns(_principal);

            List <Project> projects = _fixture.CreateMany <Project>().ToList();

            A.CallTo(() => _infoQuery.GetUserProjectsAndBuildConfigs(username))
            .Returns(projects);

            A.CallTo(() => _fakeClients.Client(connectionId)).Returns(_fakeClient);

            CiDashboardHub hub = new CiDashboardHub(_connectionsManager, _commandProcessor, _infoQuery, _refreshInfo)
            {
                Context = _context
            };

            hub.Clients = _fakeClients;
            await hub.OnConnected();

            A.CallTo(() => _infoQuery.GetUserProjectsAndBuildConfigs(username))
            .MustHaveHappened();

            List <string> buildCiIds = projects
                                       .SelectMany(
                p => p.Builds
                .Where(b => !string.IsNullOrEmpty(b.CiExternalId))
                .ToList())
                                       .Select(b => b.CiExternalId)
                                       .ToList();

            A.CallTo(() => _connectionsManager.AddBuildConfigs(connectionId,
                                                               A <IEnumerable <BuildConfig> > .That.Matches(l => !l.Select(b => b.CiExternalId).Except(buildCiIds).Any())))
            .MustHaveHappened();

            A.CallTo(() => _refreshInfo.SendRefreshBuildResults(connectionId))
            .MustHaveHappened();

            A.CallTo(() => _fakeClient
                     .SendProjectsAndBuildConfigs(projects))
            .MustHaveHappened();
        }