using Coscine.Api.Project.Controllers; using Coscine.Api.Project.Models; using Coscine.Api.Project.ReturnObjects; using Coscine.ApiCommons.Exceptions; using Coscine.ApiCommons.Factories; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using NUnit.Framework; using System; using System.Collections.Generic; using System.IO; namespace Coscine.Api.Project.Tests { [TestFixture] public class ResourceControllerTests : DefaultControllerTests { public ResourceControllerTests() : base(new ResourceController()) { } [Test] public void TestControllerIndex() { var actionResult = Controller.Index(); Assert.IsTrue(actionResult.GetType() == typeof(JsonResult)); } [Test] public void TestControllerGet() { var actionResult = Controller.Get(Resources[0].Id.ToString()); Assert.IsTrue(actionResult.GetType() == typeof(JsonResult)); JsonResult result = (JsonResult)actionResult; Assert.IsTrue(result.Value.GetType() == typeof(ResourceObject)); ResourceObject resourceObject = (ResourceObject)result.Value; Assert.IsTrue(resourceObject.Id == Resources[0].Id); Assert.IsTrue(resourceObject.DisplayName == Resources[0].DisplayName); Assert.IsTrue(resourceObject.Visibility.DisplayName == Resources[0].Visibility.DisplayName); Assert.IsTrue(resourceObject.Type.Id == Resources[0].Type.Id); Assert.IsTrue(resourceObject.Type.DisplayName == Resources[0].Type.DisplayName); } [Test] public void TestControllerUpdate() { var actionResult = Controller.Get(Resources[0].Id.ToString()); JsonResult result = (JsonResult)actionResult; ResourceObject resourceObject = (ResourceObject)result.Value; resourceObject.DisplayName = "OtherName"; resourceObject.ResourceTypeOption = JObject.FromObject(new RDSResourceTypeObject(Guid.NewGuid(), "PITLABTTEST", 0)); Stream stream = ObjectFactory.SerializeToStream(resourceObject); FakeControllerContext(Users[0], stream); actionResult = Controller.Update(Resources[0].Id.ToString()); Assert.IsTrue(actionResult.GetType() == typeof(JsonResult)); // Cleanup stream.Close(); stream = ObjectFactory.SerializeToStream(resourceObject); FakeControllerContext(Users[0], stream); actionResult = Controller.Update(Resources[1].Id.ToString()); Assert.IsTrue(actionResult.GetType() == typeof(UnauthorizedObjectResult)); // Cleanup stream.Close(); } [Test] public void TestControllerStoreToProject() { ResourceObject resourceObject = new ResourceObject( Guid.NewGuid(), "Test", "testR", "testD", "keys", "usageR", new ResourceTypeObject(Resources[0].Type.Id, Resources[0].Type.DisplayName, Resources[0].Type.Enabled), new List() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) }, new VisibilityObject(Visibility.Id, Visibility.DisplayName), new LicenseObject(License.Id, License.DisplayName), JObject.FromObject(new RDSResourceTypeObject(Guid.NewGuid(), "PITLABTTEST", 0)), "link", JToken.Parse("{}") ); Stream stream = ObjectFactory.SerializeToStream(resourceObject); FakeControllerContext(Users[0], stream); var actionResult = Controller.StoreToProject(Projects[0].Id.ToString()); Assert.IsTrue(actionResult.GetType() == typeof(JsonResult)); JsonResult result = (JsonResult)actionResult; resourceObject = (ResourceObject)result.Value; // Cleanup stream.Close(); stream = ObjectFactory.SerializeToStream(resourceObject); FakeControllerContext(Users[0], stream); actionResult = Controller.Delete(resourceObject.Id.ToString()); Assert.IsTrue(actionResult.GetType() == typeof(JsonResult)); stream.Close(); } } }