|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.CodeAnalysis;
- using Microsoft.CodeAnalysis.Diagnostics;
- using Discord.Analyzers;
- using TestHelper;
- using Xunit;
-
- namespace Discord
- {
- public partial class AnalyserTests
- {
- public class GuildAccessTests : DiagnosticVerifier
- {
- [Fact]
- public void VerifyDiagnosticWhenLackingRequireContext()
- {
- string source = @"using System;
- using System.Threading.Tasks;
- using Discord.Commands;
-
- namespace Test
- {
- public class TestModule : ModuleBase<ICommandContext>
- {
- [Command(""test"")]
- public Task TestCmd() => ReplyAsync(Context.Guild.Name);
- }
- }";
- var expected = new DiagnosticResult()
- {
- Id = "DNET0001",
- Locations = new[] { new DiagnosticResultLocation("Test0.cs", line: 10, column: 45) },
- Message = "Command method 'TestCmd' is accessing 'Context.Guild' but is not restricted to Guild contexts.",
- Severity = DiagnosticSeverity.Warning
- };
- VerifyCSharpDiagnostic(source, expected);
- }
-
- [Fact]
- public void VerifyDiagnosticWhenWrongRequireContext()
- {
- string source = @"using System;
- using System.Threading.Tasks;
- using Discord.Commands;
-
- namespace Test
- {
- public class TestModule : ModuleBase<ICommandContext>
- {
- [Command(""test""), RequireContext(ContextType.Group)]
- public Task TestCmd() => ReplyAsync(Context.Guild.Name);
- }
- }";
- var expected = new DiagnosticResult()
- {
- Id = "DNET0001",
- Locations = new[] { new DiagnosticResultLocation("Test0.cs", line: 10, column: 45) },
- Message = "Command method 'TestCmd' is accessing 'Context.Guild' but is not restricted to Guild contexts.",
- Severity = DiagnosticSeverity.Warning
- };
- VerifyCSharpDiagnostic(source, expected);
- }
-
- [Fact]
- public void VerifyNoDiagnosticWhenRequireContextOnMethod()
- {
- string source = @"using System;
- using System.Threading.Tasks;
- using Discord.Commands;
-
- namespace Test
- {
- public class TestModule : ModuleBase<ICommandContext>
- {
- [Command(""test""), RequireContext(ContextType.Guild)]
- public Task TestCmd() => ReplyAsync(Context.Guild.Name);
- }
- }";
-
- VerifyCSharpDiagnostic(source, Array.Empty<DiagnosticResult>());
- }
-
- [Fact]
- public void VerifyNoDiagnosticWhenRequireContextOnClass()
- {
- string source = @"using System;
- using System.Threading.Tasks;
- using Discord.Commands;
-
- namespace Test
- {
- [RequireContext(ContextType.Guild)]
- public class TestModule : ModuleBase<ICommandContext>
- {
- [Command(""test"")]
- public Task TestCmd() => ReplyAsync(Context.Guild.Name);
- }
- }";
-
- VerifyCSharpDiagnostic(source, Array.Empty<DiagnosticResult>());
- }
-
- protected override DiagnosticAnalyzer GetCSharpDiagnosticAnalyzer()
- => new GuildAccessAnalyzer();
- }
- }
- }
|