Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Saliou Diallo committed Sep 29, 2022
1 parent 112f1a8 commit b818d9f
Show file tree
Hide file tree
Showing 2 changed files with 126 additions and 97 deletions.
2 changes: 1 addition & 1 deletion creator-node/scripts/run-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ if [ "${debug}" ]; then
UNIT_TIMEOUT=0
INTEGRATION_TIMEOUT=0
else
UNIT_TIMEOUT=2000
UNIT_TIMEOUT=5000
INTEGRATION_TIMEOUT=30000
fi

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
import { premiumContentMiddleware } from './premiumContentMiddleware'
import assert from 'assert'
import { resFactory, loggerFactory } from '../../../test/lib/reqMock'
import { Request, Response } from 'express'
import Logger from 'bunyan'
import { Redis } from 'ioredis'
import { PremiumContentAccessError } from '../../premiumContent/types'
import { StubPremiumContentAccessChecker } from '../../premiumContent/stubPremiumContentAccessChecker'
import config from '../../config'
import proxyquire from 'proxyquire'

describe('Test premium content middleware', function () {
describe('Test premium content middleware', () => {
let premiumContentMiddlewareProxy: any
let app: any
let serviceRegistry: any
let libs: any
Expand All @@ -18,7 +20,7 @@ describe('Test premium content middleware', function () {
let mockRes: any
let premiumContentAccessChecker: StubPremiumContentAccessChecker

beforeEach(function () {
beforeEach(() => {
libs = {
ethContracts: {
ServiceProviderFactoryClient: {
Expand Down Expand Up @@ -46,109 +48,136 @@ describe('Test premium content middleware', function () {
mockRes = resFactory()
})

it('returns bad request when missing the CID param', async () => {
let nextCalled = false
await premiumContentMiddleware(
{ ...mockReq, params: { CID: null } } as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
describe('when premium content is enabled', () => {
beforeEach(() => {
config.set('premiumContentEnabled', true)
premiumContentMiddlewareProxy = proxyquire('./premiumContentMiddleware', {
'./../../config': config
})
})

it('returns bad request when missing the CID param', async () => {
let nextCalled = false
await premiumContentMiddlewareProxy.premiumContentMiddleware(
{ ...mockReq, params: { CID: null } } as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
}
)
assert.deepStrictEqual(mockRes.statusCode, 400)
assert.deepStrictEqual(nextCalled, false)
})

it('returns unauthorized when it fails because of missing headers', async () => {
premiumContentAccessChecker.accessCheckReturnsWith = {
doesUserHaveAccess: false,
trackId: 1,
isPremium: true,
error: PremiumContentAccessError.MISSING_HEADERS
}
)
assert.deepStrictEqual(mockRes.statusCode, 400)
assert.deepStrictEqual(nextCalled, false)
})
let nextCalled = false
await premiumContentMiddlewareProxy.premiumContentMiddleware(
mockReq as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
}
)
assert.deepStrictEqual(mockRes.statusCode, 401)
assert.deepStrictEqual(nextCalled, false)
})

it('returns unauthorized when it fails because of missing headers', async () => {
premiumContentAccessChecker.accessCheckReturnsWith = {
doesUserHaveAccess: false,
trackId: 1,
isPremium: true,
error: PremiumContentAccessError.MISSING_HEADERS
}
let nextCalled = false
await premiumContentMiddleware(
mockReq as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
it('returns forbidden when it fails because of invalid discovery node', async () => {
premiumContentAccessChecker.accessCheckReturnsWith = {
doesUserHaveAccess: false,
trackId: 1,
isPremium: true,
error: PremiumContentAccessError.INVALID_DISCOVERY_NODE
}
)
assert.deepStrictEqual(mockRes.statusCode, 401)
assert.deepStrictEqual(nextCalled, false)
})
let nextCalled = false
await premiumContentMiddlewareProxy.premiumContentMiddleware(
mockReq as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
}
)
assert.deepStrictEqual(mockRes.statusCode, 403)
assert.deepStrictEqual(nextCalled, false)
})

it('returns forbidden when it fails because of invalid discovery node', async () => {
premiumContentAccessChecker.accessCheckReturnsWith = {
doesUserHaveAccess: false,
trackId: 1,
isPremium: true,
error: PremiumContentAccessError.INVALID_DISCOVERY_NODE
}
let nextCalled = false
await premiumContentMiddleware(
mockReq as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
it('returns forbidden when it fails because of failed verification match', async () => {
premiumContentAccessChecker.accessCheckReturnsWith = {
doesUserHaveAccess: false,
trackId: 1,
isPremium: true,
error: PremiumContentAccessError.FAILED_MATCH
}
)
assert.deepStrictEqual(mockRes.statusCode, 403)
assert.deepStrictEqual(nextCalled, false)
})
let nextCalled = false
await premiumContentMiddlewareProxy.premiumContentMiddleware(
mockReq as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
}
)
assert.deepStrictEqual(mockRes.statusCode, 403)
assert.deepStrictEqual(nextCalled, false)
})

it('returns forbidden when it fails because of failed verification match', async () => {
premiumContentAccessChecker.accessCheckReturnsWith = {
doesUserHaveAccess: false,
trackId: 1,
isPremium: true,
error: PremiumContentAccessError.FAILED_MATCH
}
let nextCalled = false
await premiumContentMiddleware(
mockReq as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
it('passes and moves to the next middleware when all checks are fine and content is NOT premium', async () => {
premiumContentAccessChecker.accessCheckReturnsWith = {
doesUserHaveAccess: true,
trackId: null,
isPremium: false,
error: null
}
)
assert.deepStrictEqual(mockRes.statusCode, 403)
assert.deepStrictEqual(nextCalled, false)
})
let nextCalled = false
await premiumContentMiddlewareProxy.premiumContentMiddleware(
mockReq as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
}
)
assert.deepStrictEqual(nextCalled, true)
})

it('passes and moves to the next middleware when all checks are fine and content is NOT premium', async () => {
premiumContentAccessChecker.accessCheckReturnsWith = {
doesUserHaveAccess: true,
trackId: null,
isPremium: false,
error: null
}
let nextCalled = false
await premiumContentMiddleware(
mockReq as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
it('passes and moves to the next middleware when all checks are fine and content IS premium', async () => {
premiumContentAccessChecker.accessCheckReturnsWith = {
doesUserHaveAccess: true,
trackId: 1,
isPremium: true,
error: null
}
)
assert.deepStrictEqual(nextCalled, true)
let nextCalled = false
await premiumContentMiddlewareProxy.premiumContentMiddleware(
mockReq as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
}
)
assert.deepStrictEqual(nextCalled, true)
})
})

it('passes and moves to the next middleware when all checks are fine and content IS premium', async () => {
premiumContentAccessChecker.accessCheckReturnsWith = {
doesUserHaveAccess: true,
trackId: 1,
isPremium: true,
error: null
}
let nextCalled = false
await premiumContentMiddleware(
mockReq as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
}
)
assert.deepStrictEqual(nextCalled, true)
describe('when premium content is disabled', () => {
it('moves on to the next middleware', async () => {
config.set('premiumContentEnabled', false)
premiumContentMiddlewareProxy = proxyquire('./premiumContentMiddleware', {
'./../../config': config
})
let nextCalled = false
await premiumContentMiddlewareProxy.premiumContentMiddleware(
mockReq as unknown as Request,
mockRes as unknown as Response,
() => {
nextCalled = true
}
)
assert.deepStrictEqual(nextCalled, true)
})
})
})

0 comments on commit b818d9f

Please sign in to comment.