public void AddOrUpdateState_StoresValidState() { var cookies = new HttpCookieCollection(); var handler = new LoginHandler(); var rc = new RegisteredClient { DisplayName = "test-name", Identity = "test-identity", Photo = "test-photo", RegistrationId = "test-reg-id" }; var mockResponse = new Mock<HttpResponseBase>(); mockResponse.Setup( a => a.Cookies ) .Returns( cookies ); var mockContext = new Mock<HttpContextBase>(); mockContext.Setup( a => a.Response ) .Returns( mockResponse.Object ); handler.AddOrUpdateState( rc, mockContext.Object ); var cookie = cookies[ "gemfire.state" ]; var state = JsonConvert.DeserializeObject<RegisteredClient>( cookie.Value ); var decryptedIdentity = handler.DecryptIdentity( state.Identity ); Assert.AreEqual( rc.Identity, decryptedIdentity ); Assert.AreEqual( rc.DisplayName, state.DisplayName ); Assert.AreEqual( rc.Photo, state.Photo ); Assert.AreEqual( rc.RegistrationId, state.RegistrationId ); }
public void AddOrUpdateState_AddsStateCookie() { var cookies = new HttpCookieCollection(); var handler = new LoginHandler(); var rc = new RegisteredClient { DisplayName = "test-name", Identity = "test-identity", Photo = "test-photo", RegistrationId = "test-reg-id" }; var mockResponse = new Mock <HttpResponseBase>(); mockResponse.Setup(a => a.Cookies) .Returns(cookies); var mockContext = new Mock <HttpContextBase>(); mockContext.Setup(a => a.Response) .Returns(mockResponse.Object); handler.AddOrUpdateState(rc, mockContext.Object); Assert.IsNotNull(cookies["gemfire.state"]); }
public void UpdateRegisteredClient(RegisteredClient o) { if (o == null) { throw new ArgumentNullException(nameof(o)); } if (string.IsNullOrEmpty(o.RegisteredClientId)) { throw new ArgumentNullException(nameof(o.RegisteredClientId)); } if (string.IsNullOrEmpty(o.UpdateUser)) { throw new ArgumentNullException(nameof(o.UpdateUser)); } if (o.UpdateDate == null) { throw new ArgumentNullException(nameof(o.UpdateDate)); } var client = _registeredClients.FirstOrDefault(c => c.RegisteredClientId == o.RegisteredClientId); o.CreationDate = client.CreationDate; o.CreationUser = client.CreationUser; _registeredClients.Remove(client); _registeredClients.Add(o); SaveData(); }
public void AddOrUpdateState_StoresValidState() { var cookies = new HttpCookieCollection(); var handler = new LoginHandler(); var rc = new RegisteredClient { DisplayName = "test-name", Identity = "test-identity", Photo = "test-photo", RegistrationId = "test-reg-id" }; var mockResponse = new Mock <HttpResponseBase>(); mockResponse.Setup(a => a.Cookies) .Returns(cookies); var mockContext = new Mock <HttpContextBase>(); mockContext.Setup(a => a.Response) .Returns(mockResponse.Object); handler.AddOrUpdateState(rc, mockContext.Object); var cookie = cookies["gemfire.state"]; var state = JsonConvert.DeserializeObject <RegisteredClient>(cookie.Value); var decryptedIdentity = handler.DecryptIdentity(state.Identity); Assert.AreEqual(rc.Identity, decryptedIdentity); Assert.AreEqual(rc.DisplayName, state.DisplayName); Assert.AreEqual(rc.Photo, state.Photo); Assert.AreEqual(rc.RegistrationId, state.RegistrationId); }
public async Task <IActionResult> Edit(string id, [Bind("ClientId,ClientName,ClientDomain,ClientIcon,RedirectUrl,CreatedAt,UpdatedAt,Status")] RegisteredClient registeredClient) { if (id != registeredClient.ClientId) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(registeredClient); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!RegisteredClientExists(registeredClient.ClientId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(registeredClient)); }
public static void SetState(RegisteredClient rc, HttpResponseBase response) { // Save the cookie state Byte[] identity = Encoding.UTF8.GetBytes(rc.Identity); Byte[] encrypted = MachineKey.Protect(identity, "TranMini.Identity"); var temp = new RegisteredClient(rc.RegistrationID, HttpServerUtility.UrlTokenEncode(encrypted), rc.DisplayName); var state = JsonConvert.SerializeObject(temp); response.Cookies.Add(new HttpCookie("tranmini.state", state)); }
public async Task <IActionResult> Create([Bind("ClientId,ClientName,ClientDomain,ClientIcon,RedirectUrl,CreatedAt,UpdatedAt,Status")] RegisteredClient registeredClient) { if (ModelState.IsValid) { _context.Add(registeredClient); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(registeredClient)); }
public async Task <IActionResult> Create([Bind("ClientName,ClientDomain,ClientIcon,RedirectUrl")] RegisteredClient registeredClient) { if (ModelState.IsValid) { registeredClient.ClientId = Guid.NewGuid().ToString(); _context.Add(registeredClient); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(registeredClient)); }
public static void SetState(RegisteredClient rc, IOwinResponse response) { // Save the cookie state Byte[] identity = Encoding.UTF8.GetBytes(rc.Identity); Byte[] encrypted = MachineKey.Protect(identity, "ShootR.Identity"); var temp = new RegisteredClient(rc.RegistrationID, HttpServerUtility.UrlTokenEncode(encrypted), rc.DisplayName, rc.Photo); var state = JsonConvert.SerializeObject(temp); response.Cookies.Append("shootr.state", state, new CookieOptions { Expires = DateTime.Now.AddDays(30) }); }
public ActionResult Index() { RegisteredClient rc = new RegisteredClient(); rc.RegistrationID = null; rc.DisplayName = "Player " + GuestID++; rc.Identity = "Player" + Guid.NewGuid().ToString(); GameServer.Game.Instance.RegistrationHandler.Register(rc); TranMiniAuthenticationProvider.SetState(rc, Response); return(View()); }
public string CreateClient(RegisteredClient client) { var rand = new Random(); client.RegisteredClientId = GenerateClientId(rand.Next(0, 1000000)); while (_dataService.GetRegisteredClient(client.RegisteredClientId) != null) { client.RegisteredClientId = GenerateClientId(rand.Next(0, 1000000)); } _dataService.CreateRegisteredClient(client); return(client.RegisteredClientId); }
public void Register_RecyclesExisting() { var handler = new RegistrationHandler(); var rc = new RegisteredClient { DisplayName = "test-name", Identity = "test-identity", Photo = "test-photo" }; var registered = handler.Register( rc ); var exists = handler.RegistrationExists( registered.RegistrationId ); Assert.IsTrue( exists ); Assert.AreEqual( rc.DisplayName, registered.DisplayName ); Assert.AreEqual( rc.Identity, registered.Identity ); Assert.AreEqual( rc.Photo, registered.Photo ); }
public void Register_RecyclesExisting() { var handler = new RegistrationHandler(); var rc = new RegisteredClient { DisplayName = "test-name", Identity = "test-identity", Photo = "test-photo" }; var registered = handler.Register(rc); var exists = handler.RegistrationExists(registered.RegistrationId); Assert.IsTrue(exists); Assert.AreEqual(rc.DisplayName, registered.DisplayName); Assert.AreEqual(rc.Identity, registered.Identity); Assert.AreEqual(rc.Photo, registered.Photo); }
public override void ResponseSignIn(CookieResponseSignInContext context) { var principle = new ClaimsPrincipal(context.Identity); var pictureClaim = principle.FindFirst("profilePicture"); var idClaim = principle.FindFirst(ClaimTypes.NameIdentifier); var nameClaim = principle.FindFirst(ClaimTypes.Name); var emailClaim = principle.FindFirst(ClaimTypes.Email); var id = idClaim == null ? Guid.NewGuid().ToString() : idClaim.Value; var name = nameClaim == null ? "unknown" : System.Net.WebUtility.HtmlEncode(nameClaim.Value); var photo = pictureClaim != null ? pictureClaim.Value : GetPhotoUrl(emailClaim == null ? "" : emailClaim.Value); var rc = new RegisteredClient() { Identity = id, DisplayName = name, Photo = photo }; SetState(rc, context.Response); }
public override void ResponseSignIn(CookieResponseSignInContext context) { var principle = new ClaimsPrincipal(context.Identity); var pictureClaim = principle.FindFirst("profilePicture"); var idClaim = principle.FindFirst(ClaimTypes.NameIdentifier); var nameClaim = principle.FindFirst(ClaimTypes.Name); var emailClaim = principle.FindFirst(ClaimTypes.Email); var id = idClaim == null?Guid.NewGuid().ToString() : idClaim.Value; var name = nameClaim == null ? "unknown" : System.Net.WebUtility.HtmlEncode(nameClaim.Value); var photo = pictureClaim != null ? pictureClaim.Value : GetPhotoUrl(emailClaim == null ? "" : emailClaim.Value); var rc = new RegisteredClient() { Identity = id, DisplayName = name, Photo = photo }; SetState(rc, context.Response); }
public void InitializeClient_ReassignsConnectionIfUserFound() { var connection = "123"; var rc = new RegisteredClient { DisplayName = "name", Identity = "id", Photo = "photo", RegistrationId = "reg-id" }; #region RegistrationHandler var registrationHandler = new Mock <IRegistrationHandler>(); registrationHandler.Setup(a => a.RegistrationExists(It.IsAny <string>())) .Returns(true); registrationHandler.Setup(a => a.RemoveRegistration(It.IsAny <string>())) .Returns(rc); #endregion #region UserHandler var userHandler = new Mock <IUserHandler>(); userHandler.Setup(a => a.UserExists(It.IsAny <string>())) .Returns(false); userHandler.Setup(a => a.FindUserByIdentity(rc.Identity)) .Returns(new User(connection, rc)); #endregion var hub = this.GetHub(connection, registrationHandler: registrationHandler, userHandler: userHandler); var result = hub.InitializeClient("reg"); userHandler.Verify(a => a.ReassignUser(It.IsAny <string>(), It.IsAny <User>())); }
public void CreateRegisteredClient(RegisteredClient o) { if (o == null) { throw new ArgumentNullException(nameof(o)); } if (string.IsNullOrEmpty(o.RegisteredClientId)) { throw new ArgumentNullException(nameof(o.RegisteredClientId)); } if (string.IsNullOrEmpty(o.CreationUser)) { throw new ArgumentNullException(nameof(o.CreationUser)); } if (_registeredClients.Any(c => c.RegisteredClientId == o.RegisteredClientId)) { throw new ArgumentException($"registered client with ID '{o.RegisteredClientId}' already exists!"); } _registeredClients.Add(o); SaveData(); }
public void AddOrUpdateState_AddsStateCookie() { var cookies = new HttpCookieCollection(); var handler = new LoginHandler(); var rc = new RegisteredClient { DisplayName = "test-name", Identity = "test-identity", Photo = "test-photo", RegistrationId = "test-reg-id" }; var mockResponse = new Mock<HttpResponseBase>(); mockResponse.Setup( a => a.Cookies ) .Returns( cookies ); var mockContext = new Mock<HttpContextBase>(); mockContext.Setup( a => a.Response ) .Returns( mockResponse.Object ); handler.AddOrUpdateState( rc, mockContext.Object ); Assert.IsNotNull( cookies[ "gemfire.state" ] ); }
public void InitializeClient_AddsUserToTheirGameGroups() { var connection = "123"; var userid = "user-id"; var rc = new RegisteredClient { DisplayName = "name", Identity = "id", Photo = "photo", RegistrationId = "reg-id" }; var userGame = new Game( "name", "creator" ) { Id = "game-id", Players = new List<string>() { userid } }; var addedGroups = new List<string>(); #region RegistrationHandler var registration = new Mock<IRegistrationHandler>(); registration.Setup( a => a.RegistrationExists( It.IsAny<string>() ) ) .Returns( true ); registration.Setup( a => a.RemoveRegistration( It.IsAny<string>() ) ) .Returns( rc ); #endregion #region UserHandler var user = new Mock<IUserHandler>(); user.Setup( a => a.UserExists( It.IsAny<string>() ) ) .Returns( false ); user.Setup( a => a.FindUserByIdentity( It.IsAny<string>() ) ) .Returns( new User( connection, rc ) { Id = userid } ); #endregion #region GameHandler var game = new Mock<IGameHandler>(); game.Setup( a => a.GetGames() ) .Returns( new List<Game>() { userGame } ); #endregion #region GroupManager var groups = new Mock<IGroupManager>(); groups.Setup( a => a.Add( It.IsAny<string>(), It.IsAny<string>() ) ) .Callback<string, string>( ( c, g ) => addedGroups.Add( g ) ); #endregion var hub = this.GetHub( connection, groupManager: groups, registrationHandler: registration, userHandler: user, gameHandler: game ); var result = hub.InitializeClient( "reg" ); Assert.IsTrue( addedGroups.Any( a => a == userGame.GroupName ) ); }
public void InitializeClient_SavesUser() { var connection = "123"; var rc = new RegisteredClient { DisplayName = "name", Identity = "id", Photo = "photo", RegistrationId = "reg-id" }; #region RegistrationHandler var registrationHandler = new Mock<IRegistrationHandler>(); registrationHandler.Setup( a => a.RegistrationExists( It.IsAny<string>() ) ) .Returns( true ); registrationHandler.Setup( a => a.RemoveRegistration( It.IsAny<string>() ) ) .Returns( rc ); #endregion #region UserHandler var userHandler = new Mock<IUserHandler>(); userHandler.Setup( a => a.UserExists( It.IsAny<string>() ) ) .Returns( false ); #endregion var hub = this.GetHub( connection, registrationHandler: registrationHandler, userHandler: userHandler ); var result = hub.InitializeClient( "reg" ); userHandler.Verify( a => a.AddUser( It.IsAny<User>() ) ); }
public void InitializeClient_ReturnsAvailableScenarios() { var connection = "123"; var userid = "user-id"; var rc = new RegisteredClient { DisplayName = "name", Identity = "id", Photo = "photo", RegistrationId = "reg-id" }; var userGame = new Game( "name", "creator" ) { Id = "game-id", Players = new List<string>() { userid } }; var scenarioNames = new List<string>() { "s1", "s2" }; #region RegistrationHandler var registration = new Mock<IRegistrationHandler>(); registration.Setup( a => a.RegistrationExists( It.IsAny<string>() ) ) .Returns( true ); registration.Setup( a => a.RemoveRegistration( It.IsAny<string>() ) ) .Returns( rc ); #endregion #region UserHandler var user = new Mock<IUserHandler>(); user.Setup( a => a.UserExists( It.IsAny<string>() ) ) .Returns( false ); user.Setup( a => a.FindUserByIdentity( It.IsAny<string>() ) ) .Returns( new User( connection, rc ) { Id = userid } ); #endregion #region GameHandler var game = new Mock<IGameHandler>(); game.Setup( a => a.GetGames() ) .Returns( new List<Game>() { userGame } ); #endregion #region ScenarioHandler var scenarioHandler = new Mock<IScenarioHandler>(); scenarioHandler.Setup( a => a.GetScenarioNames() ) .Returns( scenarioNames ); #endregion var hub = this.GetHub( connection, registrationHandler: registration, userHandler: user, gameHandler: game, scenarioHandler: scenarioHandler ); var result = hub.InitializeClient( "reg" ); CollectionAssert.AreEquivalent( scenarioNames, result.Scenarios.ToList() ); }
public void InitializeClient_ReturnsAvailableScenarios() { var connection = "123"; var userid = "user-id"; var rc = new RegisteredClient { DisplayName = "name", Identity = "id", Photo = "photo", RegistrationId = "reg-id" }; var userGame = new Game("name", "creator") { Id = "game-id", Players = new List <string>() { userid } }; var scenarioNames = new List <string>() { "s1", "s2" }; #region RegistrationHandler var registration = new Mock <IRegistrationHandler>(); registration.Setup(a => a.RegistrationExists(It.IsAny <string>())) .Returns(true); registration.Setup(a => a.RemoveRegistration(It.IsAny <string>())) .Returns(rc); #endregion #region UserHandler var user = new Mock <IUserHandler>(); user.Setup(a => a.UserExists(It.IsAny <string>())) .Returns(false); user.Setup(a => a.FindUserByIdentity(It.IsAny <string>())) .Returns(new User(connection, rc) { Id = userid }); #endregion #region GameHandler var game = new Mock <IGameHandler>(); game.Setup(a => a.GetGames()) .Returns(new List <Game>() { userGame }); #endregion #region ScenarioHandler var scenarioHandler = new Mock <IScenarioHandler>(); scenarioHandler.Setup(a => a.GetScenarioNames()) .Returns(scenarioNames); #endregion var hub = this.GetHub(connection, registrationHandler: registration, userHandler: user, gameHandler: game, scenarioHandler: scenarioHandler); var result = hub.InitializeClient("reg"); CollectionAssert.AreEquivalent(scenarioNames, result.Scenarios.ToList()); }
public void InitializeClient_AddsUserToTheirGameGroups() { var connection = "123"; var userid = "user-id"; var rc = new RegisteredClient { DisplayName = "name", Identity = "id", Photo = "photo", RegistrationId = "reg-id" }; var userGame = new Game("name", "creator") { Id = "game-id", Players = new List <string>() { userid } }; var addedGroups = new List <string>(); #region RegistrationHandler var registration = new Mock <IRegistrationHandler>(); registration.Setup(a => a.RegistrationExists(It.IsAny <string>())) .Returns(true); registration.Setup(a => a.RemoveRegistration(It.IsAny <string>())) .Returns(rc); #endregion #region UserHandler var user = new Mock <IUserHandler>(); user.Setup(a => a.UserExists(It.IsAny <string>())) .Returns(false); user.Setup(a => a.FindUserByIdentity(It.IsAny <string>())) .Returns(new User(connection, rc) { Id = userid }); #endregion #region GameHandler var game = new Mock <IGameHandler>(); game.Setup(a => a.GetGames()) .Returns(new List <Game>() { userGame }); #endregion #region GroupManager var groups = new Mock <IGroupManager>(); groups.Setup(a => a.Add(It.IsAny <string>(), It.IsAny <string>())) .Callback <string, string>((c, g) => addedGroups.Add(g)); #endregion var hub = this.GetHub(connection, groupManager: groups, registrationHandler: registration, userHandler: user, gameHandler: game); var result = hub.InitializeClient("reg"); Assert.IsTrue(addedGroups.Any(a => a == userGame.GroupName)); }