using System; using System.Security.Authentication; using Microsoft.VisualStudio.TestTools.UnitTesting; using Tango.BL; using Tango.MachineStudio.Common.Web; using Tango.Transport.Web; using System.Linq; namespace Tango.UnitTesting.Web { [TestClass] [TestCategory("Machine Service - Machine Studio")] public class MachineStudio_Controller_TST { private const string address = "http://localhost:51581"; [TestMethod] public void Login_and_check_for_updates() { //First test the more primitive web clients. IWebTransportClient client = new WebTransportClient(); var res1 = client.PostJson($"{address}/api/MachineStudio/Login", new LoginRequest() { Email = "TestUser@twine-s.com", Password = "ASJH_asdjkl1234", Version = "1.0.0.0" }).Result; String token = res1.AccessToken; client.AuthenticationToken = token; var res2 = client.PostJson($"{address}/api/MachineStudio/CheckForUpdates", new CheckForUpdatesRequest() { Version = "1.0.0.0" }).ConfigureAwait(false).GetAwaiter().GetResult(); //Check updates are available.. Assert.IsTrue(res2.IsUpdateAvailable); //Now check the dedicated machine studio client. MachineStudioWebClient msClient = new MachineStudioWebClient(address, null); //Should throw an exception without login first (no token specified..) Assert.ThrowsException(() => { var res3 = msClient.CheckForUpdates(new CheckForUpdatesRequest() { Version = "1.0.0.0" }).GetAwaiter().GetResult(); }); //Perform a login. var res4 = msClient.Login(new LoginRequest() { Email = "TestUser@twine-s.com", Password = "ASJH_asdjkl1234", Version = "1.0.0.0" }).Result; //Validate the data source received. using (ObservablesContext db = ObservablesContext.CreateDefault(res4.DataSource)) { var user = db.Users.Single(x => x.Email.ToLower() == "TestUser@twine-s.com"); } //Check updates are not available.. var res5 = msClient.CheckForUpdates(new CheckForUpdatesRequest() { Version = "100.0.0.0" }).Result; Assert.IsFalse(res5.IsUpdateAvailable); } } }