using NUnit.Framework; using TINK.Model.User; using TINK.Model.Connector; using TINK.Model.User.Account; using System.Collections.Generic; using TINK.Repository; using static TINK.Repository.CopriCallsMemory; using TestFramework.Model.User.Account; using System; using System.Threading.Tasks; namespace TestTINKLib { [TestFixture] public class TestUser { [Test] public void TestConstruct_NotLoggedIn_NoUsername() { var storeMock = new StoreMock(); // Account without user name, password and cookie var l_oUser = new User( storeMock, storeMock.Load().Result, "HwId1000000000000"); Assert.IsFalse(l_oUser.IsLoggedIn); Assert.IsNull(l_oUser.Mail); Assert.IsNull(l_oUser.Password); Assert.IsNull(l_oUser.SessionCookie); } [Test] public void TestConstruct_NotLoggedIn_NoCookie() { var storeMock = new StoreMock(new Account("John", "123", true, null, new List())); // Account without session cookie. var user = new User( storeMock, storeMock.Load().Result, "123456789"); Assert.IsFalse(user.IsLoggedIn); Assert.AreEqual("John", user.Mail); Assert.AreEqual("123", user.Password); Assert.IsNull(user.SessionCookie); } [Test] public void TestConstruct_LoggedIn() { var l_oStoreMock = new StoreMock(new Account("John", "123", false, "9512", new List { "TINK" })); var l_oUser = new User( l_oStoreMock, l_oStoreMock.Load().Result, "123456789"); Assert.IsTrue(l_oUser.IsLoggedIn, "If store does not hold cookie user is considered to not be logged in"); Assert.AreEqual("John", l_oUser.Mail); Assert.AreEqual("123", l_oUser.Password); Assert.AreEqual("9512", l_oUser.SessionCookie); } /// Test logging in. [Test] public async Task TestSetCredentials() { var l_oConnector = new ConnectorCache( new AppContextInfo("MyMerchId", "MyApp", new Version(1, 2)), string.Empty, string.Empty, new CopriCallsMemory(SampleSets.Set2, 1)); var l_oStoreMock = new StoreMock(); // Account without user name, password and cookie var l_oUser = new User( l_oStoreMock, l_oStoreMock.Load().Result, "HwId1000000000000"); Assert.IsFalse(l_oUser.IsLoggedIn); Assert.IsNull(l_oUser.Mail); IAccount l_oAccount = l_oConnector.Command.DoLogin( LoginSessionCopriInfo.JavaministerHardwareNr1.Mail, LoginSessionCopriInfo.JavaministerHardwareNr1.Pwd, l_oUser.DeviceId).Result; await l_oUser.Login(l_oAccount); Assert.IsTrue(l_oUser.IsLoggedIn); Assert.AreEqual(LoginSessionCopriInfo.JavaministerHardwareNr1.Mail, l_oUser.Mail); } } }