private RevokeApiKeysRequest GetRevokeApiKeyRequest() { var revokeApiKeysRequest = new RevokeApiKeysRequest(); var apiKeyRevokeViewModel = new ApiKeyRevokeViewModel(null, "apiKey1", "https://leakedUrl1", Enum.GetName(typeof(CredentialRevocationSource), CredentialRevocationSource.GitHub), true); revokeApiKeysRequest.SelectedApiKeys = new List <string> { JsonConvert.SerializeObject(apiKeyRevokeViewModel) }; return(revokeApiKeysRequest); }
public async Task GivenRequestWithEmptySelectedApiKeys_ItReturnsErrorMessage() { // Arrange var apiKeysController = GetController <ApiKeysController>(); // Act var revokeApiKeysRequest = new RevokeApiKeysRequest(); revokeApiKeysRequest.SelectedApiKeys = new List <string>(); await apiKeysController.Revoke(revokeApiKeysRequest); // Assert Assert.Equal("The API keys revoking request contains null or empty selected API keys.", apiKeysController.TempData["ErrorMessage"]); }
public async Task <ActionResult> Revoke(RevokeApiKeysRequest revokeApiKeysRequest) { if (revokeApiKeysRequest == null) { TempData["ErrorMessage"] = "The API keys revoking request can not be null."; return(View(nameof(Index))); } if (revokeApiKeysRequest.SelectedApiKeys == null || revokeApiKeysRequest.SelectedApiKeys.Count == 0) { TempData["ErrorMessage"] = "The API keys revoking request contains null or empty selected API keys."; return(View(nameof(Index))); } try { foreach (var selectedApiKey in revokeApiKeysRequest.SelectedApiKeys) { var apiKeyInfo = JsonConvert.DeserializeObject <ApiKeyRevokeViewModel>(selectedApiKey); var apiKeyCredential = _authenticationService.GetApiKeyCredential(apiKeyInfo.ApiKey); var revocationSourceKey = (CredentialRevocationSource)Enum.Parse(typeof(CredentialRevocationSource), apiKeyInfo.RevocationSource); var credentialRevokedMessage = new CredentialRevokedMessage( _messageServiceConfiguration, credential: apiKeyCredential, leakedUrl: apiKeyInfo.LeakedUrl, revocationSource: apiKeyInfo.RevocationSource, manageApiKeyUrl: Url.ManageMyApiKeys(relativeUrl: false), contactUrl: Url.Contact(relativeUrl: false)); await _messageService.SendMessageAsync(credentialRevokedMessage); await _authenticationService.RevokeApiKeyCredential(apiKeyCredential, revocationSourceKey, commitChanges : false); } await _entitiesContext.SaveChangesAsync(); } catch (Exception e) { _telemetryService.TraceException(e); TempData["ErrorMessage"] = "Failed to revoke the API keys, and please check the telemetry for details."; return(RedirectToAction("Index")); } TempData["Message"] = "Successfully revoke the selected API keys."; return(RedirectToAction("Index")); }