Skip to content
Snippets Groups Projects
Commit fdf120f1 authored by Sigmund, Dominik's avatar Sigmund, Dominik
Browse files

Merge branch 'develop' into 'main'

Fix tests

See merge request !4
parents ee9dc0fa 67ae9cfa
Branches
Tags 2.3.0
1 merge request!4Fix tests
Pipeline #8288 passed
...@@ -8,8 +8,9 @@ Sets Headers to a very save style. may be overriden by config. ...@@ -8,8 +8,9 @@ Sets Headers to a very save style. may be overriden by config.
## Usage ## Usage
`const security = require('@libs/security')` `const Security = require('@libs/security')`
`app.use(security(options))` `const security = new Security(options)`
`app.use(security.setHeaders)`
## Options ## Options
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -2,16 +2,17 @@ const express = require('express') ...@@ -2,16 +2,17 @@ const express = require('express')
const fs = require('fs') const fs = require('fs')
const http = require('http') const http = require('http')
const https = require('https') const https = require('https')
const security = require('../../index') const Security = require('../../index')
const security = Security({
onlyDefinedRoutes: true,
definedRoutes: ['/', 'REGEX:\\/id\\/\\d{1,}']
})
const app = express() const app = express()
app.use(security({ app.use(security.setHeaders)
onlyDefinedRoutes: true,
definedRoutes: ['/', 'REGEX:\\/id\\/\\d{1,}']
}))
app.get('/', function (req, res) { app.get('/', function (req, res) {
res.send('Hello World!') res.send('Hello World!')
......
const express = require('express') const express = require('express')
const security = require('../../index') const Security = require('../../index')
const security = Security({
const app = express()
app.use(security({
CacheControl: 'public, max-age=9999999999', CacheControl: 'public, max-age=9999999999',
Pragma: false, Pragma: false,
Expires: 'Wed, 21 Oct 2090 07:28:00 GMT', Expires: 'Wed, 21 Oct 2090 07:28:00 GMT',
...@@ -19,7 +16,11 @@ app.use(security({ ...@@ -19,7 +16,11 @@ app.use(security({
ReferrerPolicy: 'unsafe-url', ReferrerPolicy: 'unsafe-url',
allowedMethods: ['HEAD', 'GET', 'OPTIONS'], allowedMethods: ['HEAD', 'GET', 'OPTIONS'],
onlyDefinedRoutes: false onlyDefinedRoutes: false
})) })
const app = express()
app.use(security.setHeaders)
app.get('/', function (req, res) { app.get('/', function (req, res) {
res.send('Hello World!') res.send('Hello World!')
......
...@@ -4,5 +4,5 @@ export = Security; ...@@ -4,5 +4,5 @@ export = Security;
declare class Security { declare class Security {
constructor(); constructor();
setHeaders(req: express.Request, res: express.Response, next: express.NextFunctiont): void; setHeaders(): void;
} }
...@@ -3,9 +3,11 @@ module.exports = function(options = {}) { ...@@ -3,9 +3,11 @@ module.exports = function(options = {}) {
let security = {} let security = {}
security.options = options security.options = options
security.setHeaders = function(req, res, next) { security.setHeaders = function(req, res, next) {
if(!this.options) options = {} if(!security.options) options = {}
else options = this.options else options = security.options
if (typeof options.CacheControl === 'undefined') { if (typeof options.CacheControl === 'undefined') {
options.CacheControl = 'no-cache, no-store, must-revalidate' options.CacheControl = 'no-cache, no-store, must-revalidate'
......
...@@ -62,7 +62,7 @@ describe('Unit Tests', () => { ...@@ -62,7 +62,7 @@ describe('Unit Tests', () => {
describe('Header: X-Powered-By', () => { describe('Header: X-Powered-By', () => {
it('should remove Header if not defined', (done) => { it('should remove Header if not defined', (done) => {
let sec = security() let sec = security()
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._headers['X-Powered-By']).toBeUndefined() expect(mockRes._headers['X-Powered-By']).toBeUndefined()
done() done()
}) })
...@@ -71,7 +71,7 @@ describe('Unit Tests', () => { ...@@ -71,7 +71,7 @@ describe('Unit Tests', () => {
let options = {} let options = {}
options.XPoweredBy = false options.XPoweredBy = false
let sec = security(options) let sec = security(options)
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._headers['X-Powered-By']).toBeDefined() expect(mockRes._headers['X-Powered-By']).toBeDefined()
done() done()
}) })
...@@ -87,10 +87,10 @@ describe('Unit Tests', () => { ...@@ -87,10 +87,10 @@ describe('Unit Tests', () => {
it('should only allow GET, POST, PUT, DELETE on default', (done) => { it('should only allow GET, POST, PUT, DELETE on default', (done) => {
let sec = security() let sec = security()
mockReq._setMethod('GET') mockReq._setMethod('GET')
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._status).toBe(200) expect(mockRes._status).toBe(200)
mockReq._setMethod('HEAD') mockReq._setMethod('HEAD')
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._status).toBe(405) expect(mockRes._status).toBe(405)
done() done()
}) })
...@@ -101,10 +101,10 @@ describe('Unit Tests', () => { ...@@ -101,10 +101,10 @@ describe('Unit Tests', () => {
allowedMethods: ['POST'] allowedMethods: ['POST']
}) })
mockReq._setMethod('POST') mockReq._setMethod('POST')
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._status).toBe(200) expect(mockRes._status).toBe(200)
mockReq._setMethod('GET') mockReq._setMethod('GET')
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._status).toBe(405) expect(mockRes._status).toBe(405)
done() done()
}) })
...@@ -115,10 +115,10 @@ describe('Unit Tests', () => { ...@@ -115,10 +115,10 @@ describe('Unit Tests', () => {
it('should allow all routes by default', (done) => { it('should allow all routes by default', (done) => {
let sec = security() let sec = security()
mockReq._setUrl('/') mockReq._setUrl('/')
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._status).toBe(200) expect(mockRes._status).toBe(200)
mockReq._setUrl('/test') mockReq._setUrl('/test')
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._status).toBe(200) expect(mockRes._status).toBe(200)
done() done()
}) })
...@@ -130,10 +130,10 @@ describe('Unit Tests', () => { ...@@ -130,10 +130,10 @@ describe('Unit Tests', () => {
definedRoutes: ['/'] definedRoutes: ['/']
}) })
mockReq._setUrl('/') mockReq._setUrl('/')
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._status).toBe(200) expect(mockRes._status).toBe(200)
mockReq._setUrl('/test') mockReq._setUrl('/test')
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._status).toBe(405) expect(mockRes._status).toBe(405)
done() done()
}) })
...@@ -290,7 +290,7 @@ function headerUnitTest (header, headerOption, defaultValue) { ...@@ -290,7 +290,7 @@ function headerUnitTest (header, headerOption, defaultValue) {
describe('Header: ' + header, () => { describe('Header: ' + header, () => {
it('should set "' + defaultValue + '" if not defined', (done) => { it('should set "' + defaultValue + '" if not defined', (done) => {
let sec = security() let sec = security()
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._headers[header]).toBe(defaultValue) expect(mockRes._headers[header]).toBe(defaultValue)
done() done()
}) })
...@@ -299,7 +299,7 @@ function headerUnitTest (header, headerOption, defaultValue) { ...@@ -299,7 +299,7 @@ function headerUnitTest (header, headerOption, defaultValue) {
let options = {} let options = {}
options[headerOption] = false options[headerOption] = false
let sec = security(options) let sec = security(options)
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._headers[header]).toBeUndefined() expect(mockRes._headers[header]).toBeUndefined()
done() done()
}) })
...@@ -308,7 +308,7 @@ function headerUnitTest (header, headerOption, defaultValue) { ...@@ -308,7 +308,7 @@ function headerUnitTest (header, headerOption, defaultValue) {
let options = {} let options = {}
options[headerOption] = 'somevalue' options[headerOption] = 'somevalue'
let sec = security(options) let sec = security(options)
sec(mockReq, mockRes, () => { sec.setHeaders(mockReq, mockRes, () => {
expect(mockRes._headers[header]).toBe('somevalue') expect(mockRes._headers[header]).toBe('somevalue')
done() done()
}) })
...@@ -355,7 +355,8 @@ function headerIntegrationTest (header, headerOption, defaultValue) { ...@@ -355,7 +355,8 @@ function headerIntegrationTest (header, headerOption, defaultValue) {
} }
function startUpServer(options) { function startUpServer(options) {
app = express() app = express()
app.use(security(options)) let sec = security(options)
app.use(sec.setHeaders)
app.get('/', function (req, res) { app.get('/', function (req, res) {
res.send('Hello World!') res.send('Hello World!')
}) })
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment