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 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)); }
/// <summary> /// Set the permissions /// </summary> public bool UpdateSecurityKeyPair(UpdateUserGeneratedSecurityKeyPair updateCommand, string apiKey) { if (updateCommand.Validate()) { //get security key pair for user name var getSecurityKeyPair = _securityKeysRepository.GetByApiKey(apiKey); if (getSecurityKeyPair == null) { throw new ArgumentException("Invalid api key"); } var keyPair = _securityKeysRepository.GetByApiKey(updateCommand.ApiKey); if (keyPair == null) { throw new InvalidOperationException("Invalid Api Key"); } var getKeyPair = _securityKeysRepository.GetByKeyDescriptionAndUserId(updateCommand.KeyDescritpion, getSecurityKeyPair.UserId); //check if key description already exist if (getKeyPair != null) { if (!getKeyPair.ApiKey.Equals(updateCommand.ApiKey)) { throw new InvalidOperationException("The key description already exist"); } } //update parameters keyPair.UpdateSecuritykeyPair(updateCommand.KeyDescritpion, updateCommand.EnableStartDate, updateCommand.EnableEndDate, updateCommand.EnableExpirationDate, updateCommand.EndDateTime, updateCommand.StartDateTime, updateCommand.ExpirationDateTime); //update permissions List <SecurityKeysPermission> permissions = new List <SecurityKeysPermission>(); for (int i = 0; i < updateCommand.SecurityKeyPermissions.Length; i++) { permissions.Add(new SecurityKeysPermission(keyPair.ApiKey, updateCommand.SecurityKeyPermissions[i].Permission, updateCommand.SecurityKeyPermissions[i].Allowed)); } keyPair.UpdatePermissions(permissions.ToArray()); //persist _persistRepository.SaveUpdate(keyPair); return(true); } throw new InvalidOperationException("Please assign atleast one permission."); }
public IHttpActionResult UpdateSecurityKey(UpdateUserGeneratedSecurityKeyPair command) { try { if (log.IsDebugEnabled) { log.Debug("CreateSecurityKey Call Recevied, parameters:"); } return(Ok(_securityKeysApplicationService.UpdateSecurityKeyPair(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 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); }