Skip to content

Commit 558d1af

Browse files
fixup! return errors instead of throw them.
Improve tests
1 parent f50538f commit 558d1af

File tree

2 files changed

+53
-15
lines changed

2 files changed

+53
-15
lines changed

plugins/pangea/pangea.test.ts

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ const options = {
77

88
describe('textGuardContentHandler', () => {
99
it('should return an error if hook type is not supported', async () => {
10-
const context = {};
10+
const context = {
11+
request: { text: 'this is a test string for moderations' },
12+
};
1113
const eventType = 'unsupported';
1214
const parameters = {};
1315
const result = await textGuardContentHandler(
@@ -18,52 +20,60 @@ describe('textGuardContentHandler', () => {
1820
options
1921
);
2022
expect(result.error).toBeDefined();
21-
expect(result.verdict).toBe(false);
23+
expect(result.verdict).toBe(true);
2224
expect(result.data).toBeNull();
2325
});
2426

2527
it('should return an error if fetch request fails', async () => {
26-
const context = {};
28+
const context = {
29+
request: { text: 'this is a test string for moderations' },
30+
};
2731
const eventType = 'beforeRequestHook';
28-
const parameters = { token: 'test', domain: testCreds.domain };
32+
const parameters = {
33+
credentials: { apiKey: 'test', domain: testCreds.domain },
34+
};
2935
const result = await textGuardContentHandler(
3036
context,
3137
parameters,
3238
eventType,
3339
options
3440
);
3541
expect(result.error).toBeDefined();
36-
expect(result.verdict).toBeFalsy();
42+
expect(result.verdict).toBe(false);
3743
expect(result.data).toBeNull();
3844
});
3945

4046
it('should return an error if no apiKey', async () => {
41-
const context = {};
47+
const context = {
48+
request: { text: 'this is a test string for moderations' },
49+
};
4250
const eventType = 'beforeRequestHook';
43-
const parameters = { domain: testCreds.domain };
51+
const parameters = { credentials: { domain: testCreds.domain } };
4452
const result = await textGuardContentHandler(
4553
context,
4654
parameters,
4755
eventType,
4856
options
4957
);
5058
expect(result.error).toBeDefined();
51-
expect(result.verdict).toBeFalsy();
59+
expect(result.verdict).toBe(true);
5260
expect(result.data).toBeNull();
5361
});
5462

5563
it('should return an error if no domain', async () => {
56-
const context = {};
64+
const context = {
65+
request: { text: 'this is a test string for moderations' },
66+
};
5767
const eventType = 'beforeRequestHook';
58-
const parameters = { apiKey: testCreds.apiKey };
68+
const parameters = { credentials: { apiKey: testCreds.apiKey } };
5969
const result = await textGuardContentHandler(
6070
context,
6171
parameters,
6272
eventType,
6373
options
6474
);
6575
expect(result.error).toBeDefined();
66-
expect(result.verdict).toBeFalsy();
76+
expect(result.verdict).toBe(true);
6777
expect(result.data).toBeNull();
6878
});
6979

@@ -83,7 +93,7 @@ describe('textGuardContentHandler', () => {
8393
);
8494
expect(result.error).toBeNull();
8595
expect(result.verdict).toBeDefined();
86-
expect(result.verdict).toBeTruthy();
96+
expect(result.verdict).toBe(true);
8797
expect(result.data).toBeDefined();
8898
});
8999

@@ -104,7 +114,27 @@ describe('textGuardContentHandler', () => {
104114
options
105115
);
106116
expect(result.error).toBeNull();
107-
expect(result.verdict).toBeFalsy();
117+
expect(result.verdict).toBe(false);
108118
expect(result.data).toBeDefined();
109119
});
120+
121+
it('should return true verdict and error if no text', async () => {
122+
const context = {
123+
request: { text: '' },
124+
};
125+
const eventType = 'beforeRequestHook';
126+
const parameters = {
127+
credentials: testCreds,
128+
};
129+
const result = await textGuardContentHandler(
130+
context,
131+
parameters,
132+
eventType,
133+
options
134+
);
135+
expect(result.error).toBeDefined();
136+
expect(result.verdict).toBeDefined();
137+
expect(result.verdict).toBe(true);
138+
expect(result.data).toBeNull();
139+
});
110140
});

plugins/pangea/textGuard.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,19 @@ export const handler: PluginHandler = async (
1818
let data = null;
1919
try {
2020
if (!parameters.credentials?.domain) {
21-
throw Error(`'parameters.credentials.domain' must be set`);
21+
return {
22+
error: `'parameters.credentials.domain' must be set`,
23+
verdict: true,
24+
data,
25+
};
2226
}
2327

2428
if (!parameters.credentials?.apiKey) {
25-
throw Error(`'parameters.credentials.apiKey' must be set`);
29+
return {
30+
error: `'parameters.credentials.apiKey' must be set`,
31+
verdict: true,
32+
data,
33+
};
2634
}
2735

2836
// TODO: Update to v1 once released

0 commit comments

Comments
 (0)