-
Notifications
You must be signed in to change notification settings - Fork 236
Expand file tree
/
Copy pathAuthCodeMSALBrowserAuthenticationProvider.ts
More file actions
102 lines (98 loc) · 3.39 KB
/
AuthCodeMSALBrowserAuthenticationProvider.ts
File metadata and controls
102 lines (98 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/**
* -------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License.
* See License in the project root for license information.
* -------------------------------------------------------------------------------------------
*/
/*tslint:disable*/
import { AccountInfo, AuthenticationResult, InteractionRequiredAuthError, InteractionType, PublicClientApplication } from "@azure/msal-browser";
import { assert } from "chai";
import * as sinon from "sinon";
import { AuthCodeMSALBrowserAuthenticationProvider } from "../../../src/authentication/msal-browser/AuthCodeMSALBrowserAuthenticationProvider";
import { AuthCodeMSALBrowserAuthenticationProviderOptions } from "../../../src/authentication/msalOptions/MSALAuthenticationProviderOptions";
describe("AuthCodeMSALBrowserAuthenticationProvider.ts", () => {
const scopes = ["test_scopes"];
it("AccessToken is returned correctly from getToken function", async () => {
const dummyApp = new PublicClientApplication({
auth: {
clientId: "",
},
});
if (typeof dummyApp.acquireTokenSilent !== "function") {
throw new Error("Method definition for getToken is not found");
}
const account: AccountInfo = {
homeAccountId: "",
localAccountId: "",
environment: "",
tenantId: "",
username: "",
};
const options: AuthCodeMSALBrowserAuthenticationProviderOptions = {
interactionType: InteractionType.Popup,
scopes,
account,
};
const accessToken: AuthenticationResult = {
accessToken: "dummy_valid_token",
account,
authority: "",
scopes,
uniqueId: "",
tenantId: "",
idToken: "",
idTokenClaims: null,
fromCache: false,
expiresOn: new Date(),
tokenType: "",
correlationId: ""
};
const moq = sinon.mock(dummyApp);
moq.expects("acquireTokenSilent").resolves(accessToken);
const msalBrowserAuthenticationProvider = new AuthCodeMSALBrowserAuthenticationProvider(dummyApp, options);
const access = await msalBrowserAuthenticationProvider.getAccessToken();
assert.equal(access, accessToken.accessToken);
});
it("InteractionRequiredAuthError function is handled", async () => {
const dummyApp = new PublicClientApplication({
auth: {
clientId: "",
},
});
if (typeof dummyApp.acquireTokenSilent !== "function") {
throw new Error("Method definition for getToken is not found");
}
const account: AccountInfo = {
homeAccountId: "",
localAccountId: "",
environment: "",
tenantId: "",
username: "",
};
const options: AuthCodeMSALBrowserAuthenticationProviderOptions = {
interactionType: InteractionType.Popup,
scopes,
account,
};
const accessToken: AuthenticationResult = {
accessToken: "dummy_popUp_token",
account,
authority: "",
scopes,
uniqueId: "",
tenantId: "",
idToken: "",
idTokenClaims: null,
fromCache: false,
expiresOn: new Date(),
tokenType: "",
correlationId: ""
};
const moq = sinon.mock(dummyApp);
moq.expects("acquireTokenSilent").throws(new InteractionRequiredAuthError("TEST_ERROR"));
moq.expects("acquireTokenPopup").resolves(accessToken);
const msalBrowserAuthenticationProvider = new AuthCodeMSALBrowserAuthenticationProvider(dummyApp, options);
const access = await msalBrowserAuthenticationProvider.getAccessToken();
assert.equal(access, accessToken.accessToken);
});
});