Skip to content
This repository was archived by the owner on Dec 9, 2024. It is now read-only.

Commit d169324

Browse files
committed
refactor: Moved hooks requiring login to separate file
1 parent 7ceb484 commit d169324

File tree

3 files changed

+23
-12
lines changed

3 files changed

+23
-12
lines changed

src/plugins/login/azureLoginPlugin.test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { AzureLoginService } from "../../services/loginService";
33
import { MockFactory } from "../../test/mockFactory";
44
import { invokeHook, setEnvVariables, unsetEnvVariables } from "../../test/utils";
55
import { AzureLoginPlugin } from "./azureLoginPlugin";
6+
import { loginHooks } from "./loginHooks";
67

78
describe("Login Plugin", () => {
89

@@ -32,14 +33,18 @@ describe("Login Plugin", () => {
3233

3334
async function invokeLoginHook(hasCreds = false, serverless?: Serverless, options?: Serverless.Options) {
3435
const plugin = createPlugin(hasCreds, serverless, options);
35-
await invokeHook(plugin, "before:package:initialize");
36+
await invokeHook(plugin, `before:${loginHooks[0]}`);
3637
}
3738

3839
beforeEach(() => {
3940
AzureLoginService.interactiveLogin = createMockLoginFunction();
4041
AzureLoginService.servicePrincipalLogin = createMockLoginFunction();
4142
});
4243

44+
it("contains the hooks as contained in loginHooks", () => {
45+
expect(Object.keys(createPlugin().hooks)).toEqual(loginHooks.map((hook) => `before:${hook}`));
46+
});
47+
4348
it("returns if azure credentials are set", async () => {
4449
await invokeLoginHook(true);
4550
expect(AzureLoginService.interactiveLogin).not.toBeCalled();

src/plugins/login/azureLoginPlugin.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,18 @@
11
import Serverless from "serverless";
2-
import AzureProvider from "../../provider/azureProvider";
3-
import { AzureLoginService } from "../../services/loginService";
2+
import { AzureLoginOptions, AzureLoginService } from "../../services/loginService";
43
import { AzureBasePlugin } from "../azureBasePlugin";
5-
import { AzureLoginOptions } from "../../services/loginService";
4+
import { loginHooks } from "./loginHooks";
65

76
export class AzureLoginPlugin extends AzureBasePlugin<AzureLoginOptions> {
8-
private provider: AzureProvider;
97
public hooks: { [eventName: string]: Promise<any> };
108

119
public constructor(serverless: Serverless, options: AzureLoginOptions) {
1210
super(serverless, options);
13-
this.provider = (this.serverless.getProvider("azure") as any) as AzureProvider;
1411

15-
this.hooks = {
16-
"before:package:initialize": this.login.bind(this),
17-
"before:deploy:list:list": this.login.bind(this),
18-
"before:invoke:invoke": this.login.bind(this),
19-
"before:rollback:rollback": this.login.bind(this),
20-
};
12+
this.hooks = {};
13+
for (const h of loginHooks) {
14+
this.hooks[`before:${h}`] = this.login.bind(this);
15+
}
2116
}
2217

2318
private async login() {

src/plugins/login/loginHooks.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/**
2+
* Hooks that require authentication before execution
3+
*/
4+
export const loginHooks = [
5+
"package:initialize",
6+
"deploy:list:list",
7+
"deploy:deploy",
8+
"invoke:invoke",
9+
"rollback:rollback",
10+
"remove:remove",
11+
]

0 commit comments

Comments
 (0)