using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media.Imaging;
using Tango.BL.Entities;
using Tango.BL.Enumerations;
using Tango.MachineStudio.Common;
using Tango.MachineStudio.DB.Views;
namespace Tango.MachineStudio.DB
{
///
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;
using System.Configuration;
namespace Tango.UnitTesting.MachineService
{
[TestClass]
[TestCategory("Machine Service - Machine Studio")]
public class MachineStudio_Controller_TST
{
private const string address = "http://localhost:1111";
[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 = "1234";
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);
}
[TestMethod]
public void Login_with_new_user()
{
//LoadConfiguration();
Tango.MachineService.Controllers.MachineStudioController controller = new Tango.MachineService.Controllers.MachineStudioController();
controller.Login(new LoginRequest()
{
Email = "Mati@twine-s.com",
Password = "Futo8985",
});
}
//private void LoadConfiguration()
//{
// ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
// fileMap.ExeConfigFilename = @"web.config";
// Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
// foreach (var item in config.AppSettings.Settings.OfType<KeyValueConfigurationElement>())
// {
// ConfigurationManager.AppSettings.Add(item.Key, item.Value);
// }
//}
}
}