/// <summary>
        /// Authenticate user via Authenticattion service. Redirects user to service wher euser use 3rth party tools for Authentication
        /// Method uses strings, keys from config file.
        /// </summary>
        /// <param name="language">TransactionLanguage 2-letter language code (EN,FI,SV)</param>
        /// <param name="uriModel">VetumaUriModel contains necessary uri links</param>
        /// <param name="transactionId">Unique TransactionId for authentication process</param>
        /// <param name="vetumaButtonText">Vetuma button text</param>
        /// <param name="vetumaButtonInstructions">Vetuma button instruction text</param>
        public void Authenticate(TransactionLanguage language, VetumaUriModel uriModel, string transactionId, string vetumaButtonText, string vetumaButtonInstructions)
        {
            // Allow authentication through banks and with an HST card
            Collection<VetumaLoginMethod> methods = new Collection<VetumaLoginMethod>();
            methods.Add(VetumaLoginMethod.Tupas);
            methods.Add(VetumaLoginMethod.HST);

            // first two parameters are related to the VetumaRequest rendering a button to facilitate
            //    // transferring to Vetuma when the user has javascript disabled.
            VetumaAuthenticationRequest request = new VetumaAuthenticationRequest(vetumaButtonText, vetumaButtonInstructions,
                language.ToString().ToLowerInvariant(),
                methods,
                uriModel.RedirectUri,
                uriModel.CancelUri,
                uriModel.ErrorUri,
                this.vetumaUtilities.GetConfigUriKey(VetumaKeys.VetumaAuthenticationUrl),
                this.vetumaUtilities.GetConfigKey(VetumaKeys.VetumaAuthenticationSharedSecretId),
                this.vetumaUtilities.GetConfigKey(VetumaKeys.VetumaAuthenticationSharedSecret),
                this.vetumaUtilities.GetConfigKey(VetumaKeys.VetumaApplicationIdentifier),
                this.vetumaUtilities.GetConfigKey(VetumaKeys.VetumaAuthenticationConfigurationId));

            // Vetuma requires this additional parameter to retrieve personal ids from VTJ
            request.ExtraData = "VTJ1";

            // store a unique identifier and attach it to the request
            request.TransactionId = transactionId;
            request.ApplicationName = this.vetumaUtilities.GetConfigKey(VetumaKeys.VetumaApplicationDisplayName);

            this.vetumeService.SubmitVetumaAuthenticationRequest(request);
        }
        public void Init()
        {
            this.vetumaUtilities = new Mock<IVetumaUtilities>();
            this.vetumaUtilities.Setup(o => o.GetConfigKey(It.IsAny<VetumaKeys>()))
                .Returns<VetumaKeys>(o => o.ToString());
            this.vetumaUtilities.Setup(o => o.GetConfigUriKey(It.IsAny<VetumaKeys>()))
                .Returns<VetumaKeys>(o => new Uri("htt:\\paymentUri.com"));

            this.serviceMock = new Mock<IVetumaService>();
            this.serviceMock.Setup(o => o.SubmitVetumaAuthenticationRequest(It.IsAny<VetumaAuthenticationRequest>()))
                .Callback<VetumaAuthenticationRequest>(o => this.request = o);

            this.service = new StrongAuthenticationService(this.serviceMock.Object, this.vetumaUtilities.Object);
        }
 /// <summary>
 /// Method submit Vetuma authentification request
 /// </summary>
 /// <param name="input">VetumaAuthenticationRequest object</param>
 public void SubmitVetumaAuthenticationRequest(VetumaAuthenticationRequest input)
 {
     input.Submit();
 }