add tests
All checks were successful
SonarQube / Build and analyze (push) Successful in 2m25s
Unit Tests / Run Tests (push) Successful in 1m9s

This commit is contained in:
Leonid Pershin
2025-10-20 06:07:45 +03:00
parent 92df3b32c5
commit af9773e7d6
8 changed files with 4031 additions and 0 deletions

View File

@@ -0,0 +1,742 @@
using ChatBot.Models.Configuration;
using FluentAssertions;
namespace ChatBot.Tests.Models;
public class TelegramBotSettingsTests
{
[Fact]
public void Constructor_ShouldInitializePropertiesWithDefaultValues()
{
// Arrange & Act
var settings = new TelegramBotSettings();
// Assert
settings.BotToken.Should().Be(string.Empty);
}
[Fact]
public void BotToken_ShouldBeSettable()
{
// Arrange
var settings = new TelegramBotSettings();
var expectedToken = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk";
// Act
settings.BotToken = expectedToken;
// Assert
settings.BotToken.Should().Be(expectedToken);
}
[Theory]
[InlineData("")]
[InlineData("1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk")]
[InlineData("1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk-")]
[InlineData("1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk_")]
[InlineData("1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk.")]
[InlineData("1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk+")]
[InlineData("1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk/")]
[InlineData("1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk=")]
public void BotToken_ShouldAcceptVariousFormats(string token)
{
// Arrange
var settings = new TelegramBotSettings();
// Act
settings.BotToken = token;
// Assert
settings.BotToken.Should().Be(token);
}
[Fact]
public void AllProperties_ShouldBeMutable()
{
// Arrange
var settings = new TelegramBotSettings();
// Act
settings.BotToken = "9876543210:ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba";
// Assert
settings
.BotToken.Should()
.Be("9876543210:ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba");
}
[Fact]
public void Settings_ShouldSupportEmptyToken()
{
// Arrange
var settings = new TelegramBotSettings();
// Act
settings.BotToken = "";
// Assert
settings.BotToken.Should().Be("");
}
[Fact]
public void Settings_ShouldSupportNullToken()
{
// Arrange
var settings = new TelegramBotSettings();
// Act
settings.BotToken = null!;
// Assert
settings.BotToken.Should().BeNull();
}
[Fact]
public void Settings_ShouldSupportValidBotToken()
{
// Arrange
var settings = new TelegramBotSettings();
var validToken = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk";
// Act
settings.BotToken = validToken;
// Assert
settings.BotToken.Should().Be(validToken);
}
[Fact]
public void Settings_ShouldSupportShortBotToken()
{
// Arrange
var settings = new TelegramBotSettings();
var shortToken = "123:ABC";
// Act
settings.BotToken = shortToken;
// Assert
settings.BotToken.Should().Be(shortToken);
}
[Fact]
public void Settings_ShouldSupportLongBotToken()
{
// Arrange
var settings = new TelegramBotSettings();
var longToken =
"12345678901234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
// Act
settings.BotToken = longToken;
// Assert
settings.BotToken.Should().Be(longToken);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithNumbers()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithNumbers = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk1234567890";
// Act
settings.BotToken = tokenWithNumbers;
// Assert
settings.BotToken.Should().Be(tokenWithNumbers);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithLetters()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithLetters = "abcdefghij:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk";
// Act
settings.BotToken = tokenWithLetters;
// Assert
settings.BotToken.Should().Be(tokenWithLetters);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithMixedCase()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithMixedCase = "1234567890:AbCdEfGhIjKlMnOpQrStUvWxYz";
// Act
settings.BotToken = tokenWithMixedCase;
// Assert
settings.BotToken.Should().Be(tokenWithMixedCase);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithSpecialCharacters()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithSpecialChars = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk-_.+/=";
// Act
settings.BotToken = tokenWithSpecialChars;
// Assert
settings.BotToken.Should().Be(tokenWithSpecialChars);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithColon()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithColon = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk:";
// Act
settings.BotToken = tokenWithColon;
// Assert
settings.BotToken.Should().Be(tokenWithColon);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithUnderscores()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithUnderscores = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk_";
// Act
settings.BotToken = tokenWithUnderscores;
// Assert
settings.BotToken.Should().Be(tokenWithUnderscores);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithHyphens()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithHyphens = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk-";
// Act
settings.BotToken = tokenWithHyphens;
// Assert
settings.BotToken.Should().Be(tokenWithHyphens);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithDots()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithDots = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk.";
// Act
settings.BotToken = tokenWithDots;
// Assert
settings.BotToken.Should().Be(tokenWithDots);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithPlus()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithPlus = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk+";
// Act
settings.BotToken = tokenWithPlus;
// Assert
settings.BotToken.Should().Be(tokenWithPlus);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithSlash()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithSlash = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk/";
// Act
settings.BotToken = tokenWithSlash;
// Assert
settings.BotToken.Should().Be(tokenWithSlash);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithEquals()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithEquals = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk=";
// Act
settings.BotToken = tokenWithEquals;
// Assert
settings.BotToken.Should().Be(tokenWithEquals);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithUnicode()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithUnicode = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijkабвгд";
// Act
settings.BotToken = tokenWithUnicode;
// Assert
settings.BotToken.Should().Be(tokenWithUnicode);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithSpaces()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithSpaces = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk ";
// Act
settings.BotToken = tokenWithSpaces;
// Assert
settings.BotToken.Should().Be(tokenWithSpaces);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithTabs()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithTabs = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk\t";
// Act
settings.BotToken = tokenWithTabs;
// Assert
settings.BotToken.Should().Be(tokenWithTabs);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithNewlines()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithNewlines = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk\n";
// Act
settings.BotToken = tokenWithNewlines;
// Assert
settings.BotToken.Should().Be(tokenWithNewlines);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithCarriageReturn()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithCarriageReturn = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk\r";
// Act
settings.BotToken = tokenWithCarriageReturn;
// Assert
settings.BotToken.Should().Be(tokenWithCarriageReturn);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithQuotes()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithQuotes = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk\"";
// Act
settings.BotToken = tokenWithQuotes;
// Assert
settings.BotToken.Should().Be(tokenWithQuotes);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithSingleQuotes()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithSingleQuotes = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk'";
// Act
settings.BotToken = tokenWithSingleQuotes;
// Assert
settings.BotToken.Should().Be(tokenWithSingleQuotes);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithBackslashes()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithBackslashes = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk\\";
// Act
settings.BotToken = tokenWithBackslashes;
// Assert
settings.BotToken.Should().Be(tokenWithBackslashes);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithForwardSlashes()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithForwardSlashes = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk/";
// Act
settings.BotToken = tokenWithForwardSlashes;
// Assert
settings.BotToken.Should().Be(tokenWithForwardSlashes);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithPipes()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithPipes = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk|";
// Act
settings.BotToken = tokenWithPipes;
// Assert
settings.BotToken.Should().Be(tokenWithPipes);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithAmpersands()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithAmpersands = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk&";
// Act
settings.BotToken = tokenWithAmpersands;
// Assert
settings.BotToken.Should().Be(tokenWithAmpersands);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithPercents()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithPercents = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk%";
// Act
settings.BotToken = tokenWithPercents;
// Assert
settings.BotToken.Should().Be(tokenWithPercents);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithDollarSigns()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithDollarSigns = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk$";
// Act
settings.BotToken = tokenWithDollarSigns;
// Assert
settings.BotToken.Should().Be(tokenWithDollarSigns);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithAtSigns()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithAtSigns = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk@";
// Act
settings.BotToken = tokenWithAtSigns;
// Assert
settings.BotToken.Should().Be(tokenWithAtSigns);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithHashSigns()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithHashSigns = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk#";
// Act
settings.BotToken = tokenWithHashSigns;
// Assert
settings.BotToken.Should().Be(tokenWithHashSigns);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithExclamationMarks()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithExclamationMarks = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk!";
// Act
settings.BotToken = tokenWithExclamationMarks;
// Assert
settings.BotToken.Should().Be(tokenWithExclamationMarks);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithQuestionMarks()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithQuestionMarks = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk?";
// Act
settings.BotToken = tokenWithQuestionMarks;
// Assert
settings.BotToken.Should().Be(tokenWithQuestionMarks);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithBrackets()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithBrackets = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk[]";
// Act
settings.BotToken = tokenWithBrackets;
// Assert
settings.BotToken.Should().Be(tokenWithBrackets);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithBraces()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithBraces = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk{}";
// Act
settings.BotToken = tokenWithBraces;
// Assert
settings.BotToken.Should().Be(tokenWithBraces);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithParentheses()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithParentheses = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk()";
// Act
settings.BotToken = tokenWithParentheses;
// Assert
settings.BotToken.Should().Be(tokenWithParentheses);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithAngleBrackets()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithAngleBrackets = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk<>";
// Act
settings.BotToken = tokenWithAngleBrackets;
// Assert
settings.BotToken.Should().Be(tokenWithAngleBrackets);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithTildes()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithTildes = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk~";
// Act
settings.BotToken = tokenWithTildes;
// Assert
settings.BotToken.Should().Be(tokenWithTildes);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithCaret()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithCaret = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk^";
// Act
settings.BotToken = tokenWithCaret;
// Assert
settings.BotToken.Should().Be(tokenWithCaret);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithBackticks()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithBackticks = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk`";
// Act
settings.BotToken = tokenWithBackticks;
// Assert
settings.BotToken.Should().Be(tokenWithBackticks);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithSemicolons()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithSemicolons = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk;";
// Act
settings.BotToken = tokenWithSemicolons;
// Assert
settings.BotToken.Should().Be(tokenWithSemicolons);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithCommas()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithCommas = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk,";
// Act
settings.BotToken = tokenWithCommas;
// Assert
settings.BotToken.Should().Be(tokenWithCommas);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithPeriods()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithPeriods = "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk.";
// Act
settings.BotToken = tokenWithPeriods;
// Assert
settings.BotToken.Should().Be(tokenWithPeriods);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithAllSpecialCharacters()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithAllSpecialChars =
"1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk-_.+/=:;\"'\\|&%$@#!?[]{}()<>~^`";
// Act
settings.BotToken = tokenWithAllSpecialChars;
// Assert
settings.BotToken.Should().Be(tokenWithAllSpecialChars);
}
[Fact]
public void Settings_ShouldSupportVeryLongBotToken()
{
// Arrange
var settings = new TelegramBotSettings();
var veryLongToken =
"12345678901234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
// Act
settings.BotToken = veryLongToken;
// Assert
settings.BotToken.Should().Be(veryLongToken);
settings.BotToken.Length.Should().BeGreaterThan(100);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithOnlyNumbers()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithOnlyNumbers = "1234567890:123456789012345678901234567890";
// Act
settings.BotToken = tokenWithOnlyNumbers;
// Assert
settings.BotToken.Should().Be(tokenWithOnlyNumbers);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithOnlyLetters()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithOnlyLetters = "abcdefghij:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk";
// Act
settings.BotToken = tokenWithOnlyLetters;
// Assert
settings.BotToken.Should().Be(tokenWithOnlyLetters);
}
[Fact]
public void Settings_ShouldSupportBotTokenWithMixedContent()
{
// Arrange
var settings = new TelegramBotSettings();
var tokenWithMixedContent =
"1234567890:AbC123dEf456GhI789jKl012MnO345pQr678sTu901vWx234yZ567";
// Act
settings.BotToken = tokenWithMixedContent;
// Assert
settings.BotToken.Should().Be(tokenWithMixedContent);
}
}