import Request from 'request-promise';

async function GetSecret(username: string, password: string) {
  return await Request('https://single_factor.example.com:8080/secret.html', {
    auth: {
      username,
      password
    },
    rejectUnauthorized: false,
  });
}

export default function() {
  it("should retrieve secret when Authorization header is provided", async function() {
    const res = await GetSecret('john', 'password');
    if (res.indexOf('This is a very important secret!') < 0) {
      throw new Error('Cannot access secret.');
    }
  });

  it("should not retrieve secret when providing bad password", async function() {
    const res = await GetSecret('john', 'bad-password');
    if (res.indexOf('This is a very important secret!') >= 0) {
      throw new Error('Cannot access secret.');
    }
  });

  it("should not retrieve secret when authenticating with unexisting user", async function() {
    const res = await GetSecret('dontexist', 'password');
    if (res.indexOf('This is a very important secret!') >= 0) {
      throw new Error('Cannot access secret.');
    }
  });
}