/
qwiklly
/
arc-server
Обзор
Документация
Войти
/
qwiklly
/
arc-server
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
trunk
tests/AppRemoteConfigTests/Controllers/ParameterControllerTests.cs
121 строка
6 KB
CLTanuki
fix: value flags and conditions
28 дек 2023, 11:22
28 дек 2023, 11:22
9e23cca
Код
Авторство
О чём код?
namespace AppRemoteConfigTests.Controllers { using System.Text.Json; using AppRemoteConfig.Controllers; using AppRemoteConfig.Helpers; using AppRemoteConfig.Models.Database; using AppRemoteConfigTests.Fixtures; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; [TestClass()] public class ParameterControllerTests { private readonly Mock<IHttpContextAccessor> _mockHttpContextAccessor; private readonly Mock<ILogger<ParameterController>> _mockLogger; private readonly Mock<ApplicationContext> _mockContext; public ParameterControllerTests() { _mockContext = TestMockSetup.GetContextMock(); _mockHttpContextAccessor = new Mock<IHttpContextAccessor>(); var httpContext = new DefaultHttpContext(); _mockHttpContextAccessor.Setup(_ => _.HttpContext).Returns(httpContext); _mockLogger = new Mock<ILogger<ParameterController>>(); } [TestMethod()] public async Task IsFlagActiveOperandAnd() { var controller = new ParameterController(_mockLogger.Object, _mockHttpContextAccessor.Object, _mockContext.Object); var jsonPath = "Fixtures/testFixtureCorrect.json"; using FileStream fstream = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, jsonPath), FileMode.Open); var jsonParams = JsonDocument.Parse(fstream).RootElement; var appId = _mockContext.Object.Applications.First(a => a.Title == "App 1").Id; var versId = _mockContext.Object.Versions.First(a => a.Major == 1 && a.Minor == 1).GetVersionString(); var flagId = _mockContext.Object.ValueFlags.First(a => a.Title == "ValueFlag 1").FeatureKey; var result = await controller.IsFlagActive(appId, versId, flagId, jsonParams); Assert.IsFalse(result); } [TestMethod()] public async Task IsFlagActiveOperandOr() { var controller = new ParameterController(_mockLogger.Object, _mockHttpContextAccessor.Object, _mockContext.Object); var jsonPath = "Fixtures/testFixtureCorrect.json"; using FileStream fstream = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, jsonPath), FileMode.Open); var jsonParams = JsonDocument.Parse(fstream).RootElement; var appId = _mockContext.Object.Applications.First(a => a.Title == "App 1").Id; var versId = _mockContext.Object.Versions.First(a => a.Major == 1 && a.Minor == 1).GetVersionString(); var flagId = _mockContext.Object.ValueFlags.First(a => a.Title == "ValueFlag 2").FeatureKey; var result = await controller.IsFlagActive(appId, versId, flagId, jsonParams); Assert.IsTrue(result); } [TestMethod()] public async Task IsFlagActiveOperandNot() { var controller = new ParameterController(_mockLogger.Object, _mockHttpContextAccessor.Object, _mockContext.Object); var jsonPath = "Fixtures/testFixtureCorrect.json"; using FileStream fstream = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, jsonPath), FileMode.Open); var jsonParams = JsonDocument.Parse(fstream).RootElement; var appId = _mockContext.Object.Applications.First(a => a.Title == "App 1").Id; var versId = _mockContext.Object.Versions.First(a => a.Major == 1 && a.Minor == 1).GetVersionString(); var flagId = _mockContext.Object.ValueFlags.First(a => a.Title == "ValueFlag 3").FeatureKey; var result = await controller.IsFlagActive(appId, versId, flagId, jsonParams); Assert.IsFalse(result); } [TestMethod()] public async Task IsFlagActiveWithIncorrectData() { var controller = new ParameterController(_mockLogger.Object, _mockHttpContextAccessor.Object, _mockContext.Object); var jsonPath = "Fixtures/testFixtureIncorrectJson.json"; using FileStream fstream = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, jsonPath), FileMode.Open); var jsonParams = JsonDocument.Parse(fstream).RootElement; var appId = _mockContext.Object.Applications.First(a => a.Title == "App 1").Id; var versId = _mockContext.Object.Versions.First(a => a.Major == 1 && a.Minor == 1).GetVersionString(); var flagId = _mockContext.Object.ValueFlags.First(a => a.Title == "ValueFlag 1").FeatureKey; try { var result = await controller.IsFlagActive(appId, versId, flagId, jsonParams); } catch (Exception e) { Assert.IsInstanceOfType(e, typeof(InvalidOperationException)); } } [TestMethod()] public async Task IsFlagActiveWithExtraData() { var controller = new ParameterController(_mockLogger.Object, _mockHttpContextAccessor.Object, _mockContext.Object); var jsonPath = "Fixtures/testFixtureExtraData.json"; using FileStream fstream = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, jsonPath), FileMode.Open); var jsonParams = JsonDocument.Parse(fstream).RootElement; var appId = _mockContext.Object.Applications.First(a => a.Title == "App 1").Id; var versId = _mockContext.Object.Versions.First(a => a.Major == 1 && a.Minor == 1).GetVersionString(); var flagId = _mockContext.Object.ValueFlags.First(a => a.Title == "ValueFlag 1").FeatureKey; var result = await controller.IsFlagActive(appId, versId, flagId, jsonParams); Assert.IsFalse(result); } } }