using AgileConfig.Server.Apisite.Controllers.api; using AgileConfig.Server.Apisite.Models; using AgileConfig.Server.Data.Entity; using AgileConfig.Server.IService; using Microsoft.AspNetCore.Mvc; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Extensions.Caching.Memory; namespace ApiSiteTests { [TestClass] public class TestApiConfigController { [TestMethod] public async Task TestGet() { App newApp() { return new App() { Enabled = true }; } var appService = new Mock(); appService.Setup(s => s.GetAsync("001")).ReturnsAsync(newApp); List newConfigs() { var list = new List(); list.Add(new Config { Id = "001", Key ="key1", Value = "val1", Group = "" }); list.Add(new Config { Id = "002", Key = "key2", Value = "val2", Group = "group1", AppId = "001", Status = ConfigStatus.Enabled }); return list; } var configService = new Mock(); //configService.Setup(s => s.GetPublishedConfigsAsync("001")) // .ReturnsAsync(newConfigs); configService.Setup(s => s.GetPublishedConfigsByAppIdWithInheritanced("001", "")) .ReturnsAsync(newConfigs); var memoryCache = new Mock(); var remoteNodeProxy = new Mock(); var serverNodeService = new Mock(); var sysLogService = new Mock(); var appBasicAuthService = new Mock(); var userSErvice = new Mock(); var ctrl = new ConfigController( configService.Object, appService.Object, userSErvice.Object, memoryCache.Object); var act = await ctrl.GetAppConfig("001", ""); Assert.IsNotNull(act); Assert.IsNotNull(act.Value); Assert.IsInstanceOfType(act.Value, typeof(List)); Assert.AreEqual(2, act.Value.Count); App newApp1() { return new App() { Enabled = false }; } appService = new Mock(); appService.Setup(s => s.GetAsync("001")).ReturnsAsync(newApp1); ctrl = new ConfigController( configService.Object, appService.Object, userSErvice.Object, memoryCache.Object); act = await ctrl.GetAppConfig("001", ""); Assert.IsNotNull(act); Assert.IsNull(act.Value); Assert.IsInstanceOfType(act.Result, typeof(NotFoundResult)); } } }