UNPKG

virus-nsfw

Version:

A simplified wrapper around Clarifai's NSFW detection.

91 lines (69 loc) 4.49 kB
// dataParser & testMIMEType test script for use with Mocha var expect = require("chai").expect; var dataParser = require("../lib/dataparser"); var testMIMEType = require("../lib/mimetype"); describe("dataParser", function() { it("should process a Base64 Data URL", function() { var testBase64 = "aGVsbG8hIHRoYW5rcyBmb3IgcHV0dGluZyBpbiBlZmZvcnQgdG8gZGVjb2RpbmcgdGhpcywgYnV0IHlvdSdyZSB3YXN0aW5nIHRpbWUuLi4gZ290dGEgYmUgcHJvZHVjdGl2ZSEgOikgOykgKGFsc28gSSBrbm93IHRoaXMgaXMgbm90IGEgcmVhbCBpbWFnZSwgSSBkaWRuJ3QgbWVhbiBpdCB0byBiZSBvbmUuKQ=="; var dataURL = `data:image/png;base64,${testBase64}`; var testFunct = function() { return dataParser(dataURL); }; expect(testFunct).to.not.throw(Error); var testResult = testFunct(); expect(testResult).to.be.an("Object").and.to.haveOwnProperty("base64", testBase64); }); it("should filter non-supported Base64 Data URLs", function() { var testBase64 = "aGVsbG8hIHRoYW5rcyBmb3IgcHV0dGluZyBpbiBlZmZvcnQgdG8gZGVjb2RpbmcgdGhpcywgYnV0IHlvdSdyZSB3YXN0aW5nIHRpbWUuLi4gZ290dGEgYmUgcHJvZHVjdGl2ZSEgOikgOykgKGFsc28gSSBrbm93IHRoaXMgaXMgbm90IGEgcmVhbCBpbWFnZSwgSSBkaWRuJ3QgbWVhbiBpdCB0byBiZSBvbmUuKQ=="; var dataURL = `data:text/html;base64,${testBase64}`; var testFunct = function() { return dataParser(dataURL); }; expect(testFunct).to.throw(TypeError); }); it("should detect video Base64 Data URLs", function() { var testBase64 = "aGVsbG8hIHRoYW5rcyBmb3IgcHV0dGluZyBpbiBlZmZvcnQgdG8gZGVjb2RpbmcgdGhpcywgYnV0IHlvdSdyZSB3YXN0aW5nIHRpbWUuLi4gZ290dGEgYmUgcHJvZHVjdGl2ZSEgOikgOykgKGFsc28gSSBrbm93IHRoaXMgaXMgbm90IGEgcmVhbCBpbWFnZSwgSSBkaWRuJ3QgbWVhbiBpdCB0byBiZSBvbmUuKQ=="; var dataURL = `data:video/mp4;base64,${testBase64}`; var testFunct = function() { return dataParser(dataURL); }; expect(testFunct).to.not.throw(Error); var testResult = testFunct(); expect(testResult).to.be.an("Object").and.to.haveOwnProperty("video", true); testBase64 = "aGVsbG8hIHRoYW5rcyBmb3IgcHV0dGluZyBpbiBlZmZvcnQgdG8gZGVjb2RpbmcgdGhpcywgYnV0IHlvdSdyZSB3YXN0aW5nIHRpbWUuLi4gZ290dGEgYmUgcHJvZHVjdGl2ZSEgOikgOykgKGFsc28gSSBrbm93IHRoaXMgaXMgbm90IGEgcmVhbCBpbWFnZSwgSSBkaWRuJ3QgbWVhbiBpdCB0byBiZSBvbmUuKQ=="; dataURL = `data:image/png;base64,${testBase64}`; testFunct = function() { return dataParser(dataURL); }; expect(testFunct).to.not.throw(Error); testResult = testFunct(); expect(testResult).to.be.an("Object").and.to.haveOwnProperty("video", false); }); it("should process Base64", function() { var testBase64 = "aGVsbG8hIHRoYW5rcyBmb3IgcHV0dGluZyBpbiBlZmZvcnQgdG8gZGVjb2RpbmcgdGhpcywgYnV0IHlvdSdyZSB3YXN0aW5nIHRpbWUuLi4gZ290dGEgYmUgcHJvZHVjdGl2ZSEgOikgOykgKGFsc28gSSBrbm93IHRoaXMgaXMgbm90IGEgcmVhbCBpbWFnZSwgSSBkaWRuJ3QgbWVhbiBpdCB0byBiZSBvbmUuKQ=="; var testFunct = function() { return dataParser(testBase64); }; expect(testFunct).to.not.throw(Error); var testResult = testFunct(); expect(testResult).to.be.an("Object").and.to.haveOwnProperty("base64", testBase64); }); it("should process URLs", function() { var testURL = "https://example.com/logo.png"; var testFunct = function() { return dataParser(testURL); }; expect(testFunct).to.not.throw(Error); var testResult = testFunct(); expect(testResult).to.equal(testURL); }); it("shouldn\'t accept nonsensical data", function() { var testData = "'+!'+!'+!'+!'?:'+?'!+'!+'??gdfgdfgdsfGDFgdsgdsf7576sw5fs"; var testFunct = function() { return dataParser(testData); }; expect(testFunct).to.throw(TypeError); }); }); describe("testMIMEType", function() { it("should filter disallowed MIME types", function() { expect(testMIMEType("text/html")).to.equal(false); }); it("should pass allowed MIME types", function() { expect(testMIMEType("image/png")).to.equal(true); expect(testMIMEType("image/jpeg")).to.equal(true); expect(testMIMEType("image/tiff")).to.equal(true); expect(testMIMEType("image/webp")).to.equal(true); expect(testMIMEType("image/gif")).to.equal(true); expect(testMIMEType("video/mp4")).to.equal(true); expect(testMIMEType("video/x-matroska")).to.equal(true); expect(testMIMEType("video/x-msvideo")).to.equal(true); expect(testMIMEType("video/quicktime")).to.equal(true); }); });