public ReponseApi GetCodeMicrosoft(DataMicrosoft par) { ReponseApi res = new ReponseApi(); QRFeatures funciones = new QRFeatures(); QRCodeGenerator qrGenerator = new QRCodeGenerator(); res.Codigo = 0; res.Mensaje = ""; res.Respuesta = null; try { if (string.IsNullOrEmpty(par.Emisor)) { res.Mensaje = "El Emisor no puede ser nulo"; } else if (string.IsNullOrEmpty(par.Cuenta)) { res.Mensaje = "La Cuenta no puede ser nula"; } else { ResponseQRMicrosoft resMicrosoft = new ResponseQRMicrosoft(); var key = TwoStepsAuthenticator.Authenticator.GenerateKey(); byte[] inputBytes = Encoding.ASCII.GetBytes(key); string base32 = Wiry.Base32.Base32Encoding.Standard.GetString(inputBytes); string codigoManual = base32.Replace("=", null); var AuthenticatorUri = funciones.GenerateQrCodeUri(par.Cuenta, par.Emisor, key); QRCodeData qrCodeData = qrGenerator.CreateQrCode(AuthenticatorUri, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(4); System.IO.MemoryStream ms = new MemoryStream(); qrCodeImage.Save(ms, ImageFormat.Png); byte[] byteImage = ms.ToArray(); var SigBase64 = Convert.ToBase64String(byteImage); resMicrosoft.LlaveSecreta = key; resMicrosoft.CodigoManual = codigoManual; resMicrosoft.QRImagen = "data:image/png;base64," + SigBase64; res.Codigo = 1; res.Respuesta = resMicrosoft; } } catch (Exception ex) { //Log Error _logger.Log(LogLevel.Error, ex, ex.Message); } return(res); }
public void PruevaGenerarQRMicrosoft() { TwoFactorController metodos = new TwoFactorController(); DataMicrosoft datosMicrosoft = new DataMicrosoft(); // Arrange int resultadoEsperado = 1; datosMicrosoft.Cuenta = "*****@*****.**"; datosMicrosoft.Emisor = "SucursalDigital"; //Act var resultadoCodigo = metodos.GetCodeMicrosoft(datosMicrosoft); // Assert Assert.Equals(resultadoEsperado, resultadoCodigo); }