зеркало из https://github.com/Azure/ms-rest-js.git
157 строки
5.8 KiB
TypeScript
157 строки
5.8 KiB
TypeScript
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License. See License.txt in the project root for license information.
|
|
|
|
import "chai/register-should";
|
|
import * as msRest from "../lib/msRest";
|
|
import * as base64 from "../lib/util/base64";
|
|
const TokenCredentials = msRest.TokenCredentials;
|
|
const BasicAuthenticationCredentials = msRest.BasicAuthenticationCredentials;
|
|
const ApiKeyCredentials = msRest.ApiKeyCredentials;
|
|
const dummyToken = "A-dummy-access-token";
|
|
const fakeScheme = "fake-auth-scheme";
|
|
const dummyUsername = "dummy@mummy.com";
|
|
const dummyPassword = "IL0veDummies";
|
|
|
|
describe("Token credentials", () => {
|
|
describe("usage", () => {
|
|
it("should set auth header with bearer scheme in request", (done) => {
|
|
const creds = new TokenCredentials(dummyToken);
|
|
const request = new msRest.WebResource();
|
|
|
|
creds.signRequest(request).then((signedRequest: msRest.WebResourceLike) => {
|
|
signedRequest.headers.get("authorization")!.should.exist;
|
|
signedRequest.headers.get("authorization")!.should.match(new RegExp("^Bearer\\s+" + dummyToken + "$"));
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("should set auth header with custom scheme in request", (done) => {
|
|
const creds = new TokenCredentials(dummyToken, fakeScheme);
|
|
const request = new msRest.WebResource();
|
|
creds.signRequest(request).then((signedRequest: msRest.WebResourceLike) => {
|
|
signedRequest.headers.get("authorization")!.should.exist;
|
|
signedRequest.headers.get("authorization")!.should.match(new RegExp("^" + fakeScheme + "\\s+" + dummyToken + "$"));
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("construction", () => {
|
|
|
|
it("should succeed with token", () => {
|
|
(() => {
|
|
new TokenCredentials(dummyToken);
|
|
}).should.not.throw();
|
|
});
|
|
|
|
// it("should fail without credentials", () => {
|
|
// (() => {
|
|
// new TokenCredentials();
|
|
// }).should.throw();
|
|
// });
|
|
|
|
// it("should fail without token", () => {
|
|
// (() => {
|
|
// new TokenCredentials(null, fakeScheme);
|
|
// }).should.throw();
|
|
// });
|
|
});
|
|
});
|
|
|
|
describe("Basic Authentication credentials", () => {
|
|
const encodedCredentials = base64.encodeString(dummyUsername + ":" + dummyPassword);
|
|
describe("usage", () => {
|
|
it("should base64 encode the username and password and set auth header with baisc scheme in request", (done) => {
|
|
const creds = new BasicAuthenticationCredentials(dummyUsername, dummyPassword);
|
|
const request = new msRest.WebResource();
|
|
creds.signRequest(request).then((signedRequest: msRest.WebResourceLike) => {
|
|
signedRequest.headers.get("authorization")!.should.exist;
|
|
signedRequest.headers.get("authorization")!.should.match(new RegExp("^Basic\\s+" + encodedCredentials + "$"));
|
|
done();
|
|
});
|
|
});
|
|
|
|
it("should base64 encode the username and password and set auth header with custom scheme in request", (done) => {
|
|
const creds = new BasicAuthenticationCredentials(dummyUsername, dummyPassword, fakeScheme);
|
|
const request = new msRest.WebResource();
|
|
|
|
creds.signRequest(request).then((signedRequest: msRest.WebResourceLike) => {
|
|
signedRequest.headers.get("authorization")!.should.exist;
|
|
signedRequest.headers.get("authorization")!.should.match(new RegExp("^" + fakeScheme + "\\s+" + encodedCredentials + "$"));
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("construction", () => {
|
|
it("should succeed with userName and password", () => {
|
|
(() => {
|
|
new BasicAuthenticationCredentials(dummyUsername, dummyPassword);
|
|
}).should.not.throw();
|
|
});
|
|
});
|
|
|
|
describe("ApiKey credentials", () => {
|
|
describe("usage", function () {
|
|
it("should set header parameters properly in request", async function () {
|
|
const creds = new ApiKeyCredentials({inHeader: {"key1": "value1", "key2": "value2"}});
|
|
const request = new msRest.WebResource();
|
|
request.headers = new msRest.HttpHeaders();
|
|
|
|
await creds.signRequest(request);
|
|
|
|
request.headers.get("key1")!.should.exist;
|
|
request.headers.get("key2")!.should.exist;
|
|
request.headers.get("key1")!.should.match(new RegExp("^value1$"));
|
|
request.headers.get("key2")!.should.match(new RegExp("^value2$"));
|
|
});
|
|
|
|
it("should set query parameters properly in the request url without any query parameters", async function () {
|
|
const creds = new ApiKeyCredentials({inQuery: {"key1": "value1", "key2": "value2"}});
|
|
const request = {
|
|
headers: {},
|
|
url: "https://example.com"
|
|
} as msRest.WebResource;
|
|
|
|
await creds.signRequest(request);
|
|
request.url.should.equal("https://example.com?key1=value1&key2=value2");
|
|
});
|
|
|
|
it("should set query parameters properly in the request url with existing query parameters", async function () {
|
|
const creds = new ApiKeyCredentials({inQuery: {"key1": "value1", "key2": "value2"}});
|
|
const request = {
|
|
headers: {},
|
|
url: "https://example.com?q1=v2"
|
|
} as msRest.WebResource;
|
|
|
|
await creds.signRequest(request);
|
|
request.url.should.equal("https://example.com?q1=v2&key1=value1&key2=value2");
|
|
});
|
|
});
|
|
|
|
describe("construction", function () {
|
|
|
|
it("should fail with options.inHeader and options.inQuery set to null or undefined", function (done) {
|
|
(function () {
|
|
new ApiKeyCredentials({ inHeader: undefined, inQuery: undefined } as any);
|
|
}).should.throw();
|
|
done();
|
|
});
|
|
|
|
it("should fail without options", function (done) {
|
|
(function () {
|
|
new (ApiKeyCredentials as any)();
|
|
}).should.throw();
|
|
done();
|
|
});
|
|
|
|
it("should fail with empty options", function (done) {
|
|
(function () {
|
|
new ApiKeyCredentials({});
|
|
}).should.throw();
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|