Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions services/dmarc-report/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ const {

const {
arrayEquals,
calculatePercentages,
createSummaries,
createSummaryEdge,
createSummary,
Expand Down Expand Up @@ -65,6 +66,7 @@ const {
loadDates(moment),
loadSummaryCountByDomain(query),
initializeSummaries(
calculatePercentages,
createSummaryEdge(collections),
createSummary(query),
loadSummaryByDate(summariesContainer),
Expand All @@ -73,13 +75,15 @@ const {
arrayEquals,
loadCurrentDates(query),
updateThirtyDays(
calculatePercentages,
createSummary(query),
createSummaryEdge(collections),
loadSummaryByDate(summariesContainer),
removeSummaryEdge(query),
removeSummary(query),
),
updateMonthSummary(
calculatePercentages,
createSummary(query),
createSummaryEdge(collections),
loadSummaryByDate(summariesContainer),
Expand Down
76 changes: 76 additions & 0 deletions services/dmarc-report/src/__tests__/calculate-percentages.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
const { calculatePercentages } = require('../calculate-percentages')

describe('given the calculatePercentages', () => {
describe('values are greater then zero', () => {
const categoryTotals = {
pass: 2,
fail: 3,
passDkimOnly: 4,
passSpfOnly: 5,
}
describe('pass is greater then zero', () => {
it('returns percentage', () => {
const percentages = calculatePercentages(categoryTotals)

expect(percentages.pass).toEqual(14)
})
})
describe('fail is greater then zero', () => {
it('returns percentage', () => {
const percentages = calculatePercentages(categoryTotals)

expect(percentages.fail).toEqual(21)
})
})
describe('passDkimOnly is greater then zero', () => {
it('returns percentage', () => {
const percentages = calculatePercentages(categoryTotals)

expect(percentages.passDkimOnly).toEqual(29)
})
})
describe('passSpfOnly is greater then zero', () => {
it('returns percentage', () => {
const percentages = calculatePercentages(categoryTotals)

expect(percentages.passSpfOnly).toEqual(36)
})
})
})
describe('values are less then zero', () => {
const categoryTotals = {
pass: 0,
fail: 0,
passDkimOnly: 0,
passSpfOnly: 0,
}
describe('pass is less then zero', () => {
it('returns 0', () => {
const percentages = calculatePercentages(categoryTotals)

expect(percentages.pass).toEqual(0)
})
})
describe('fail is less then zero', () => {
it('returns 0', () => {
const percentages = calculatePercentages(categoryTotals)

expect(percentages.fail).toEqual(0)
})
})
describe('passDkimOnly is less then zero', () => {
it('returns 0', () => {
const percentages = calculatePercentages(categoryTotals)

expect(percentages.passDkimOnly).toEqual(0)
})
})
describe('passSpfOnly is less then zero', () => {
it('returns 0', () => {
const percentages = calculatePercentages(categoryTotals)

expect(percentages.passSpfOnly).toEqual(0)
})
})
})
})
19 changes: 19 additions & 0 deletions services/dmarc-report/src/calculate-percentages.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const calculatePercentages = ({ fail, pass, passDkimOnly, passSpfOnly }) => {
const total = [fail, pass, passDkimOnly, passSpfOnly].reduce(
(a, b) => a + b,
0,
)

return {
fail: fail <= 0 ? 0 : Number(((fail / total) * 100).toFixed(0)),
pass: pass <= 0 ? 0 : Number(((pass / total) * 100).toFixed(0)),
passDkimOnly:
passDkimOnly <= 0 ? 0 : Number(((passDkimOnly / total) * 100).toFixed(0)),
passSpfOnly:
passSpfOnly <= 0 ? 0 : Number(((passSpfOnly / total) * 100).toFixed(0)),
}
}

module.exports = {
calculatePercentages,
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const { ArangoTools, dbNameFromFile } = require('arango-tools')
const { makeMigrations } = require('../../../migrations')
const { initializeSummaries } = require('../index')
const { loadSummaryByDate } = require('../../loaders')
const { calculatePercentages } = require('../../calculate-percentages')

const { DB_PASS: rootPass, DB_URL: url } = process.env

Expand Down Expand Up @@ -68,6 +69,7 @@ describe('given the initializeSummaries function', () => {
.mockReturnValue({ _id: 'dmarcSummaries/1' })

const initialSummaryFunc = initializeSummaries(
calculatePercentages,
mockedCreateEdge,
mockedCreateSummary,
loadSummaryByDate(mockedContainer),
Expand All @@ -82,6 +84,12 @@ describe('given the initializeSummaries function', () => {
expect(mockedCreateSummary).toHaveBeenCalledTimes(2)
expect(mockedCreateSummary).toHaveBeenNthCalledWith(1, {
currentSummary: {
categoryPercentages: {
pass: 0,
fail: 0,
passDkimOnly: 0,
passSpfOnly: 0,
},
categoryTotals: {
fail: 0,
pass: 0,
Expand All @@ -98,6 +106,12 @@ describe('given the initializeSummaries function', () => {
})
expect(mockedCreateSummary).toHaveBeenNthCalledWith(2, {
currentSummary: {
categoryPercentages: {
pass: 0,
fail: 0,
passDkimOnly: 0,
passSpfOnly: 0,
},
categoryTotals: {
fail: 0,
pass: 0,
Expand All @@ -120,6 +134,7 @@ describe('given the initializeSummaries function', () => {
.mockReturnValue({ _id: 'dmarcSummaries/1' })

const initialSummaryFunc = initializeSummaries(
calculatePercentages,
mockedCreateEdge,
mockedCreateSummary,
loadSummaryByDate(mockedContainer),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const { ArangoTools, dbNameFromFile } = require('arango-tools')
const { makeMigrations } = require('../../../migrations')
const { updateMonthSummary } = require('../index')
const { loadSummaryByDate } = require('../../loaders')
const { calculatePercentages } = require('../../calculate-percentages')

const { DB_PASS: rootPass, DB_URL: url } = process.env

Expand Down Expand Up @@ -66,6 +67,7 @@ describe('given the updateMonthSummary function', () => {
const mockedRemoveSummary = jest.fn()

const updateMonthSummaryFunc = updateMonthSummary(
calculatePercentages,
mockedCreateSummary,
mockedCreateEdge,
loadSummaryByDate(mockedContainer),
Expand Down Expand Up @@ -97,6 +99,7 @@ describe('given the updateMonthSummary function', () => {
const mockedRemoveSummary = jest.fn()

const updateMonthSummaryFunc = updateMonthSummary(
calculatePercentages,
mockedCreateSummary,
mockedCreateEdge,
loadSummaryByDate(mockedContainer),
Expand Down Expand Up @@ -127,6 +130,7 @@ describe('given the updateMonthSummary function', () => {
const mockedRemoveSummary = jest.fn()

const updateMonthSummaryFunc = updateMonthSummary(
calculatePercentages,
mockedCreateSummary,
mockedCreateEdge,
loadSummaryByDate(mockedContainer),
Expand All @@ -144,6 +148,12 @@ describe('given the updateMonthSummary function', () => {
expect(mockedCreateSummary).toHaveBeenCalledTimes(1)
expect(mockedCreateSummary).toHaveBeenNthCalledWith(1, {
currentSummary: {
categoryPercentages: {
pass: 0,
fail: 0,
passDkimOnly: 0,
passSpfOnly: 0,
},
categoryTotals: {
fail: 0,
pass: 0,
Expand All @@ -170,6 +180,7 @@ describe('given the updateMonthSummary function', () => {
const mockedRemoveSummary = jest.fn()

const updateMonthSummaryFunc = updateMonthSummary(
calculatePercentages,
mockedCreateSummary,
mockedCreateEdge,
loadSummaryByDate(mockedContainer),
Expand Down Expand Up @@ -201,6 +212,7 @@ describe('given the updateMonthSummary function', () => {
const mockedRemoveSummary = jest.fn()

const updateMonthSummaryFunc = updateMonthSummary(
calculatePercentages,
mockedCreateSummary,
mockedCreateEdge,
loadSummaryByDate(mockedContainer),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const { ArangoTools, dbNameFromFile } = require('arango-tools')
const { makeMigrations } = require('../../../migrations')
const { updateThirtyDays } = require('../index')
const { loadSummaryByDate } = require('../../loaders')
const { calculatePercentages } = require('../../calculate-percentages')

const { DB_PASS: rootPass, DB_URL: url } = process.env

Expand Down Expand Up @@ -66,6 +67,7 @@ describe('given the updateThirtyDays function', () => {
const mockedRemoveSummary = jest.fn()

const updateThirtyDaysFunc = updateThirtyDays(
calculatePercentages,
mockedCreateSummary,
mockedCreateEdge,
loadSummaryByDate(mockedContainer),
Expand Down Expand Up @@ -95,6 +97,7 @@ describe('given the updateThirtyDays function', () => {
const mockedRemoveSummary = jest.fn()

const updateThirtyDaysFunc = updateThirtyDays(
calculatePercentages,
mockedCreateSummary,
mockedCreateEdge,
loadSummaryByDate(mockedContainer),
Expand Down Expand Up @@ -123,6 +126,7 @@ describe('given the updateThirtyDays function', () => {
const mockedRemoveSummary = jest.fn()

const updateThirtyDaysFunc = updateThirtyDays(
calculatePercentages,
mockedCreateSummary,
mockedCreateEdge,
loadSummaryByDate(mockedContainer),
Expand All @@ -138,6 +142,12 @@ describe('given the updateThirtyDays function', () => {
expect(mockedCreateSummary).toHaveBeenCalledTimes(1)
expect(mockedCreateSummary).toHaveBeenNthCalledWith(1, {
currentSummary: {
categoryPercentages: {
pass: 0,
fail: 0,
passDkimOnly: 0,
passSpfOnly: 0,
},
categoryTotals: {
fail: 0,
pass: 0,
Expand All @@ -164,6 +174,7 @@ describe('given the updateThirtyDays function', () => {
const mockedRemoveSummary = jest.fn()

const updateThirtyDaysFunc = updateThirtyDays(
calculatePercentages,
mockedCreateSummary,
mockedCreateEdge,
loadSummaryByDate(mockedContainer),
Expand Down
5 changes: 5 additions & 0 deletions services/dmarc-report/src/database/initialize-summaries.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const initializeSummaries = (
calculatePercentages,
createSummaryEdge,
createSummary,
loadSummaryByDate,
Expand All @@ -17,6 +18,10 @@ const initializeSummaries = (
}

const currentSummary = await loadSummaryByDate({ domain, startDate })
const categoryPercentages = calculatePercentages(
currentSummary.categoryTotals,
)
currentSummary.categoryPercentages = categoryPercentages

const summaryDBInfo = await createSummary({ currentSummary })

Expand Down
6 changes: 6 additions & 0 deletions services/dmarc-report/src/database/update-month-summary.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const updateMonthSummary = (
calculatePercentages,
createSummary,
createSummaryEdge,
loadSummaryByDate,
Expand All @@ -23,6 +24,11 @@ const updateMonthSummary = (
startDate: dateToAdd,
})

const categoryPercentages = calculatePercentages(
currentSummary.categoryTotals,
)
currentSummary.categoryPercentages = categoryPercentages

const summaryDBInfo = await createSummary({ currentSummary })

await createSummaryEdge({
Expand Down
6 changes: 6 additions & 0 deletions services/dmarc-report/src/database/update-thirty-days.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const updateThirtyDays = (
calculatePercentages,
createSummary,
createSummaryEdge,
loadSummaryByDate,
Expand All @@ -19,6 +20,11 @@ const updateThirtyDays = (
startDate: 'thirty_days',
})

const categoryPercentages = calculatePercentages(
currentSummary.categoryTotals,
)
currentSummary.categoryPercentages = categoryPercentages

const summaryDBInfo = await createSummary({ currentSummary })

await createSummaryEdge({
Expand Down
2 changes: 2 additions & 0 deletions services/dmarc-report/src/index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
const database = require('./database')
const loaders = require('./loaders')
const { arrayEquals } = require('./array-equals')
const { calculatePercentages } = require('./calculate-percentages')

module.exports = {
...database,
...loaders,
arrayEquals,
calculatePercentages,
}