diff --git a/PlexRequests.UI.Tests/PlexRequests.UI.Tests.csproj b/PlexRequests.UI.Tests/PlexRequests.UI.Tests.csproj
index 07171162c..594207c57 100644
--- a/PlexRequests.UI.Tests/PlexRequests.UI.Tests.csproj
+++ b/PlexRequests.UI.Tests/PlexRequests.UI.Tests.csproj
@@ -104,6 +104,10 @@
{95834072-A675-415D-AA8F-877C91623810}
PlexRequests.Api.Interfaces
+
+ {CB37A5F8-6DFC-4554-99D3-A42B502E4591}
+ PlexRequests.Api.Models
+
{DD7DC444-D3BF-4027-8AB9-EFC71F5EC581}
PlexRequests.Core
diff --git a/PlexRequests.UI.Tests/UserLoginModuleTests.cs b/PlexRequests.UI.Tests/UserLoginModuleTests.cs
index 3cab03fc2..1d6603d89 100644
--- a/PlexRequests.UI.Tests/UserLoginModuleTests.cs
+++ b/PlexRequests.UI.Tests/UserLoginModuleTests.cs
@@ -36,6 +36,8 @@ using Newtonsoft.Json;
using NUnit.Framework;
using PlexRequests.Api.Interfaces;
+using PlexRequests.Api.Models;
+using PlexRequests.Api.Models.Tv;
using PlexRequests.Core;
using PlexRequests.Core.SettingModels;
using PlexRequests.UI.Models;
@@ -89,5 +91,205 @@ namespace PlexRequests.UI.Tests
Assert.That(body.Result, Is.EqualTo(true));
}
+
+ [Test]
+ public void LoginWithUsernameSuccessfully()
+ {
+ var expectedSettings = new AuthenticationSettings { UserAuthentication = true, PlexAuthToken = "abc" };
+ var plexFriends = new PlexFriends
+ {
+ User = new[]
+ {
+ new UserFriends
+ {
+ Username = "abc",
+ },
+ }
+ };
+
+ AuthMock.Setup(x => x.GetSettings()).Returns(expectedSettings);
+ PlexMock.Setup(x => x.GetUsers(It.IsAny())).Returns(plexFriends);
+
+ var bootstrapper = new ConfigurableBootstrapper(with =>
+ {
+ with.Module();
+ with.Dependency(AuthMock.Object);
+ with.Dependency(PlexMock.Object);
+ with.RootPathProvider();
+ });
+
+ bootstrapper.WithSession(new Dictionary());
+
+ var browser = new Browser(bootstrapper);
+ // When
+ var result = browser.Post("/userlogin", with =>
+ {
+ with.HttpRequest();
+ with.Header("Accept", "application/json");
+ with.FormValue("Username", "abc");
+ });
+
+ // Then
+ Assert.That(HttpStatusCode.OK, Is.EqualTo(result.StatusCode));
+ Assert.That(result.Context.Request.Session[SessionKeys.UsernameKey], Is.EqualTo("abc"));
+
+ var body = JsonConvert.DeserializeObject(result.Body.AsString());
+ Assert.That(body.Result, Is.EqualTo(true));
+
+ }
+
+ [Test]
+ public void LoginWithUsernameUnSuccessfully()
+ {
+ var expectedSettings = new AuthenticationSettings { UserAuthentication = true, PlexAuthToken = "abc" };
+ var plexFriends = new PlexFriends
+ {
+ User = new[]
+ {
+ new UserFriends
+ {
+ Username = "aaaa",
+ },
+ }
+ };
+
+ AuthMock.Setup(x => x.GetSettings()).Returns(expectedSettings);
+ PlexMock.Setup(x => x.GetUsers(It.IsAny())).Returns(plexFriends);
+
+ var bootstrapper = new ConfigurableBootstrapper(with =>
+ {
+ with.Module();
+ with.Dependency(AuthMock.Object);
+ with.Dependency(PlexMock.Object);
+ with.RootPathProvider();
+ });
+
+ bootstrapper.WithSession(new Dictionary());
+
+ var browser = new Browser(bootstrapper);
+
+ var result = browser.Post("/userlogin", with =>
+ {
+ with.HttpRequest();
+ with.Header("Accept", "application/json");
+ with.FormValue("Username", "abc");
+ });
+
+
+ Assert.That(HttpStatusCode.OK, Is.EqualTo(result.StatusCode));
+ Assert.That(result.Context.Request.Session[SessionKeys.UsernameKey], Is.EqualTo("abc"));
+
+ var body = JsonConvert.DeserializeObject(result.Body.AsString());
+ Assert.That(body.Result, Is.EqualTo(false));
+ Assert.That(body.Message, Is.Not.Empty);
+ }
+
+ [Test]
+ public void LoginWithUsernameAndPasswordSuccessfully()
+ {
+ var expectedSettings = new AuthenticationSettings { UserAuthentication = true, UsePassword = true, PlexAuthToken = "abc" };
+ var plexFriends = new PlexFriends
+ {
+ User = new[]
+ {
+ new UserFriends
+ {
+ Username = "abc",
+ },
+ }
+ };
+ var plexAuth = new PlexAuthentication
+ {
+ user = new User
+ {
+ authentication_token = "abc"
+ }
+ };
+
+ AuthMock.Setup(x => x.GetSettings()).Returns(expectedSettings);
+ PlexMock.Setup(x => x.GetUsers(It.IsAny())).Returns(plexFriends);
+ PlexMock.Setup(x => x.SignIn(It.IsAny(), It.IsAny())).Returns(plexAuth);
+
+ var bootstrapper = new ConfigurableBootstrapper(with =>
+ {
+ with.Module();
+ with.Dependency(AuthMock.Object);
+ with.Dependency(PlexMock.Object);
+ with.RootPathProvider();
+ });
+
+ bootstrapper.WithSession(new Dictionary());
+
+ var browser = new Browser(bootstrapper);
+ // When
+ var result = browser.Post("/userlogin", with =>
+ {
+ with.HttpRequest();
+ with.Header("Accept", "application/json");
+ with.FormValue("Username", "abc");
+ with.FormValue("Password", "abc");
+ });
+
+ // Then
+ Assert.That(HttpStatusCode.OK, Is.EqualTo(result.StatusCode));
+ Assert.That(result.Context.Request.Session[SessionKeys.UsernameKey], Is.EqualTo("abc"));
+
+ var body = JsonConvert.DeserializeObject(result.Body.AsString());
+ Assert.That(body.Result, Is.EqualTo(true));
+
+ }
+
+ [Test]
+ public void LoginWithUsernameAndPasswordUnSuccessfully()
+ {
+ var expectedSettings = new AuthenticationSettings { UserAuthentication = true, UsePassword = true, PlexAuthToken = "abc" };
+ var plexFriends = new PlexFriends
+ {
+ User = new[]
+ {
+ new UserFriends
+ {
+ Username = "abc",
+ },
+ }
+ };
+ var plexAuth = new PlexAuthentication
+ {
+ user = null
+ };
+
+ AuthMock.Setup(x => x.GetSettings()).Returns(expectedSettings);
+ PlexMock.Setup(x => x.GetUsers(It.IsAny())).Returns(plexFriends);
+ PlexMock.Setup(x => x.SignIn(It.IsAny(), It.IsAny())).Returns(plexAuth);
+
+ var bootstrapper = new ConfigurableBootstrapper(with =>
+ {
+ with.Module();
+ with.Dependency(AuthMock.Object);
+ with.Dependency(PlexMock.Object);
+ with.RootPathProvider();
+ });
+
+ bootstrapper.WithSession(new Dictionary());
+
+ var browser = new Browser(bootstrapper);
+ // When
+ var result = browser.Post("/userlogin", with =>
+ {
+ with.HttpRequest();
+ with.Header("Accept", "application/json");
+ with.FormValue("Username", "abc");
+ with.FormValue("Password", "abc");
+ });
+
+ // Then
+ Assert.That(HttpStatusCode.OK, Is.EqualTo(result.StatusCode));
+ Assert.That(result.Context.Request.Session[SessionKeys.UsernameKey], Is.EqualTo("abc"));
+
+ var body = JsonConvert.DeserializeObject(result.Body.AsString());
+ Assert.That(body.Result, Is.EqualTo(false));
+ Assert.That(body.Message, Is.Not.Empty);
+
+ }
}
}
\ No newline at end of file