diff --git a/USAGE.md b/USAGE.md index 222a575..20d032c 100644 --- a/USAGE.md +++ b/USAGE.md @@ -25,6 +25,7 @@ const timezoneHeader = fraudHeaders.get(fraudPreventionHeadersEnum.TIMEZONE); ``` If you want only a specific header value, then you can use below functions that are available to get individual header values: + * To get Gov-Client-Browser_plugins HMRC Fraud prevention header: ```js import getGovClientBrowserPluginsHeader from 'user-data-for-fraud-prevention'; @@ -39,4 +40,10 @@ const { headerValue, error } = getGovClientBrowserJSUserAgentHeader(); ```js import getGovClientDeviceID from 'user-data-for-fraud-prevention'; const {headerValue, error} = getGovClientDeviceID(); -``` \ No newline at end of file +``` + +* To get Gov-Client-Browser-Do-Not-Track HMRC Fraud prevention header: +```js +import getGovClientBrowserDoNotTrackHeader from 'user-data-for-fraud-prevention'; +const {headerValue, error} = getGovClientBrowserDoNotTrackHeader(); +``` diff --git a/src/js/hmrc/mtdFraudPrevention.js b/src/js/hmrc/mtdFraudPrevention.js index 3530630..c8a5b6a 100644 --- a/src/js/hmrc/mtdFraudPrevention.js +++ b/src/js/hmrc/mtdFraudPrevention.js @@ -134,3 +134,14 @@ export const getGovClientBrowserPluginsHeader = () => { return {error}; } } + +/** + * Returns the value for Gov-Client-Browser-Do-Not-Track HMRC Fraud prevention header. + */ +export const getGovClientBrowserDoNotTrackHeader = () => { + try { + return {headerValue: getBrowserDoNotTrackStatus()}; + } catch (error) { + return {error}; + } +} diff --git a/src/js/index.js b/src/js/index.js index 49bf721..fb3c04b 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -5,12 +5,15 @@ import { windowDetails, getGovClientBrowserJSUserAgentHeader, getGovClientBrowserPluginsHeader, + getGovClientBrowserDoNotTrackHeader, getGovClientDeviceID } from "./hmrc/mtdFraudPrevention"; exports.fraudPreventionHeadersEnum = fraudPreventionHeadersEnum; exports.getFraudPreventionHeaders = getFraudPreventionHeaders; exports.getGovClientBrowserPluginsHeader = getGovClientBrowserPluginsHeader; +exports.getGovClientBrowserDoNotTrackHeader = getGovClientBrowserDoNotTrackHeader; + exports.getGovClientDeviceID = getGovClientDeviceID; exports.getScreenDetails = getScreenDetails; exports.getGovClientBrowserJSUserAgentHeader = getGovClientBrowserJSUserAgentHeader; diff --git a/tests/unit/hmrc/mtdFraudPrevention.test.js b/tests/unit/hmrc/mtdFraudPrevention.test.js index 4da4d08..b994f24 100644 --- a/tests/unit/hmrc/mtdFraudPrevention.test.js +++ b/tests/unit/hmrc/mtdFraudPrevention.test.js @@ -15,6 +15,7 @@ import { resetDeviceIpString, resetDeviceIpTimeStamp } from "../../../src/js/com import uuid from "uuid"; import {getGovClientBrowserPluginsHeader} from "../../../src/js/hmrc/mtdFraudPrevention"; import {getGovClientDeviceID} from "../../../src/js/hmrc/mtdFraudPrevention"; +import {getGovClientBrowserDoNotTrackHeader} from "../../../src/js/hmrc/mtdFraudPrevention"; describe("FraudPreventionHeaders", () => { resetDeviceIpString(); @@ -261,3 +262,20 @@ describe("getGovClientDeviceID", () => { deviceIDMock.mockRestore(); }); }); + +describe("getGovClientBrowserDoNotTrackHeader", () => { + it("returns correct headerValue when there is no error", () => { + const browserDoNotTrackStatusMock = jest.spyOn(browserInfoHelper, "getBrowserDoNotTrackStatus").mockImplementation(() => "true"); + const {headerValue, error} = getGovClientBrowserDoNotTrackHeader(); + expect(headerValue).toBe("true"); + expect(error).toBe(undefined); + browserDoNotTrackStatusMock.mockRestore(); + }) + it("returns error when there is an error", () => { + const browserDoNotTrackStatusMock = jest.spyOn(browserInfoHelper, "getBrowserDoNotTrackStatus").mockImplementation(() => { throw Error("Something went wrong.")}); + const {headerValue, error} = getGovClientBrowserDoNotTrackHeader(); + expect(headerValue).toBe(undefined); + expect(error).toEqual(Error("Something went wrong.")); + browserDoNotTrackStatusMock.mockRestore(); + }); +});