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); }); }
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."); }); }
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); }); }
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"); }); }
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"); }); }