/// <summary> /// This is the function to log in using an apiKey, authenticateServiceKey and a callbackUrl. /// The return value will be a sessionid and a return URL. /// </summary> /// <returns>If the request is successful, the redirectUrl and sessionId is returned</returns> public async Task <BankIdFederatedLoginResponse> BankIdFederatedLoginAsync(BankIdFederatedLoginRequest request) { EnsureValidBankIdServiceKey(); var queryStringParams = new Dictionary <string, string?> { { "apiKey", _apiKey }, { "authenticateServiceKey", _bankIdServiceKey } }; var url = GetUrl("FederatedLogin", queryStringParams); var postData = new Dictionary <string, string?> { { "callbackUrl", GetBase64EncodedString(request.CallbackUrl) }, { "deviceChoice", GetBoolString(request.UseChooseDevice) }, { "thisDevice", GetBoolString(request.UseSameDevice) }, { "askForSSN", GetBoolString(request.AskForPersonalIdentityNumber) }, { "personalNumber", request.PersonalIdentityNumber }, { "mobileBankId", GetBoolString(request.RequireMobileBankId) }, { "customerURL", GetBase64EncodedString(request.CustomerUrl) }, { "gui", GetBoolString(request.ShowGui) }, { "userVisibleData", GetBase64EncodedString(request.SignUserVisibleData) }, { "userNonVisibleData", GetBase64EncodedString(request.SignUserNonVisibleData) } }; var fullResponse = await PostFullResponseAndEnsureSuccess <BankIdFederatedLoginFullResponse>(url, postData); return(new BankIdFederatedLoginResponse(fullResponse)); }
public async void BankIdFederatedLoginAsync_WithAllValues__ShouldPostToGrandIdFederatedLogin_WithAllValues() { // Arrange var bankIdFederatedLoginRequest = new BankIdFederatedLoginRequest( callbackUrl: "https://cb/", useChooseDevice: true, useSameDevice: true, askForPersonalIdentityNumber: true, personalIdentityNumber: "20180101239", requireMobileBankId: true, customerUrl: "https://cu/", showGui: true, signUserVisibleData: "uvd", signUserNonVisibleData: "unvd" ); // Act await _grandIdApiClient.BankIdFederatedLoginAsync(bankIdFederatedLoginRequest); // Assert var request = _messageHandlerMock.GetFirstArgumentOfFirstInvocation <HttpMessageHandler, HttpRequestMessage>(); var contentString = await request.Content.ReadAsStringAsync(); Assert.Contains("callbackUrl=aHR0cHM6Ly9jYi8%3D", contentString); Assert.Contains("deviceChoice=true", contentString); Assert.Contains("thisDevice=true", contentString); Assert.Contains("askForSSN=true", contentString); Assert.Contains("personalNumber=20180101239", contentString); Assert.Contains("mobileBankId=true", contentString); Assert.Contains("customerURL=aHR0cHM6Ly9jdS8%3D", contentString); Assert.Contains("gui=true", contentString); Assert.Contains("userVisibleData=dXZk", contentString); Assert.Contains("userNonVisibleData=dW52ZA%3D%3D", contentString); }