Пример #1
0
        public async Task Queue()
        {
            var toBot = this.Fixture.CreateMessage();

            toBot.Text = "queue 1";

            var account     = "anaccount";
            var profile     = this.Fixture.CreateProfile();
            var teamProject = "anteamproject";

            var target = new BuildsDialog(this.Fixture.VstsService.Object, this.Fixture.VstsApplicationRegistry.Object)
            {
                Account     = account,
                Profile     = profile,
                TeamProject = teamProject
            };

            this.Fixture.VstsService
            .Setup(s => s.QueueBuildAsync(account, teamProject, 1, profile.Token))
            .ReturnsAsync(new Build {
                Id = 99
            });

            await target.QueueAsync(this.Fixture.DialogContext.Object, this.Fixture.MakeAwaitable(toBot));

            this.Fixture.VstsService.VerifyAll();
            this.Fixture.DialogContext
            .Verify(dc => dc.PostAsync(
                        It.Is <IMessageActivity>(a => a.Text.Equals("Build with id 99 is queued.", StringComparison.OrdinalIgnoreCase)),
                        CancellationToken.None));

            this.Fixture.DialogContext.Verify(c => c.Done(It.IsAny <IMessageActivity>()));
        }
Пример #2
0
        public async Task Builds_Empty_List()
        {
            var toBot = this.Fixture.CreateMessage();

            toBot.Text = "builds";

            var profile = this.Fixture.CreateProfile();
            var data    = new UserData {
                Account = "anaccount", TeamProject = "anteamproject"
            };

            data.Profiles.Add(profile);

            var buildDefinitions = new List <BuildDefinitionReference>();

            var target = new BuildsDialog(this.Fixture.AuthenticationService.Object, this.Fixture.VstsService.Object);

            this.Fixture.UserData
            .Setup(ud => ud.TryGetValue("userData", out data))
            .Returns(true);

            this.Fixture.VstsService
            .Setup(s => s.GetBuildDefinitionsAsync(data.Account, data.TeamProject, profile.Token))
            .ReturnsAsync(buildDefinitions);

            await target.BuildsAsync(this.Fixture.DialogContext.Object, this.Fixture.MakeAwaitable(toBot));

            this.Fixture.VstsService.VerifyAll();

            this.Fixture.DialogContext.Verify(c => c.PostAsync(It.IsAny <IMessageActivity>(), CancellationToken.None));
            this.Fixture.DialogContext.Verify(c => c.Done(It.IsAny <IMessageActivity>()));
        }
Пример #3
0
        public async Task InGroup_Command()
        {
            var toBot = this.Fixture.CreateMessage();

            toBot.Text = "builds";
            toBot.Conversation.IsGroup = true;

            var dialog = new BuildsDialog(new Mock <IAuthenticationService>().Object, new Mock <IVstsService>().Object);

            var container = new ContainerBuilder();

            container
            .RegisterModule <AttributedMetadataModule>();
            container
            .Register((c, x) => dialog)
            .As <IDialog <object> >();
            var build = container.Build();

            GlobalConfiguration.Configure(config => config.DependencyResolver = new AutofacWebApiDependencyResolver(build));

            var target = this.Fixture.RootDialog;

            await target.HandleCommandAsync(this.Fixture.DialogContext.Object, toBot);

            this.Fixture.DialogContext
            .Verify(c => c.Wait <IMessageActivity>(target.HandleActivityAsync));
        }
Пример #4
0
        public async Task Forward_Command()
        {
            var toBot = this.Fixture.CreateMessage();

            toBot.Text = "builds";

            var dialog = new BuildsDialog(new Mock <IAuthenticationService>().Object, new Mock <IVstsService>().Object);

            var container = new ContainerBuilder();

            container
            .RegisterModule <AttributedMetadataModule>();
            container
            .Register((c, x) => dialog)
            .As <IDialog <object> >();
            var build = container.Build();

            GlobalConfiguration.Configure(config => config.DependencyResolver = new AutofacWebApiDependencyResolver(build));

            var target = this.Fixture.RootDialog;

            await target.HandleCommandAsync(this.Fixture.DialogContext.Object, toBot);

            this.Fixture.DialogContext
            .Verify(c => c.Forward <object, IMessageActivity>(dialog, target.ResumeAfterChildDialog, toBot, CancellationToken.None));
        }
Пример #5
0
        public async Task Queue_No_Text()
        {
            var toBot = this.Fixture.CreateMessage();

            toBot.Text = null;

            var target = new BuildsDialog(this.Fixture.AuthenticationService.Object, this.Fixture.VstsService.Object);
            await target.QueueAsync(this.Fixture.DialogContext.Object, this.Fixture.MakeAwaitable(toBot));

            this.Fixture.DialogContext.Verify(c => c.Fail(It.IsAny <UnknownCommandException>()));
        }
Пример #6
0
        public async Task Builds()
        {
            var toBot = this.Fixture.CreateMessage();

            toBot.Text = "builds";

            var account     = "anaccount";
            var profile     = this.Fixture.CreateProfile();
            var teamProject = "anteamproject";

            var buildDefinitions = new List <BuildDefinitionReference> {
                new BuildDefinitionReference {
                    Name = "Build 1"
                }
            };

            var target = new BuildsDialog(this.Fixture.VstsService.Object, this.Fixture.VstsApplicationRegistry.Object);

            this.Fixture.UserData
            .Setup(ud => ud.TryGetValue("Account", out account))
            .Returns(true);
            this.Fixture.UserData
            .Setup(ud => ud.TryGetValue("Profile", out profile))
            .Returns(true);
            this.Fixture.UserData
            .Setup(ud => ud.TryGetValue("TeamProject", out teamProject))
            .Returns(true);

            this.Fixture.VstsService
            .Setup(s => s.GetBuildDefinitionsAsync(account, teamProject, profile.Token))
            .ReturnsAsync(buildDefinitions);

            var applicationMock = new Mock <IVstsApplication>();

            applicationMock
            .Setup(application => application.AuthenticationService)
            .Returns(new Mock <IAuthenticationService>().Object);

            this.Fixture.VstsApplicationRegistry
            .Setup(registry => registry.GetVstsApplicationRegistration(It.IsAny <string>()))
            .Returns(applicationMock.Object);

            await target.BuildsAsync(this.Fixture.DialogContext.Object, this.Fixture.MakeAwaitable(toBot));

            this.Fixture.VstsService.VerifyAll();

            this.Fixture.DialogContext.Verify(c => c.PostAsync(It.IsAny <IMessageActivity>(), CancellationToken.None));
            this.Fixture.DialogContext.Verify(c => c.Wait <IMessageActivity>(target.QueueAsync));
        }
Пример #7
0
        public async Task Builds_No_Text()
        {
            var toBot = this.Fixture.CreateMessage();

            toBot.Text = null;

            var target = new BuildsDialog(this.Fixture.VstsService.Object, this.Fixture.VstsApplicationRegistry.Object);

            var applicationMock = new Mock <IVstsApplication>();

            applicationMock
            .Setup(application => application.AuthenticationService)
            .Returns(new Mock <IAuthenticationService>().Object);

            this.Fixture.VstsApplicationRegistry
            .Setup(registry => registry.GetVstsApplicationRegistration(It.IsAny <string>()))
            .Returns(applicationMock.Object);

            await target.BuildsAsync(this.Fixture.DialogContext.Object, this.Fixture.MakeAwaitable(toBot));

            this.Fixture.DialogContext.Verify(c => c.Fail(It.IsAny <UnknownCommandException>()));
        }
Пример #8
0
        public async Task Builds_Missing_Awaitable()
        {
            var target = new BuildsDialog(this.Fixture.AuthenticationService.Object, this.Fixture.VstsService.Object);

            await Assert.ThrowsExceptionAsync <ArgumentNullException>(async() => await target.BuildsAsync(this.Fixture.DialogContext.Object, null));
        }
Пример #9
0
        public async Task Builds_Missing_Context()
        {
            var target = new BuildsDialog(this.Fixture.VstsService.Object, this.Fixture.VstsApplicationRegistry.Object);

            await Assert.ThrowsExceptionAsync <ArgumentNullException>(async() => await target.BuildsAsync(null, null));
        }