diff --git a/src/test/query.js b/src/test/query.js
new file mode 100644
index 0000000000000000000000000000000000000000..cd39c76518060522c283059a66b1ac1394396c2f
--- /dev/null
+++ b/src/test/query.js
@@ -0,0 +1,81 @@
+process.env.NODE_ENV = 'test';
+
+const chai = require('chai');
+
+const dirtyChai = require('dirty-chai');
+
+chai.use(dirtyChai);
+
+const chaiXml = require('chai-xml');
+
+chai.use(chaiXml);
+
+const chaiHttp = require('chai-http');
+
+const assert = chai.assert;
+
+const expect = chai.expect;
+
+const should = chai.should(); // actually call the function
+
+const libs = `${process.cwd()}/libs`;
+
+const server = require(`${libs}/app`);
+
+const query = require(`${libs}/middlewares/query`);
+
+const squel = require('squel');
+
+chai.use(chaiHttp);
+
+describe('Query middleware', () => {
+    let req, res;
+    it('should return a function', (done) => {
+        expect(query).to.be.a.Function;
+        done();
+    });
+
+    it('should accept three arguments', function(done) {
+      expect(query.length).to.equal(3);
+      done();
+    });
+
+    it('should do a valid query', (done) => {
+        let req = {
+            sql: squel.select().field('1+2')
+        };
+        let res = {};
+        query(req, {},  (error)=>{
+            if (error) { throw new Error('Expected not to receive an error'); }
+            req.should.have.property('result');
+            req.result.should.not.be.undefined;
+            req.result[0].should.have.property('sql_add_single_value');
+            req.result[0].sql_add_single_value.should.be.equal(3);
+            done();
+        });
+    });
+
+    it('should return an error with an invalid query', (done) => {
+        let req = {
+            sql: squel.select()
+        };
+        let res = {};
+        query(req, {},  (error)=>{
+            if (error) { done();}
+        });
+    });
+
+    it('should return 404 with an empty query result', (done) => {
+        let req = {
+            sql: squel.select().field('*').from('regiao').where('pk_regiao_id>6')
+        };
+        let res = {};
+        query(req, {},  (error)=>{
+            error.should.have.property('status');
+            error.status.should.be.equal(404);
+            error.should.have.property('message');
+            error.message.should.be.equal('Not Found');
+            done();
+        });
+    });
+});