Skip to content

Commit

Permalink
Merge pull request #181 from crazyfactory/180-cookie-middleware
Browse files Browse the repository at this point in the history
feat(CredentialsMiddleware): add a middleware which adds cookies to requests
  • Loading branch information
cyberhck authored Dec 27, 2018
2 parents 0c36d09 + b19db73 commit 717ae6c
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/middlewares/FetchMiddleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@ export interface IFetchResponse<T> {
clone: () => IFetchResponse<T>;
}

export type TCredentials = "include" | "omit" | "same-origin";

export interface IFetchRequest {
url?: string;
credentials?: "include" | "omit" | "same-origin";
credentials?: TCredentials;
baseUrl?: string;
method?: string;
queryParameters?: {[key: string]: string};
Expand Down
28 changes: 28 additions & 0 deletions src/middlewares/IncludeCredentialsMiddleware.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import {IFetchRequest} from "./FetchMiddleware";
import {IncludeCredentialsMiddleware} from "./IncludeCredentialsMiddleware";

describe("IncludeCredentialsMiddleware", () => {
it("should be defined", () => {
expect(IncludeCredentialsMiddleware).toBeDefined();
});
describe("process", () => {
it("should be defined", () => {
const middleware = new IncludeCredentialsMiddleware();
expect(middleware.process).toBeDefined();
});
it("should set request.credentials to include", () => {
const middleware = new IncludeCredentialsMiddleware();
const spy = jest.fn((options: IFetchRequest) => {
expect(options.credentials).toBe("include");
});
middleware.process({}, spy);
});
it("should be able to set value of credentials via constructor", () => {
const middleware = new IncludeCredentialsMiddleware("omit");
const spy = jest.fn((options: IFetchRequest) => {
expect(options.credentials).toBe("omit");
});
middleware.process({}, spy);
});
});
});
12 changes: 12 additions & 0 deletions src/middlewares/IncludeCredentialsMiddleware.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {IMiddleware} from "../Stack";
import {IFetchRequest, IFetchResponse, TCredentials} from "./FetchMiddleware";

export class IncludeCredentialsMiddleware implements IMiddleware<IFetchRequest, Promise<IFetchResponse<any>>> {
constructor(private mode: TCredentials = "include") {}

public process(options: IFetchRequest, next: (nextOptions: IFetchRequest) => Promise<IFetchResponse<any>>)
: Promise<IFetchResponse<any>> {
options.credentials = this.mode;
return next(options);
}
}

0 comments on commit 717ae6c

Please sign in to comment.