Ejemplo n.º 1
0
        public async Task TestPendingCommands()
        {
            var data    = new TestBotData.Simple();
            var channel = data.Channel;

            data.Guild.Members.Add(new TestUser
            {
                Username      = "******",
                Discriminator = "0002"
            });

            await Host.CreateDefaultBuilder()
            .ConfigureServices(services =>
            {
                services.AddArgumentWithParsers();
                services.AddCommand(builder =>
                {
                    builder.AddModule <GreetModule>();
                });
            })
            .ConfigureDiscordBot(builder =>
            {
                builder.UsePendingCommand();
                builder.UseCommands();
            })
            .RunTestAsync(data, _output, async client =>
            {
                await client.SendMessageAsync(channel, data.UserTest, "greet Test");
                await client.SendMessageAsync(channel, data.UserTest, "1");
                channel.AssertLastMessage("Hello " + data.UserTest.Username);
            });
        }
Ejemplo n.º 2
0
        public async Task TestPermissions()
        {
            using var connection = new SqliteConnection("DataSource=:memory:");
            connection.Open();

            var data    = new TestBotData.Simple();
            var channel = data.Channel;

            data.Guild.Members[0].UserPermissions = GuildPermission.All;

            await Host.CreateDefaultBuilder()
            .ConfigureServices(services =>
            {
                services.AddLocalizations();
                services.AddCommandEfCoreRepositories <TestDbContext>();
                services.AddArgumentWithParsers();

                services.AddCommand(builder =>
                {
                    builder.AddPermissionModule();
                    builder.AddModule <GreetModule>();
                });

                services.AddDbContext <TestDbContext>(builder =>
                {
                    builder.UseSqlite(connection);
                });

                services.AddHostedService(provider => provider.GetRequiredService <TestDbContext>().Database.EnsureCreatedAsync());
            })
            .ConfigureDiscordBot(app =>
            {
                app.UseCommands();
            })
            .RunTestAsync(data, _output, async client =>
            {
                // The user should have permissions to the greet command.
                await client.SendMessageAsync(channel, data.UserTest, "greet Test");
                channel.AssertLastMessage("Hello " + data.UserTest.Username);

                // Revoke the command.
                await client.SendMessageAsync(channel, data.UserTest, "revoke everyone greet.greet");

                // The command should be revoked.
                await client.SendMessageAsync(channel, data.UserTest, "greet Test");
                channel.AssertLastMessage("You don't have permissions to do that.");
            });
        }
Ejemplo n.º 3
0
        public async Task TestEventListener()
        {
            var data          = new TestBotData.Simple();
            var eventListener = new MessageEventListener();

            await Host.CreateDefaultBuilder()
            .ConfigureServices(services =>
            {
                services.AddEventListener(eventListener);
            })
            .RunTestAsync(data, _output, async client =>
            {
                await client.SendMessageAsync(data.Channel, data.UserTest, "Foo");
                Assert.Equal("Foo", eventListener.LastMessage);
                Assert.Equal("Foo", eventListener.LastMessageTask);
            });
        }
Ejemplo n.º 4
0
        public async Task TestGuildOptions(Type builderType)
        {
            var data    = new TestBotData.Simple();
            var channel = data.Channel;

            data.Guild.Members.Add(new TestUser
            {
                Username      = "******",
                Discriminator = "0002"
            });

            await Host.CreateDefaultBuilder()
            .ConfigureServices(services =>
            {
                services.AddArgumentWithParsers();
                services.AddCommand(builder =>
                {
                    builder.AddModule <TestModule>();
                });
                services.AddGuildOptions();
                services.AddScoped <IGuildOptionRepository, MemoryGuildOptionRepository>();
                services.AddSingleton(typeof(IModuleCompiler), builderType);
            })
            .ConfigureDiscordBot(builder =>
            {
                builder.UseCommands();
            })
            .RunTestAsync(data, _output, async client =>
            {
                await client.SendMessageAsync(channel, data.UserTest, "get");
                channel.AssertLastMessage("No value");
                await client.SendMessageAsync(channel, data.UserTest, "set Hello");
                channel.AssertLastMessage("Content saved");
                await client.SendMessageAsync(channel, data.UserTest, "get");
                channel.AssertLastMessage("Hello");
            });
        }
Ejemplo n.º 5
0
        public async Task TestPipeline()
        {
            var data    = new TestBotData.Simple();
            var channel = data.Channel;

            await Host.CreateDefaultBuilder()
            .ConfigureDiscordBot(builder =>
            {
                builder.Use((context, next) =>
                {
                    if (context.Request.Message == "Foo")
                    {
                        context.Response.AddMessage("Bar");
                    }

                    return(next());
                });
            })
            .RunTestAsync(data, _output, async client =>
            {
                await client.SendMessageAsync(channel, data.UserTest, "Foo");
                channel.AssertLastMessage("Bar");
            });
        }