public void CreateUserGeneratedSecurityPair_ReadAndDeleteIt_SecurityPairShouldGetDeleted() { ISecurityKeysApplicationService registrationService = (ISecurityKeysApplicationService)_applicationContext["SecurityKeysApplicationService"]; var systemGeneratedKey = registrationService.CreateSystemGeneratedKey(1); List <string> securityKeyPermissions = new List <string>(); IList <Permission> permissions = _permissionRepository.GetAllPermissions(); for (int i = 0; i < permissions.Count; i++) { securityKeyPermissions.Add(permissions[i].PermissionId); } CreateUserGeneratedSecurityKeyPair command = new CreateUserGeneratedSecurityKeyPair(securityKeyPermissions, DateTime.Today.AddDays(1).ToString(), DateTime.Today.AddDays(-2).ToString(), DateTime.Today.AddDays(-1).ToString(), true, true, true, "123"); var keys = registrationService.CreateUserGeneratedKey(command, systemGeneratedKey.Item1.Value); registrationService.DeleteSecurityKeyPair("123", systemGeneratedKey.Item1.Value); var getKeyPair = _securityKeysRepository.GetByKeyDescriptionAndUserId("123", 1); Assert.Null(getKeyPair); var getKeyPair1 = _securityKeysRepository.GetByApiKey(keys.ApiKey); Assert.Null(getKeyPair1); }
public void UpdateUsergeneratedSystemKey_IfNoPermissionIsAssigned_InvalidOperationExceptionWillBeThrown() { UserValidationEssentials essentials = AccessControlUtility.RegisterAndLogin("user", "*****@*****.**", "123", _applicationContext); SecurityKeyPairController securityKeyPairController = _applicationContext["SecurityKeyPairController"] as SecurityKeyPairController; IPermissionRepository permissionRepository = _applicationContext["PermissionRespository"] as IPermissionRepository; IList <Permission> permissions = permissionRepository.GetAllPermissions(); List <string> securityKeyPermissions = new List <string>(); for (int i = 0; i < permissions.Count; i++) { securityKeyPermissions.Add(permissions[i].PermissionId); } securityKeyPairController.Request = new HttpRequestMessage(HttpMethod.Post, ""); securityKeyPairController.Request.Headers.Add("Auth", essentials.ApiKey); CreateUserGeneratedSecurityKeyPair command = new CreateUserGeneratedSecurityKeyPair(securityKeyPermissions, "", "", "", false, false, false, "#1"); IHttpActionResult httpActionResult = securityKeyPairController.CreateSecurityKey(command); OkNegotiatedContentResult <SecurityKeyPair> result = (OkNegotiatedContentResult <SecurityKeyPair>)httpActionResult; Assert.IsNotNullOrEmpty(result.Content.ApiKey); Assert.IsNotNullOrEmpty(result.Content.SecretKey); httpActionResult = securityKeyPairController.GetUserSecurityKeys(); OkNegotiatedContentResult <object> result1 = (OkNegotiatedContentResult <object>)httpActionResult; List <object> objectPairs = result1.Content as List <object>; Assert.IsNotNull(objectPairs); List <SecurityKeyPairList> pairs = new List <SecurityKeyPairList>(); foreach (object objectPair in objectPairs) { pairs.Add(objectPair as SecurityKeyPairList); } Assert.AreEqual(pairs.Count, 1); Assert.AreEqual(pairs[0].KeyDescription, "#1"); Assert.IsNull(pairs[0].ExpirationDate); httpActionResult = securityKeyPairController.GetSecurityKeyDetail("#1"); OkNegotiatedContentResult <SecurityKeyRepresentation> securityKey = (OkNegotiatedContentResult <SecurityKeyRepresentation>)httpActionResult; Assert.AreEqual(securityKey.Content.KeyDescritpion, "#1"); Assert.AreEqual(securityKey.Content.EnableEndDate, false); Assert.AreEqual(securityKey.Content.EnableExpirationDate, false); Assert.AreEqual(securityKey.Content.EnableStartDate, false); List <SecurityKeyPermissionsRepresentation> permissionsRepresentations = new List <SecurityKeyPermissionsRepresentation>(); for (int i = 0; i < securityKeyPermissions.Count; i++) { permissionsRepresentations.Add(new SecurityKeyPermissionsRepresentation(false, new Permission(securityKeyPermissions[i], ""))); } UpdateUserGeneratedSecurityKeyPair updateKeyPair = new UpdateUserGeneratedSecurityKeyPair(securityKey.Content.ApiKey, "#2", true, false, false, "", DateTime.Today.AddDays(-2).ToString(), permissionsRepresentations.ToArray(), ""); httpActionResult = securityKeyPairController.UpdateSecurityKey(updateKeyPair); BadRequestErrorMessageResult errorMessage = (BadRequestErrorMessageResult)httpActionResult; Assert.AreEqual(errorMessage.Message, "Please assign atleast one permission."); }
public void CreateUserGeneratedSecurityPair_IfNoPermissionIsAssigned_ArgumentNullExceptionShouldBeRaised() { ISecurityKeysApplicationService registrationService = (ISecurityKeysApplicationService)_applicationContext["SecurityKeysApplicationService"]; var systemGeneratedKey = registrationService.CreateSystemGeneratedKey(1); List <string> securityKeyPermissions = new List <string>(); CreateUserGeneratedSecurityKeyPair command = new CreateUserGeneratedSecurityKeyPair(securityKeyPermissions, DateTime.Today.AddDays(1).ToString(), DateTime.Today.AddDays(-2).ToString(), DateTime.Today.AddDays(-1).ToString(), true, true, true, "123"); var keys = registrationService.CreateUserGeneratedKey(command, systemGeneratedKey.Item1.Value); }
public void UpdateUserGeneratedSecurityPair_UpdatePermissionsAndSomeDescription_VerifyKeyPairIsReturnedAndPersistedSuccessfully() { ISecurityKeysApplicationService registrationService = (ISecurityKeysApplicationService)_applicationContext["SecurityKeysApplicationService"]; var systemGeneratedKey = registrationService.CreateSystemGeneratedKey(1); List <string> securityKeyPermissions = new List <string>(); IList <Permission> permissions = _permissionRepository.GetAllPermissions(); for (int i = 0; i < permissions.Count; i++) { securityKeyPermissions.Add(permissions[i].PermissionId); } CreateUserGeneratedSecurityKeyPair command = new CreateUserGeneratedSecurityKeyPair(securityKeyPermissions, DateTime.Today.AddDays(1).ToString(), DateTime.Today.AddDays(-2).ToString(), DateTime.Today.AddDays(-1).ToString(), true, true, true, "123"); var keys = registrationService.CreateUserGeneratedKey(command, systemGeneratedKey.Item1.Value); List <SecurityKeyPermissionsRepresentation> securityKeyPermissions2 = new List <SecurityKeyPermissionsRepresentation>(); for (int i = 0; i < permissions.Count; i++) { if (i % 2 == 0) { securityKeyPermissions2.Add(new SecurityKeyPermissionsRepresentation(false, permissions[i])); } else { securityKeyPermissions2.Add(new SecurityKeyPermissionsRepresentation(true, permissions[i])); } } UpdateUserGeneratedSecurityKeyPair update = new UpdateUserGeneratedSecurityKeyPair(keys.ApiKey, "456", false, false, true, "", "", securityKeyPermissions2.ToArray(), DateTime.Today.AddDays(3).ToString()); registrationService.UpdateSecurityKeyPair(update, keys.ApiKey); Assert.NotNull(keys); Assert.IsNotNullOrEmpty(keys.ApiKey); Assert.IsNotNullOrEmpty(keys.SecretKey); SecurityKeysPair persistedKeysPair = _securityKeysRepository.GetByApiKey(keys.ApiKey); Assert.NotNull(persistedKeysPair); Assert.AreEqual(persistedKeysPair.UserId, 1); Assert.AreEqual(persistedKeysPair.SystemGenerated, false); Assert.AreEqual(persistedKeysPair.ApiKey, keys.ApiKey); Assert.AreEqual(persistedKeysPair.SecretKey, keys.SecretKey); Assert.AreEqual(persistedKeysPair.KeyDescription, "456"); Assert.IsNotNullOrEmpty(persistedKeysPair.CreationDateTime.ToString()); Assert.AreEqual(persistedKeysPair.EnableStartDate, false); Assert.AreEqual(persistedKeysPair.EnableEndDate, false); Assert.AreEqual(persistedKeysPair.EnableExpirationDate, true); Assert.AreEqual(persistedKeysPair.ExpirationDate, DateTime.Today.AddDays(3)); }
public IHttpActionResult CreateSecurityKey(CreateUserGeneratedSecurityKeyPair command) { try { if (log.IsDebugEnabled) { log.Debug("CreateSecurityKey Call Recevied, parameters:"); } return(Ok(_securityKeysApplicationService.CreateUserGeneratedKey(command, HeaderParamUtility.GetApikey(Request)))); } catch (InvalidOperationException exception) { if (log.IsErrorEnabled) { log.Error("CreateSecurityKey Call Exception ", exception); } return(BadRequest(exception.Message)); } catch (InvalidCredentialException exception) { if (log.IsErrorEnabled) { log.Error("CreateSecurityKey Call Exception ", exception); } return(BadRequest(exception.Message)); } catch (InvalidDataException exception) { if (log.IsErrorEnabled) { log.Error("CreateSecurityKey Call Exception ", exception); } return(BadRequest(exception.Message)); } catch (Exception exception) { if (log.IsErrorEnabled) { log.Error("CreateSecurityKey Call Exception ", exception); } return(InternalServerError()); } }
public void CreateUserGeneratedSecurityPair_IfAllRequiredParametersAreProvided_VerifyKeyPairIsReturnedAndPersistedSuccessfully() { ISecurityKeysApplicationService registrationService = (ISecurityKeysApplicationService)_applicationContext["SecurityKeysApplicationService"]; var systemGeneratedKey = registrationService.CreateSystemGeneratedKey(1); List <string> securityKeyPermissions = new List <string>(); IList <Permission> permissions = _permissionRepository.GetAllPermissions(); for (int i = 0; i < permissions.Count; i++) { securityKeyPermissions.Add(permissions[i].PermissionId); } CreateUserGeneratedSecurityKeyPair command = new CreateUserGeneratedSecurityKeyPair(securityKeyPermissions, DateTime.Today.AddDays(1).ToString(), DateTime.Today.AddDays(-2).ToString(), DateTime.Today.AddDays(-1).ToString(), true, true, true, "123"); var keys = registrationService.CreateUserGeneratedKey(command, systemGeneratedKey.Item1.Value); Assert.NotNull(keys); Assert.IsNotNullOrEmpty(keys.ApiKey); Assert.IsNotNullOrEmpty(keys.SecretKey); SecurityKeysPair persistedKeysPair = _securityKeysRepository.GetByApiKey(keys.ApiKey); Assert.NotNull(persistedKeysPair); Assert.AreEqual(persistedKeysPair.UserId, 1); Assert.AreEqual(persistedKeysPair.SystemGenerated, false); Assert.AreEqual(persistedKeysPair.ApiKey, keys.ApiKey); Assert.AreEqual(persistedKeysPair.SecretKey, keys.SecretKey); Assert.IsNotNullOrEmpty(persistedKeysPair.KeyDescription); Assert.IsNotNullOrEmpty(persistedKeysPair.CreationDateTime.ToString()); Assert.AreEqual(persistedKeysPair.EnableStartDate, true); Assert.AreEqual(persistedKeysPair.EnableEndDate, true); Assert.AreEqual(persistedKeysPair.EnableExpirationDate, true); Assert.AreEqual(persistedKeysPair.ExpirationDate, DateTime.Today.AddDays(1)); Assert.AreEqual(persistedKeysPair.StartDate, DateTime.Today.AddDays(-2)); Assert.AreEqual(persistedKeysPair.EndDate, DateTime.Today.AddDays(-1)); ValidatePermissions(persistedKeysPair, securityKeyPermissions); }
/// <summary> /// create new key pair user generated /// </summary> /// <param name="command"></param> /// <param name="apiKey"></param> /// <returns></returns> public SecurityKeyPair CreateUserGeneratedKey(CreateUserGeneratedSecurityKeyPair command, string apiKey) { if (command.Validate()) { //get security key pair for user name var getSecurityKeyPair = _securityKeysRepository.GetByApiKey(apiKey); if (getSecurityKeyPair == null) { throw new ArgumentException("Invalid api key"); } var keys = _securityKeysGenerationService.GenerateNewSecurityKeys(); List <SecurityKeysPermission> permissions = new List <SecurityKeysPermission>(); SecurityKeyPermissionsRepresentation[] securityKeyPermissionsRepresentations = this.GetPermissions(); foreach (SecurityKeyPermissionsRepresentation securityKeyPermissionsRepresentation in securityKeyPermissionsRepresentations) { // Check which permissions have been sent from the frontend that must be included with this User Generated Key if (command.SecurityKeyPermissions.Contains(securityKeyPermissionsRepresentation.Permission.PermissionId)) { securityKeyPermissionsRepresentation.Allowed = true; } } for (int i = 0; i < securityKeyPermissionsRepresentations.Length; i++) { permissions.Add(new SecurityKeysPermission(keys.Item1, securityKeyPermissionsRepresentations[i].Permission, securityKeyPermissionsRepresentations[i].Allowed)); } var keysPair = SecurityKeysPairFactory.UserGeneratedSecurityPair(getSecurityKeyPair.UserId, command.KeyDescription, keys.Item1, keys.Item2, command.EnableExpirationDate, command.ExpirationDateTime, command.EnableStartDate, command.StartDateTime, command.EnableEndDate, command.EndDateTime, permissions, _securityKeysRepository); _persistRepository.SaveUpdate(keysPair); return(new SecurityKeyPair(keys.Item1, keys.Item2)); } throw new InvalidOperationException("Please assign atleast one permission."); }
public void CreateUserGeneratedSecurityPair_IfKeyDescriptionAlreadyExists_ArgumentExceptionShouldBeRaised() { ISecurityKeysApplicationService registrationService = (ISecurityKeysApplicationService)_applicationContext["SecurityKeysApplicationService"]; var systemGeneratedKey = registrationService.CreateSystemGeneratedKey(1); List <string> securityKeyPermissions = new List <string>(); IList <Permission> permissions = _permissionRepository.GetAllPermissions(); for (int i = 0; i < permissions.Count; i++) { securityKeyPermissions.Add(permissions[i].PermissionId); } CreateUserGeneratedSecurityKeyPair command = new CreateUserGeneratedSecurityKeyPair(securityKeyPermissions, DateTime.Today.AddDays(1).ToString(), DateTime.Today.AddDays(-2).ToString(), DateTime.Today.AddDays(-1).ToString(), true, true, true, "123"); var keys = registrationService.CreateUserGeneratedKey(command, systemGeneratedKey.Item1.Value); command = new CreateUserGeneratedSecurityKeyPair(securityKeyPermissions, DateTime.Today.AddDays(1).ToString(), DateTime.Today.AddDays(-2).ToString(), DateTime.Today.AddDays(-1).ToString(), true, true, true, "123"); var keys1 = registrationService.CreateUserGeneratedKey(command, systemGeneratedKey.Item1.Value); }
public void CreateUsergeneratedSystemKey_ProvideAllParameters_TheKeysShouldBeReturned() { UserValidationEssentials essentials = AccessControlUtility.RegisterAndLogin("user", "*****@*****.**", "123", _applicationContext); SecurityKeyPairController securityKeyPairController = _applicationContext["SecurityKeyPairController"] as SecurityKeyPairController; IPermissionRepository permissionRepository = _applicationContext["PermissionRespository"] as IPermissionRepository; IList <Permission> permissions = permissionRepository.GetAllPermissions(); List <string> securityKeyPermissions = new List <string>(); for (int i = 0; i < permissions.Count; i++) { securityKeyPermissions.Add(permissions[i].PermissionId); } securityKeyPairController.Request = new HttpRequestMessage(HttpMethod.Post, ""); securityKeyPairController.Request.Headers.Add("Auth", essentials.ApiKey); CreateUserGeneratedSecurityKeyPair command = new CreateUserGeneratedSecurityKeyPair(securityKeyPermissions, "", "", "", false, false, false, "#1"); IHttpActionResult httpActionResult = securityKeyPairController.CreateSecurityKey(command); OkNegotiatedContentResult <SecurityKeyPair> result = (OkNegotiatedContentResult <SecurityKeyPair>)httpActionResult; Assert.IsNotNullOrEmpty(result.Content.ApiKey); Assert.IsNotNullOrEmpty(result.Content.SecretKey); CreateUserGeneratedSecurityKeyPair command2 = new CreateUserGeneratedSecurityKeyPair(securityKeyPermissions, "", "", "", false, false, false, "#2"); httpActionResult = securityKeyPairController.CreateSecurityKey(command2); result = (OkNegotiatedContentResult <SecurityKeyPair>)httpActionResult; Assert.IsNotNullOrEmpty(result.Content.ApiKey); Assert.IsNotNullOrEmpty(result.Content.SecretKey); httpActionResult = securityKeyPairController.GetUserSecurityKeys(); OkNegotiatedContentResult <object> result1 = (OkNegotiatedContentResult <object>)httpActionResult; List <object> objectPairs = result1.Content as List <object>; List <SecurityKeyPairList> pairs = new List <SecurityKeyPairList>(); foreach (object objectPair in objectPairs) { pairs.Add(objectPair as SecurityKeyPairList); } Assert.AreEqual(pairs.Count, 2); Assert.AreEqual(pairs[1].KeyDescription, "#1"); Assert.IsNull(pairs[1].ExpirationDate); httpActionResult = securityKeyPairController.GetSecurityKeyDetail("#1"); OkNegotiatedContentResult <SecurityKeyRepresentation> securityKey = (OkNegotiatedContentResult <SecurityKeyRepresentation>)httpActionResult; Assert.AreEqual(securityKey.Content.KeyDescritpion, "#1"); Assert.AreEqual(securityKey.Content.EnableEndDate, false); Assert.AreEqual(securityKey.Content.EnableExpirationDate, false); Assert.AreEqual(securityKey.Content.EnableStartDate, false); Assert.AreEqual(pairs[0].KeyDescription, "#2"); Assert.IsNull(pairs[0].ExpirationDate); httpActionResult = securityKeyPairController.GetSecurityKeyDetail("#2"); securityKey = (OkNegotiatedContentResult <SecurityKeyRepresentation>)httpActionResult; Assert.AreEqual(securityKey.Content.KeyDescritpion, "#2"); Assert.AreEqual(securityKey.Content.EnableEndDate, false); Assert.AreEqual(securityKey.Content.EnableExpirationDate, false); Assert.AreEqual(securityKey.Content.EnableStartDate, false); }
public void UpdateUsergeneratedSystemKey_ProvideAllParameters_TheKeysDetailsShouldGetUpdated() { UserValidationEssentials essentials = AccessControlUtility.RegisterAndLogin("user", "*****@*****.**", "123", _applicationContext); SecurityKeyPairController securityKeyPairController = _applicationContext["SecurityKeyPairController"] as SecurityKeyPairController; IPermissionRepository permissionRepository = _applicationContext["PermissionRespository"] as IPermissionRepository; IList <Permission> permissions = permissionRepository.GetAllPermissions(); List <string> securityKeyPermissions = new List <string>(); for (int i = 0; i < permissions.Count; i++) { securityKeyPermissions.Add(permissions[i].PermissionId); } securityKeyPairController.Request = new HttpRequestMessage(HttpMethod.Post, ""); securityKeyPairController.Request.Headers.Add("Auth", essentials.ApiKey); CreateUserGeneratedSecurityKeyPair command = new CreateUserGeneratedSecurityKeyPair(securityKeyPermissions, "", "", "", false, false, false, "#1"); IHttpActionResult httpActionResult = securityKeyPairController.CreateSecurityKey(command); OkNegotiatedContentResult <SecurityKeyPair> result = (OkNegotiatedContentResult <SecurityKeyPair>)httpActionResult; Assert.IsNotNullOrEmpty(result.Content.ApiKey); Assert.IsNotNullOrEmpty(result.Content.SecretKey); httpActionResult = securityKeyPairController.GetUserSecurityKeys(); OkNegotiatedContentResult <object> result1 = (OkNegotiatedContentResult <object>)httpActionResult; List <object> objectPairs = result1.Content as List <object>; Assert.IsNotNull(objectPairs); List <SecurityKeyPairList> pairs = new List <SecurityKeyPairList>(); foreach (object objectPair in objectPairs) { pairs.Add(objectPair as SecurityKeyPairList); } Assert.AreEqual(pairs.Count, 1); Assert.AreEqual(pairs[0].KeyDescription, "#1"); Assert.IsNull(pairs[0].ExpirationDate); httpActionResult = securityKeyPairController.GetSecurityKeyDetail("#1"); OkNegotiatedContentResult <SecurityKeyRepresentation> securityKey = (OkNegotiatedContentResult <SecurityKeyRepresentation>)httpActionResult; Assert.AreEqual(securityKey.Content.KeyDescritpion, "#1"); Assert.AreEqual(securityKey.Content.EnableEndDate, false); Assert.AreEqual(securityKey.Content.EnableExpirationDate, false); Assert.AreEqual(securityKey.Content.EnableStartDate, false); List <SecurityKeyPermissionsRepresentation> permissionsRepresentations = new List <SecurityKeyPermissionsRepresentation>(); for (int i = 0; i < securityKeyPermissions.Count; i++) { if (securityKeyPermissions[i] == PermissionsConstant.Cancel_Order) { permissionsRepresentations.Add(new SecurityKeyPermissionsRepresentation(false, new Permission(securityKeyPermissions[i], "Cancel Order"))); } else if (securityKeyPermissions[i] == PermissionsConstant.Query_Open_Orders) { permissionsRepresentations.Add(new SecurityKeyPermissionsRepresentation(false, new Permission(securityKeyPermissions[i], "Query Open Orders"))); } else if (securityKeyPermissions[i] == PermissionsConstant.Place_Order) { permissionsRepresentations.Add(new SecurityKeyPermissionsRepresentation(false, new Permission(securityKeyPermissions[i], "Place Order"))); } else if (securityKeyPermissions[i] == PermissionsConstant.Withdraw_Funds) { permissionsRepresentations.Add(new SecurityKeyPermissionsRepresentation(false, new Permission(securityKeyPermissions[i], "Withdraw Funds"))); } else { permissionsRepresentations.Add(new SecurityKeyPermissionsRepresentation(true, new Permission(securityKeyPermissions[i], securityKeyPermissions[i]))); } } UpdateUserGeneratedSecurityKeyPair updateKeyPair = new UpdateUserGeneratedSecurityKeyPair(securityKey.Content.ApiKey, "#2", true, false, false, "", DateTime.Today.AddDays(-2).ToString(), permissionsRepresentations.ToArray(), ""); httpActionResult = securityKeyPairController.UpdateSecurityKey(updateKeyPair); httpActionResult = securityKeyPairController.GetSecurityKeyDetail("#2"); securityKey = (OkNegotiatedContentResult <SecurityKeyRepresentation>)httpActionResult; Assert.AreEqual(securityKey.Content.KeyDescritpion, "#2"); Assert.AreEqual(securityKey.Content.EnableEndDate, false); Assert.AreEqual(securityKey.Content.EnableExpirationDate, false); Assert.AreEqual(securityKey.Content.EnableStartDate, true); ValidatePermissions(securityKey.Content.SecurityKeyPermissions); }