UNPKG

openhim-core

Version:

The OpenHIM core application that provides logging and routing of http requests

122 lines (93 loc) 4.72 kB
should = require 'should' fs = require "fs" tls = require 'tls' net = require 'net' dgram = require 'dgram' Audit = require('../../lib/model/audits').Audit server = require '../../lib/server' testUtils = require "../testUtils" testAuditMessage = require('../unit/auditingTest').testAuditMessage describe "Auditing Integration Tests", -> beforeEach (done) -> Audit.remove {}, -> server.start auditUDPPort: 5050, auditTlsPort: 5051, auditTcpPort: 5052, -> done() afterEach (done) -> server.stop -> done() before (done) -> testUtils.setupTestKeystore -> done() after (done) -> testUtils.cleanupTestKeystore -> done() describe "UDP Audit Server", -> it "should receive and persist audit messages", (done) -> client = dgram.createSocket('udp4') client.send testAuditMessage, 0, testAuditMessage.length, 5050, 'localhost', (err) -> client.close() return done err if err checkAudits = -> Audit.find {}, (err, audits) -> return done err if err # message fields already validate heavily in unit test, just perform basic check audits.length.should.be.exactly 2 # 1 extra due to automatic actor start audit audits[1].rawMessage.should.be.exactly testAuditMessage done() # async test :( setTimeout checkAudits, 100 * global.testTimeoutFactor describe "TLS Audit Server", -> it "should send TLS audit messages and save (valid)", (done) -> options = cert: fs.readFileSync "test/resources/trust-tls/cert1.pem" key: fs.readFileSync "test/resources/trust-tls/key1.pem" ca: [ fs.readFileSync "test/resources/server-tls/cert.pem" ] client = tls.connect 5051, 'localhost', options, -> messagePrependlength = "#{testAuditMessage.length} #{testAuditMessage}" client.write messagePrependlength, (err) -> return done err if err client.end() client.on 'end', -> checkAudits = -> Audit.find {}, (err, audits) -> return done err if err # message fields already validate heavily in unit test, just perform basic check audits.length.should.be.exactly 2 # 1 extra due to automatic actor start audit audits[1].rawMessage.should.be.exactly testAuditMessage done() setTimeout checkAudits, 100 * global.testTimeoutFactor it "should send TLS audit messages and NOT save (Invalid)", (done) -> options = cert: fs.readFileSync "test/resources/trust-tls/cert1.pem" key: fs.readFileSync "test/resources/trust-tls/key1.pem" ca: [ fs.readFileSync "test/resources/server-tls/cert.pem" ] client = tls.connect 5051, 'localhost', options, -> client.write testAuditMessage, (err) -> return done err if err client.end() client.on 'end', -> checkAudits = -> Audit.find {}, (err, audits) -> return done err if err # message fields already validate heavily in unit test, just perform basic check audits.length.should.be.exactly 1 # 1 extra due to automatic actor start audit done() setTimeout checkAudits, 100 * global.testTimeoutFactor describe "TCP Audit Server", -> it "should send TCP audit messages and save (valid)", (done) -> client = net.connect 5052, 'localhost', -> messagePrependlength = testAuditMessage.length + ' ' + testAuditMessage client.write messagePrependlength, (err) -> return done err if err client.end() client.on 'end', -> checkAudits = -> Audit.find {}, (err, audits) -> return done err if err # message fields already validate heavily in unit test, just perform basic check audits.length.should.be.exactly 2 # 1 extra due to automatic actor start audit audits[1].rawMessage.should.be.exactly testAuditMessage done() setTimeout checkAudits, 100 * global.testTimeoutFactor it "should send TCP audit message and NOT save (Invalid)", (done) -> client = net.connect 5052, 'localhost', -> # testAuditMessage does not have message length with space prepended client.write testAuditMessage, (err) -> return done err if err client.end() client.on 'end', -> checkAudits = -> Audit.find {}, (err, audits) -> return done err if err # message fields already validate heavily in unit test, just perform basic check audits.length.should.be.exactly 1 # 1 extra due to automatic actor start audit done() setTimeout checkAudits, 100 * global.testTimeoutFactor