diff options
Diffstat (limited to 'Software/Visual_Studio/Tango.UnitTesting/MachineService')
| -rw-r--r-- | Software/Visual_Studio/Tango.UnitTesting/MachineService/MachineStudio_Controller_TST.cs | 78 | ||||
| -rw-r--r-- | Software/Visual_Studio/Tango.UnitTesting/MachineService/PPC_Controller_TST.cs | 95 |
2 files changed, 173 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.UnitTesting/MachineService/MachineStudio_Controller_TST.cs b/Software/Visual_Studio/Tango.UnitTesting/MachineService/MachineStudio_Controller_TST.cs new file mode 100644 index 000000000..8a126df2e --- /dev/null +++ b/Software/Visual_Studio/Tango.UnitTesting/MachineService/MachineStudio_Controller_TST.cs @@ -0,0 +1,78 @@ +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<LoginRequest, LoginResponse>($"{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<CheckForUpdatesRequest, CheckForUpdatesResponse>($"{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<AuthenticationException>(() => + { + 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); + } + } +} diff --git a/Software/Visual_Studio/Tango.UnitTesting/MachineService/PPC_Controller_TST.cs b/Software/Visual_Studio/Tango.UnitTesting/MachineService/PPC_Controller_TST.cs new file mode 100644 index 000000000..23ab74f3b --- /dev/null +++ b/Software/Visual_Studio/Tango.UnitTesting/MachineService/PPC_Controller_TST.cs @@ -0,0 +1,95 @@ +using System; +using System.Security.Authentication; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Tango.BL; +using Tango.Transport.Web; +using System.Linq; +using Tango.PPC.Common.Web; +using Tango.Core.IO; + +namespace Tango.UnitTesting.Web +{ + [TestClass] + [TestCategory("Machine Service - PPC")] + public class PPC_Controller_TST + { + private const string address = "http://localhost:51581"; + + [TestMethod] + public void Login_and_setup() + { + //Now check the dedicated machine studio client. + PPCWebClient client = new PPCWebClient(address, null); + + //Should throw an exception without login first (no token specified..) + Assert.ThrowsException<AuthenticationException>(() => + { + var res1 = client.MachineSetup(new MachineSetupRequest() + { + + }).GetAwaiter().GetResult(); + }); + + //Perform a login with user mode. + var res2 = client.Login(new LoginRequest() + { + Mode = LoginMode.User, + Email = "TestUser@twine-s.com", + Password = "ASJH_asdjkl1234", + }).Result; + + //Should throw exception about serial number not found. + Assert.ThrowsException<AuthenticationException>(() => + { + var res3 = client.Login(new LoginRequest() + { + Mode = LoginMode.Machine, + SerialNumber = "NOT_EXISTING_SERIAL_NUMBER", + }).GetAwaiter().GetResult(); + }); + + //Perform a login with machine mode. + var res4 = client.Login(new LoginRequest() + { + Mode = LoginMode.Machine, + SerialNumber = "0003", + }).Result; + + //Should return setup information + var res5 = client.MachineSetup(new MachineSetupRequest() + { + SerialNumber = "0003", + }).GetAwaiter().GetResult(); + + //Now get DEV data source using the machine studio client in order to validate the setup information. + MachineStudio.Common.Web.MachineStudioWebClient msClient = new MachineStudio.Common.Web.MachineStudioWebClient(address, null); + var res6 = msClient.Login(new MachineStudio.Common.Web.LoginRequest() + { + Email = "TestUser@twine-s.com", + Password = "ASJH_asdjkl1234", + }).Result; + + var dataSource = res6.DataSource; + + using (ObservablesContext db = ObservablesContext.CreateDefault(dataSource)) + { + var machine = db.Machines.Single(x => x.SerialNumber == "0003"); + + Assert.AreEqual(res5.IsDemo, machine.IsDemo); + Assert.AreEqual(res5.OSKey, machine.OsKey); + Assert.AreEqual(res5.SetupActivation, machine.SetupActivation); + Assert.AreEqual(res5.SetupFirmware, machine.SetupFirmware); + Assert.AreEqual(res5.SetupFPGA, machine.SetupFpga); + Assert.AreEqual(res5.SetupRemoteAssistance, machine.SetupRemoteAssistance); + Assert.AreEqual(res5.SetupUWF, machine.SetupUwf); + } + + + var tempFile = TemporaryManager.Default.CreateFile(); + StorageBlobDownloader downloader = new StorageBlobDownloader(res5.BlobAddress, tempFile); + downloader.Download().Wait(); + + tempFile.Delete(); + } + } +} |
