using NUnit.Framework; using System; using TINK.Model; using TINK.Model.Connector; using TINK.Repository; using TINK.Model.Services.CopriApi.ServerUris; using static TINK.Repository.CopriCallsMemory; using TINK.Services; using NSubstitute; using TINK.Model.Services.Geolocation; using TINK.Services.BluetoothLock; using TINK.Model.Device; using TINK.Model.User.Account; using Plugin.Permissions.Abstractions; using System.Threading.Tasks; using System.Collections.Generic; namespace TestTINKLib.Fixtures.UseCases.Logout { [TestFixture] public class TestTinkApp { [Test] public void Logout() { var accountStore = Substitute.For(); var locksService = Substitute.For(); var device = Substitute.For(); var specialFolder = Substitute.For(); var permissions = Substitute.For(); var account = Substitute.For(); accountStore.Load().Returns(account); account.Mail.Returns("javaminister@gmail.com"); account.Pwd.Returns("javaminister"); account.SessionCookie.Returns("4da3044c8657a04ba60e2eaa753bc51a"); account.Group.Returns(new List { "TINK" }); // No user logged in is initial state to verify. var l_oTinkApp = new TinkApp( new TINK.Model.Settings.Settings( activeLockService: locksService.GetType().FullName, activeGeolocationService: "NotRelevantActiveGeoloactionServiceName", activeUri: new Uri(CopriServerUriList.TINK_DEVEL)), accountStore, (isConnected, uri, sessionCookie, mail, expiresAfter) => string.IsNullOrEmpty(sessionCookie) ? new ConnectorCache(sessionCookie, mail, new CopriCallsMemory(SampleSets.Set2, 1)) : new ConnectorCache(sessionCookie, mail, new CopriCallsMemory(SampleSets.Set2, 1, sessionCookie)), Substitute.For>(), locksService, device, specialFolder, null, // Cipher permissions, isConnectedFunc: () => true, currentVersion: new Version(3, 2, 0, 115), lastVersion: new Version(3, 0, 173)); // Current app version. Must be larger or equal 3.0.173 to Assert.IsTrue(l_oTinkApp.ActiveUser.IsLoggedIn); Assert.AreEqual(13, l_oTinkApp.GetConnector(true).Query.GetBikesAsync().Result.Response.Count); Assert.AreEqual(2, l_oTinkApp.GetConnector(true).Query.GetBikesOccupiedAsync().Result.Response.Count); Assert.AreEqual("4da3044c8657a04ba60e2eaa753bc51a", l_oTinkApp.GetConnector(true).Command.SessionCookie); // Log user out. l_oTinkApp.GetConnector(true).Command.DoLogout().Wait(); l_oTinkApp.ActiveUser.Logout(); Assert.IsFalse(l_oTinkApp.ActiveUser.IsLoggedIn); Assert.AreEqual(11, l_oTinkApp.GetConnector(true).Query.GetBikesAsync().Result.Response.Count); Assert.AreEqual(0, l_oTinkApp.GetConnector(true).Query.GetBikesOccupiedAsync().Result.Response.Count); Assert.IsNull(l_oTinkApp.GetConnector(true).Command.SessionCookie); } } }