Skip to content

Commit 4ff22a3

Browse files
committed
test: more code coverage in DB and service/routes/repo
1 parent 734fc30 commit 4ff22a3

File tree

5 files changed

+310
-15
lines changed

5 files changed

+310
-15
lines changed

src/db/file/pushes.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ import { PushQuery } from '../types';
88

99
const COMPACTION_INTERVAL = 1000 * 60 * 60 * 24; // once per day
1010

11+
// these don't get coverage in tests as they have already been run once before the test
12+
/* istanbul ignore if */
1113
if (!fs.existsSync('./.data')) fs.mkdirSync('./.data');
14+
/* istanbul ignore if */
1215
if (!fs.existsSync('./.data/db')) fs.mkdirSync('./.data/db');
1316

1417
const db = new Datastore({ filename: './.data/db/pushes.db', autoload: true });
@@ -26,6 +29,8 @@ export const getPushes = (query: PushQuery) => {
2629
if (!query) query = defaultPushQuery;
2730
return new Promise((resolve, reject) => {
2831
db.find(query, (err: Error, docs: Action[]) => {
32+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
33+
/* istanbul ignore if */
2934
if (err) {
3035
reject(err);
3136
} else {
@@ -42,6 +47,8 @@ export const getPushes = (query: PushQuery) => {
4247
export const getPush = async (id: string) => {
4348
return new Promise<Action | null>((resolve, reject) => {
4449
db.findOne({ id: id }, (err, doc) => {
50+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
51+
/* istanbul ignore if */
4552
if (err) {
4653
reject(err);
4754
} else {
@@ -58,6 +65,8 @@ export const getPush = async (id: string) => {
5865
export const deletePush = async (id: string) => {
5966
return new Promise<void>((resolve, reject) => {
6067
db.remove({ id }, (err) => {
68+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
69+
/* istanbul ignore if */
6170
if (err) {
6271
reject(err);
6372
} else {
@@ -71,6 +80,8 @@ export const writeAudit = async (action: Action) => {
7180
return new Promise((resolve, reject) => {
7281
const options = { multi: false, upsert: true };
7382
db.update({ id: action.id }, action, options, (err) => {
83+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
84+
/* istanbul ignore if */
7485
if (err) {
7586
reject(err);
7687
} else {

src/db/file/repo.ts

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ import { Repo } from '../types';
44

55
const COMPACTION_INTERVAL = 1000 * 60 * 60 * 24; // once per day
66

7+
// these don't get coverage in tests as they have already been run once before the test
8+
/* istanbul ignore if */
79
if (!fs.existsSync('./.data')) fs.mkdirSync('./.data');
10+
/* istanbul ignore if */
811
if (!fs.existsSync('./.data/db')) fs.mkdirSync('./.data/db');
912

1013
const db = new Datastore({ filename: './.data/db/repos.db', autoload: true });
@@ -15,9 +18,14 @@ const isBlank = (str: string) => {
1518
return !str || /^\s*$/.test(str);
1619
};
1720

18-
export const getRepos = async (query: any = {}) => {
21+
export const getRepos = async (query: any = {}) => {
22+
if (query?.name) {
23+
query.name = query.name.toLowerCase();
24+
}
1925
return new Promise<Repo[]>((resolve, reject) => {
2026
db.find(query, (err: Error, docs: Repo[]) => {
27+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
28+
/* istanbul ignore if */
2129
if (err) {
2230
reject(err);
2331
} else {
@@ -28,9 +36,10 @@ export const getRepos = async (query: any = {}) => {
2836
};
2937

3038
export const getRepo = async (name: string) => {
31-
name = name.toLowerCase();
3239
return new Promise<Repo | null>((resolve, reject) => {
33-
db.findOne({ name }, (err: Error | null, doc: Repo) => {
40+
db.findOne({ name: name.toLowerCase() }, (err: Error | null, doc: Repo) => {
41+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
42+
/* istanbul ignore if */
3443
if (err) {
3544
reject(err);
3645
} else {
@@ -42,7 +51,6 @@ export const getRepo = async (name: string) => {
4251

4352
export const createRepo = async (repo: Repo) => {
4453
repo.name = repo.name.toLowerCase();
45-
console.log(`creating new repo ${JSON.stringify(repo)}`);
4654

4755
if (isBlank(repo.project)) {
4856
throw new Error('Project name cannot be empty');
@@ -61,10 +69,11 @@ export const createRepo = async (repo: Repo) => {
6169

6270
return new Promise<Repo>((resolve, reject) => {
6371
db.insert(repo, (err, doc) => {
72+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
73+
/* istanbul ignore if */
6474
if (err) {
6575
reject(err);
6676
} else {
67-
console.log(`created new repo ${JSON.stringify(repo)}`);
6877
resolve(doc);
6978
}
7079
});
@@ -89,6 +98,8 @@ export const addUserCanPush = async (name: string, user: string) => {
8998

9099
const options = { multi: false, upsert: false };
91100
db.update({ name: name }, repo, options, (err) => {
101+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
102+
/* istanbul ignore if */
92103
if (err) {
93104
reject(err);
94105
} else {
@@ -117,6 +128,8 @@ export const addUserCanAuthorise = async (name: string, user: string) => {
117128

118129
const options = { multi: false, upsert: false };
119130
db.update({ name: name }, repo, options, (err) => {
131+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
132+
/* istanbul ignore if */
120133
if (err) {
121134
reject(err);
122135
} else {
@@ -176,6 +189,8 @@ export const deleteRepo = async (name: string) => {
176189
name = name.toLowerCase();
177190
return new Promise<void>((resolve, reject) => {
178191
db.remove({ name: name }, (err) => {
192+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
193+
/* istanbul ignore if */
179194
if (err) {
180195
reject(err);
181196
} else {

src/db/file/users.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ import { User } from '../types';
44

55
const COMPACTION_INTERVAL = 1000 * 60 * 60 * 24; // once per day
66

7+
// these don't get coverage in tests as they have already been run once before the test
8+
/* istanbul ignore if */
79
if (!fs.existsSync('./.data')) fs.mkdirSync('./.data');
10+
/* istanbul ignore if */
811
if (!fs.existsSync('./.data/db')) fs.mkdirSync('./.data/db');
912

1013
const db = new Datastore({ filename: './.data/db/users.db', autoload: true });
@@ -17,6 +20,8 @@ db.setAutocompactionInterval(COMPACTION_INTERVAL);
1720
export const findUser = (username: string) => {
1821
return new Promise<User | null>((resolve, reject) => {
1922
db.findOne({ username: username.toLowerCase() }, (err: Error | null, doc: User) => {
23+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
24+
/* istanbul ignore if */
2025
if (err) {
2126
reject(err);
2227
} else {
@@ -33,6 +38,8 @@ export const findUser = (username: string) => {
3338
export const findUserByOIDC = function (oidcId: string) {
3439
return new Promise((resolve, reject) => {
3540
db.findOne({ oidcId: oidcId }, (err, doc) => {
41+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
42+
/* istanbul ignore if */
3643
if (err) {
3744
reject(err);
3845
} else {
@@ -51,6 +58,8 @@ export const createUser = function (user: User) {
5158
user.email = user.email.toLowerCase();
5259
return new Promise((resolve, reject) => {
5360
db.insert(user, (err) => {
61+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
62+
/* istanbul ignore if */
5463
if (err) {
5564
reject(err);
5665
} else {
@@ -63,6 +72,8 @@ export const createUser = function (user: User) {
6372
export const deleteUser = (username: string) => {
6473
return new Promise<void>((resolve, reject) => {
6574
db.remove({ username: username.toLowerCase() }, (err) => {
75+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
76+
/* istanbul ignore if */
6677
if (err) {
6778
reject(err);
6879
} else {
@@ -82,6 +93,8 @@ export const updateUser = (user: User) => {
8293
// hence, retrieve and merge documents to avoid dropping fields (such as the gitaccount)
8394
let existingUser;
8495
db.findOne({ username: user.username }, (err, doc) => {
96+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
97+
/* istanbul ignore if */
8598
if (err) {
8699
reject(err);
87100
} else {
@@ -95,6 +108,8 @@ export const updateUser = (user: User) => {
95108

96109
const options = { multi: false, upsert: true };
97110
db.update({ username: user.username }, existingUser, options, (err) => {
111+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
112+
/* istanbul ignore if */
98113
if (err) {
99114
reject(err);
100115
} else {
@@ -107,10 +122,16 @@ export const updateUser = (user: User) => {
107122
};
108123

109124
export const getUsers = (query: any = {}) => {
110-
if (query.username) { query.username = query.username.toLowerCase(); }
111-
if (query.email) { query.email = query.email.toLowerCase(); }
125+
if (query.username) {
126+
query.username = query.username.toLowerCase();
127+
}
128+
if (query.email) {
129+
query.email = query.email.toLowerCase();
130+
}
112131
return new Promise<User[]>((resolve, reject) => {
113132
db.find(query, (err: Error, docs: User[]) => {
133+
// ignore for code coverage as neDB rarely returns errors even for an invalid query
134+
/* istanbul ignore if */
114135
if (err) {
115136
reject(err);
116137
} else {

test/addRepoTest.test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,18 @@ describe('add new repo', async () => {
5656
repo.users.canAuthorise.length.should.equal(0);
5757
});
5858

59+
it('filter repos', async function () {
60+
const res = await chai
61+
.request(app)
62+
.get('/api/v1/repo')
63+
.set('Cookie', `${cookie}`)
64+
.query({ name: 'test-repo' });
65+
res.should.have.status(200);
66+
res.body[0].project.should.equal('finos');
67+
res.body[0].name.should.equal('test-repo');
68+
res.body[0].url.should.equal('https://github.com/finos/test-repo.git');
69+
});
70+
5971
it('add 1st can push user', async function () {
6072
const res = await chai
6173
.request(app)

0 commit comments

Comments
 (0)