diff --git a/src/test/class.js b/src/test/class.js
index 8b6039ccf3131139fe4f85fbe50861f52b653b66..ef5254f45d847a568c17b31afafc8119273cb50e 100644
--- a/src/test/class.js
+++ b/src/test/class.js
@@ -38,6 +38,19 @@ describe('request class', () => {
             });
     });
 
+    it('should list the source', (done) => {
+        chai.request(server)
+            .get('/api/v1/class/source')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('source');
+                done();
+            });
+    });
+
     it('should list the rural locations', (done) => {
         chai.request(server)
             .get('/api/v1/class/rural_location')
@@ -122,6 +135,20 @@ describe('request class', () => {
             });
     });
 
+    it('should list the periods', (done) => {
+        chai.request(server)
+            .get('/api/v1/class/integral_time')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('id');
+                res.body.result[0].should.have.property('name');
+                done();
+            });
+    });
+
     it('should list class', (done) => {
         chai.request(server)
             .get('/api/v1/class')
diff --git a/src/test/classroom.js b/src/test/classroom.js
index 08950d6875fb2bda4562943ef9be6177f748814a..9a6fd00a18afe4f1c584bea4f033dd0dcb3a84a6 100644
--- a/src/test/classroom.js
+++ b/src/test/classroom.js
@@ -109,6 +109,32 @@ describe('request classrooms', () => {
             });
     });
 
+    it('should list classrooms with year range', (done) => {
+        chai.request(server)
+            .get('/api/v1/classroom/years')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
+    it('should list classrooms with year range', (done) => {
+        chai.request(server)
+            .get('/api/v1/classroom/source')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('source');
+                done();
+            });
+    });
+
     it('should list classrooms with valid filters', (done) => {
         chai.request(server)
             .get('/api/v1/classroom?filter=region:4')
diff --git a/src/test/enrollment.js b/src/test/enrollment.js
index 7a3ffaeae8197d7ea2915a3e35a2aab5c6b76dfc..997e5f70077c2d4b008845d33f452e0b7a9df679 100644
--- a/src/test/enrollment.js
+++ b/src/test/enrollment.js
@@ -38,6 +38,32 @@ describe('request enrollments', () => {
             });
     });
 
+    it('should list the source', (done) => {
+        chai.request(server)
+            .get('/api/v1/enrollment/source')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('source');
+                done();
+            });
+    });
+
+    it('should list the years', (done) => {
+        chai.request(server)
+            .get('/api/v1/enrollment/years')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
     it('should list the locations', (done) => {
         chai.request(server)
             .get('/api/v1/enrollment/location')
diff --git a/src/test/idhm.js b/src/test/idhm.js
index 3b6eae6b5d655115f7faca5d0fe27898327d4d44..cea8893e9a4bbe92b6028615f3c8c841d9abdca1 100644
--- a/src/test/idhm.js
+++ b/src/test/idhm.js
@@ -38,6 +38,56 @@ describe('request idhm', () => {
             });
     });
 
+    it('should list the year range', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhm/years')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
+    it('should list the idhm levels', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhm/idhm_level')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('id');
+                res.body.result[0].should.have.property('name');
+                done();
+            });
+    });
+
+    it('should list the source', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhm/source')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('source');
+                done();
+            });
+    });
+
+    it('should return 400 with no filters', function (done) {
+        chai.request(server).get('/api/v1/idhm').end(function (err, res) {
+            res.should.have.status(400);
+            res.should.be.json;
+            res.body.should.have.property('error');
+            res.body.error.should.be.equal('Wrong/No filter specified');
+            done();
+        });
+    });
+
     it('should list idhm with valid filters', (done) => {
         chai.request(server)
             .get('/api/v1/idhm?filter=min_year:2000,state:41')
@@ -72,6 +122,22 @@ describe('request idhm', () => {
             });
     });
 
+    it('should list idhm with valid dims', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhm?dims=state')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                res.body.result[0].should.have.property('state_id');
+                res.body.result[0].should.have.property('state_name');
+                done();
+            });
+    });
+
     it('should list idhm with valid filtes and dims', (done) => {
         chai.request(server)
             .get('/api/v1/idhm?filter=state:41&dims=idhm_level')
@@ -90,4 +156,39 @@ describe('request idhm', () => {
             })
     });
 
+    it('should list idhm with valid filtes and dims', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhm?filter=city:4100202')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                res.body.result[0].should.have.property('city_id');
+                res.body.result[0].should.have.property('state_id');
+                res.body.result[0].should.have.property('state_name');
+                done();
+            })
+    });
+
+    it('should list idhm with valid filtes and dims', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhm?dims=idhm_level,state')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                res.body.result[0].should.have.property('state_id');
+                res.body.result[0].should.have.property('state_name');
+                res.body.result[0].should.have.property('idhm_level_name');
+                res.body.result[0].should.have.property('idhm_level_id');
+                done();
+            })
+    });
+
 });
diff --git a/src/test/idhme.js b/src/test/idhme.js
index 4962c8a68b3ca9a42d32ecb2554496f4384667f1..dc338d38adbbb0ce8362a0a9f1e950671b49295b 100644
--- a/src/test/idhme.js
+++ b/src/test/idhme.js
@@ -51,6 +51,19 @@ describe('request idhme', () => {
             });
     });
 
+    it('should list the source', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhme/source')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('source');
+                done();
+            });
+    });
+
     it('should list idhme with valid filters', (done) => {
         chai.request(server)
             .get('/api/v1/idhme?filter=min_year:2000,state:41')
diff --git a/src/test/idhml.js b/src/test/idhml.js
index 9ddf8f345f78b8732ef6228659fb22190f9787c2..90312b0684f5b033d98e4f1b281a5e716a372cbd 100644
--- a/src/test/idhml.js
+++ b/src/test/idhml.js
@@ -51,6 +51,19 @@ describe('request idhml', () => {
             });
     });
 
+    it('should list the source', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhml/source')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('source');
+                done();
+            });
+    });
+
     it('should list idhml with valid filters', (done) => {
         chai.request(server)
             .get('/api/v1/idhml?filter=min_year:2000,state:41')
diff --git a/src/test/idhmr.js b/src/test/idhmr.js
index 3a7370658adc8d9313739dc60f5f776a7c7def46..eb06b37d0da0e2c5b03cf245906a4edb4e3c035e 100644
--- a/src/test/idhmr.js
+++ b/src/test/idhmr.js
@@ -24,68 +24,115 @@ const server = require(`${libs}/app`);
 
 chai.use(chaiHttp);
 describe('request idhmr', () => {
-  it('should list the year range', (done) => {
-      chai.request(server)
-          .get('/api/v1/idhmr/year_range')
-          .end((err, res) => {
-              res.should.have.status(200);
-              res.should.be.json;
-              res.body.should.have.property('result');
-              res.body.result.should.be.a('array');
-              res.body.result[0].should.have.property('start_year');
-              res.body.result[0].should.have.property('end_year');
-              done();
-          });
-  });
-
-  it('should list idhmr with valid filters', (done) => {
-      chai.request(server)
-          .get('/api/v1/idhmr?filter=min_year:2000,state:41')
-          .end((err, res) => {
-              res.should.have.status(200);
-              res.should.be.json;
-              res.body.should.have.property('result');
-              res.body.result.should.be.a('array');
-              res.body.result[0].should.have.property('total');
-              res.body.result[0].should.have.property('year');
-              res.body.result[0].should.have.property('state_id');
-              res.body.result[0].should.have.property('state_name');
-              done();
-          });
-  });
-
-  it('should list idhmr with valid dims', (done) => {
-      chai.request(server)
-          .get('/api/v1/idhmr?dims=state')
-          .end((err, res) => {
-              res.should.have.status(200);
-              res.should.be.json;
-              res.body.should.have.property('result');
-              res.body.result.should.be.a('array');
-              res.body.result[0].should.have.property('total');
-              res.body.result[0].should.have.property('year');
-              res.body.result[0].should.have.property('state_id');
-              res.body.result[0].should.have.property('state_name');
-              done();
-          });
-  });
-
-  it('should list idhmr with valid filtes and dims', (done) => {
-      chai.request(server)
-          .get('/api/v1/idhm?filter=state:41&dims=city')
-          .end((err, res) => {
-              res.should.have.status(200);
-              res.should.be.json;
-              res.body.should.have.property('result');
-              res.body.result.should.be.a('array');
-              res.body.result[0].should.have.property('total');
-              res.body.result[0].should.have.property('year');
-              res.body.result[0].should.have.property('city_id');
-              res.body.result[0].should.have.property('state_id');
-              res.body.result[0].should.have.property('city_name');
-              res.body.result[0].should.have.property('state_name');
-              done();
-          })
-  });
+    it('should list the year range', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhmr/year_range')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('start_year');
+                res.body.result[0].should.have.property('end_year');
+                done();
+            });
+    });
+
+    it('should list the source', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhmr/source')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('source');
+                done();
+            });
+    });
+
+    it('should list the available years', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhmr/years')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
+    it('should list idhmr with valid filters', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhmr?filter=min_year:2000,state:41')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                res.body.result[0].should.have.property('state_id');
+                done();
+            });
+    });
+
+    it('should list idhmr with invalid filters', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhmr?filter=foo:2010,bar:41')
+            .end((err, res) => {
+                res.should.have.status(400);
+                res.should.be.json;
+                res.body.should.have.property('error');
+                res.body.error.should.be.equal('Wrong/No filter specified');
+                done();
+            });
+    });
+
+    it('should list idhmr with valid dimensions', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhmr?dims=state&filter=min_year:2010')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                res.body.result[0].should.have.property('state_id');
+                res.body.result[0].should.have.property('state_name');
+                done();
+            });
+    });
+
+    it('should list idhmr with valid filters and dimensions', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhmr?filter=state:41,min_year:2010&dims=city')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                res.body.result[0].should.have.property('city_id');
+                res.body.result[0].should.have.property('city_name');
+                done();
+            });
+    });
+
+    it('should return 400 with no filters', (done) => {
+        chai.request(server)
+            .get('/api/v1/idhmr')
+            .end((err, res) => {
+                res.should.have.status(400);
+                res.should.be.json;
+                res.body.should.have.property('error');
+                res.body.error.should.be.equal('Wrong/No filter specified');
+                done();
+            });
+    });
 
 });
diff --git a/src/test/infrastructure.js b/src/test/infrastructure.js
new file mode 100644
index 0000000000000000000000000000000000000000..38dee0e203238b729975346d26cb9a731de4afd6
--- /dev/null
+++ b/src/test/infrastructure.js
@@ -0,0 +1,122 @@
+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`);
+
+chai.use(chaiHttp);
+describe('request idhme', () => {
+    it('should list default query infrastructure', (done) => {
+        chai.request(server)
+            .get('/api/v1/infrastructure')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('school_place');
+                done();
+            });
+    });
+
+    it('should list the year range', (done) => {
+        chai.request(server)
+            .get('/api/v1/infrastructure/years')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
+    it('should list the source', (done) => {
+        chai.request(server)
+            .get('/api/v1/infrastructure/source')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('source');
+                done();
+            });
+    });
+
+    it('should list the locations detailed', (done) => {
+        chai.request(server)
+            .get('/api/v1/infrastructure/location_detailed')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('id');
+                res.body.result[0].should.have.property('name');
+                done();
+            });
+    });
+
+    it('should list the locations', (done) => {
+        chai.request(server)
+            .get('/api/v1/infrastructure/location')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('id');
+                res.body.result[0].should.have.property('name');
+                done();
+            });
+    });
+
+    it('should list the source', (done) => {
+        chai.request(server)
+            .get('/api/v1/infrastructure/adm_dependency_detailed')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('id');
+                res.body.result[0].should.have.property('name');
+                done();
+            });
+    });
+
+    it('should list the source', (done) => {
+        chai.request(server)
+            .get('/api/v1/infrastructure/adm_dependency')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('id');
+                res.body.result[0].should.have.property('name');
+                done();
+            });
+    });
+
+});
diff --git a/src/test/pibpercapita.js b/src/test/pibpercapita.js
new file mode 100644
index 0000000000000000000000000000000000000000..ca679a3440343110d92757fe9c0da05fd7d29b6b
--- /dev/null
+++ b/src/test/pibpercapita.js
@@ -0,0 +1,102 @@
+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`);
+
+chai.use(chaiHttp);
+describe('request pibpercapita', () => {
+    it('should list the year range', (done) => {
+        chai.request(server)
+            .get('/api/v1/pibpercapita/year_range')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('start_year');
+                res.body.result[0].should.have.property('end_year');
+                done();
+            });
+    });
+
+    it('should list the year range', (done) => {
+        chai.request(server)
+            .get('/api/v1/pibpercapita/years')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
+    it('should list the pib to state', (done) => {
+        chai.request(server)
+            .get('/api/v1/pibpercapita?filter=state:41')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
+    it('should list the list pib to state and income level', (done) => {
+        chai.request(server)
+            .get('/api/v1/pibpercapita?filter=state:41&dims=income_level')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                res.body.result[0].should.have.property('income_level_name');
+                res.body.result[0].should.have.property('income_level_id');
+                done();
+            });
+    });
+
+    city:4102802
+        it('should list the pib to city', (done) => {
+            chai.request(server)
+                .get('/api/v1/pibpercapita?filter=city=4102802')
+                .end((err, res) => {
+                    res.should.have.status(200);
+                    res.should.be.json;
+                    res.body.should.have.property('result');
+                    res.body.result.should.be.a('array');
+                    res.body.result[0].should.have.property('total');
+                    res.body.result[0].should.have.property('year');
+
+                    done();
+                });
+        });
+
+
+});
diff --git a/src/test/population.js b/src/test/population.js
new file mode 100644
index 0000000000000000000000000000000000000000..37be404fceaa84eb4e1b6d6a763096b2d557c675
--- /dev/null
+++ b/src/test/population.js
@@ -0,0 +1,126 @@
+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`);
+
+chai.use(chaiHttp);
+describe('request population', () => {
+    it('should list the year range', (done) => {
+        chai.request(server)
+            .get('/api/v1/population/year_range')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('start_year');
+                res.body.result[0].should.have.property('end_year');
+                done();
+            });
+    });
+
+    it('should list the year range', (done) => {
+        chai.request(server)
+            .get('/api/v1/population/years')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
+    it('should list default population', (done) => {
+        chai.request(server)
+            .get('/api/v1/population')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
+    it('should list default population', (done) => {
+        chai.request(server)
+            .get('/api/v1/population/city_size')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('id');
+                res.body.result[0].should.have.property('name');
+                done();
+            });
+    });
+
+    it('should list population with valid filters', (done) => {
+        chai.request(server)
+            .get('/api/v1/population?filter=state:41')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
+    it('should list population with valid filters', (done) => {
+        chai.request(server)
+            .get('/api/v1/population?filter=city:4102802')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
+    it('should list the city size dims', (done) => {
+        chai.request(server)
+            .get('/api/v1/population?dims=city_size')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('total');
+                res.body.result[0].should.have.property('year');
+                res.body.result[0].should.have.property('city_size_id');
+                res.body.result[0].should.have.property('city_size_name');
+                done();
+            });
+    });
+
+});
diff --git a/src/test/school.js b/src/test/school.js
index 7684e2737f9773551020ee976ade98f84d5fb2fb..266c542850095f1469d7952174af80e3a35d18e1 100644
--- a/src/test/school.js
+++ b/src/test/school.js
@@ -40,6 +40,20 @@ describe('request schools', () => {
             });
     });
 
+    it('should list a school by id', (done) => {
+        chai.request(server)
+            .get('/api/v1/school/source')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('source');
+                //res.body.result[0].should.have.property('nome_entidade');
+                done();
+            });
+    });
+
     it('should list all schools from a state', (done) => {
         chai.request(server)
             .get('/api/v1/school?filter=state:41')
diff --git a/src/test/state.js b/src/test/state.js
index df45900d8a1e897ffcf5080e663ad870dcc589e3..5cea7a4f69d6169208367df71571ebefa541a13a 100644
--- a/src/test/state.js
+++ b/src/test/state.js
@@ -72,6 +72,21 @@ describe('request states', () => {
             });
     });
 
+    it('should list states by region id', (done) => {
+        chai.request(server)
+            .get('/api/v1/state?filter=region:1,region:2')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('id');
+                res.body.result[0].should.have.property('region_id');
+                res.body.result[0].should.have.property('name');
+                done();
+            });
+    });
+
     it('should search for Paraná', (done) => {
         chai.request(server)
             .get('/api/v1/state?search=name:paran')
diff --git a/src/test/teacher.js b/src/test/teacher.js
index 645934d2f7e7b907530d68d0edc6adddc98ec42d..65c9d28dafe0667ee35a7a1597b3b0fe075a8be8 100644
--- a/src/test/teacher.js
+++ b/src/test/teacher.js
@@ -38,6 +38,19 @@ describe('request teachers', () => {
             });
     });
 
+    it('should list the source', (done) => {
+        chai.request(server)
+            .get('/api/v1/teacher/source')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('source');
+                done();
+            });
+    });
+
     it('should list the locations', (done) => {
         chai.request(server)
             .get('/api/v1/teacher/location')
@@ -52,6 +65,19 @@ describe('request teachers', () => {
             });
     });
 
+    it('should list the locations', (done) => {
+        chai.request(server)
+            .get('/api/v1/teacher/years')
+            .end((err, res) => {
+                res.should.have.status(200);
+                res.should.be.json;
+                res.body.should.have.property('result');
+                res.body.result.should.be.a('array');
+                res.body.result[0].should.have.property('year');
+                done();
+            });
+    });
+
     it('should list the rural locations', (done) => {
         chai.request(server)
             .get('/api/v1/teacher/rural_location')