Files
ChatBot/ChatBot.Tests/Models/TelegramBotSettingsTests.cs
Leonid Pershin af9773e7d6
All checks were successful
SonarQube / Build and analyze (push) Successful in 2m25s
Unit Tests / Run Tests (push) Successful in 1m9s
add tests
2025-10-20 06:07:45 +03:00

743 lines
20 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
}
}