import Sinon = require("sinon");
import BluebirdPromise = require("bluebird");
import U2f = require("u2f");
import { IU2fHandler } from "../../src/lib/authentication/u2f/IU2fHandler";


export class U2fHandlerStub implements IU2fHandler {
  requestStub: Sinon.SinonStub;
  checkRegistrationStub: Sinon.SinonStub;
  checkSignatureStub: Sinon.SinonStub;

  constructor() {
    this.requestStub = Sinon.stub();
    this.checkRegistrationStub = Sinon.stub();
    this.checkSignatureStub = Sinon.stub();
  }

  request(appId: string, keyHandle?: string): U2f.Request {
    return this.requestStub(appId, keyHandle);
  }

  checkRegistration(registrationRequest: U2f.Request, registrationResponse: U2f.RegistrationData)
    : U2f.RegistrationResult | U2f.Error {
    return this.checkRegistrationStub(registrationRequest, registrationResponse);
  }

  checkSignature(signatureRequest: U2f.Request, signatureResponse: U2f.SignatureData, publicKey: string)
    : U2f.SignatureResult | U2f.Error {
    return this.checkSignatureStub(signatureRequest, signatureResponse, publicKey);
  }
}