Added first real test

This commit is contained in:
tidusjar 2016-03-09 11:21:06 +00:00
commit 68850fd8b7
29 changed files with 461 additions and 22 deletions

View file

@ -36,6 +36,8 @@ using Nancy.Diagnostics;
using Nancy.Session;
using Nancy.TinyIoc;
using PlexRequests.Api;
using PlexRequests.Api.Interfaces;
using PlexRequests.Core;
using PlexRequests.Core.SettingModels;
using PlexRequests.Helpers;
@ -73,6 +75,9 @@ namespace PlexRequests.UI
container.Register<IAvailabilityChecker, PlexAvailabilityChecker>();
container.Register<IConfigurationReader, ConfigurationReader>();
container.Register<IIntervals, UpdateInterval>();
container.Register<IPlexApi, PlexApi>();
base.ConfigureRequestContainer(container, context);
}

View file

@ -29,7 +29,7 @@ using System.Linq;
using Nancy;
using Nancy.Responses.Negotiation;
using PlexRequests.Api;
using PlexRequests.Api.Interfaces;
using PlexRequests.Api.Models;
using PlexRequests.Core;
using PlexRequests.Core.SettingModels;
@ -40,24 +40,27 @@ namespace PlexRequests.UI.Modules
// TODO: Add ability to logout
public class UserLoginModule : NancyModule
{
public UserLoginModule(ISettingsService<AuthenticationSettings> auth) : base("userlogin")
public UserLoginModule(ISettingsService<AuthenticationSettings> auth, IPlexApi api) : base("userlogin")
{
AuthService = auth;
Api = api;
Get["/"] = _ => Index();
Post["/"] = x => LoginUser();
}
private ISettingsService<AuthenticationSettings> AuthService { get; set; }
private IPlexApi Api { get; set; }
public Negotiator Index()
{
var settings = AuthService.GetSettings();
return View["Index", settings];
}
private ISettingsService<AuthenticationSettings> AuthService { get; set; }
private Response LoginUser()
{
var authenticated = false;
var api = new PlexApi();
var settings = AuthService.GetSettings();
var username = Request.Form.username.Value;
var password = string.Empty;
@ -69,7 +72,7 @@ namespace PlexRequests.UI.Modules
if (settings.UserAuthentication && settings.UsePassword) // Authenticate with Plex
{
var signedIn = (PlexAuthentication)api.SignIn(username, password);
var signedIn = (PlexAuthentication)Api.SignIn(username, password);
if (signedIn.user?.authentication_token != null)
{
authenticated = CheckIfUserIsInPlexFriends(username, settings.PlexAuthToken);
@ -95,8 +98,7 @@ namespace PlexRequests.UI.Modules
private bool CheckIfUserIsInPlexFriends(string username, string authToken)
{
var api = new PlexApi();
var users = api.GetUsers(authToken);
var users = Api.GetUsers(authToken);
return users.User.Any(x => x.Username == username);
}
}

View file

@ -282,6 +282,14 @@
</ItemGroup>
<ItemGroup />
<ItemGroup>
<ProjectReference Include="..\PlexRequests.Api.Interfaces\PlexRequests.Api.Interfaces.csproj">
<Project>{95834072-A675-415D-AA8F-877C91623810}</Project>
<Name>PlexRequests.Api.Interfaces</Name>
</ProjectReference>
<ProjectReference Include="..\PlexRequests.Api.Models\PlexRequests.Api.Models.csproj">
<Project>{CB37A5F8-6DFC-4554-99D3-A42B502E4591}</Project>
<Name>PlexRequests.Api.Models</Name>
</ProjectReference>
<ProjectReference Include="..\PlexRequests.Api\PlexRequests.Api.csproj">
<Project>{8cb8d235-2674-442d-9c6a-35fcaeeb160d}</Project>
<Name>PlexRequests.Api</Name>

View file

@ -1,3 +1,3 @@
@{
Layout = "Views/Shared/_Layout.cshtml";
Layout = "Shared/_Layout.cshtml";
}