Skip to content

Commit cf1855a

Browse files
feat: use specific POCO_SUBGRAPH_URL by environment
1 parent bb12cb1 commit cf1855a

File tree

8 files changed

+39
-5
lines changed

8 files changed

+39
-5
lines changed

.github/workflows/dapp-ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ jobs:
4848
MJ_SENDER: ${{ secrets.MAILJET_SENDER }}
4949
MAILGUN_APIKEY: ${{ secrets.MAILGUN_APIKEY }}
5050
WEB3MAIL_WHITELISTED_APPS: ${{ vars.WEB3MAIL_WHITELISTED_APPS }}
51+
POCO_SUBGRAPH_URL: ${{ vars.POCO_SUBGRAPH_URL }}
5152
steps:
5253
- uses: actions/checkout@v4
5354

.github/workflows/dapp-deploy.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ jobs:
128128
MJ_SENDER: ${{ secrets.MAILJET_SENDER }}
129129
MAILGUN_APIKEY: ${{ secrets.MAILGUN_APIKEY }}
130130
WEB3MAIL_WHITELISTED_APPS: ${{ vars.WEB3MAIL_WHITELISTED_APPS }}
131+
POCO_SUBGRAPH_URL: ${{ vars.POCO_SUBGRAPH_URL }}
131132
RPC_URL: ${{ secrets.RPC_URL }}
132133
run: |
133134
cd deployment-dapp

dapp/src/checkEmailPreviousValidation.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
const { request, gql } = require('graphql-request');
22

3-
async function checkEmailPreviousValidation({ datasetAddress, dappAddresses }) {
4-
const pocoSubgraphUrl =
5-
'https://thegraph.bellecour.iex.ec/subgraphs/name/bellecour/poco-v5';
6-
3+
async function checkEmailPreviousValidation({
4+
datasetAddress,
5+
dappAddresses,
6+
pocoSubgraphUrl,
7+
}) {
78
const query = gql`
89
query checkSuccessfulTaskQuery($apps: [String!], $dataset: String!) {
910
tasks(

dapp/src/sendEmail.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ async function start() {
7676
let isEmailValidated = await checkEmailPreviousValidation({
7777
datasetAddress: protectedData.email,
7878
dappAddresses: appDeveloperSecret.WEB3MAIL_WHITELISTED_APPS,
79+
pocoSubgraphUrl: appDeveloperSecret.POCO_SUBGRAPH_URL,
7980
});
8081

8182
// Step 2: If not, try Mailgun

dapp/src/validation.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const appSecretSchema = Joi.object({
2121
MJ_SENDER: Joi.string().email().required(),
2222
MAILGUN_APIKEY: Joi.string().required(),
2323
WEB3MAIL_WHITELISTED_APPS: Joi.array().items(Joi.string()).required(),
24+
POCO_SUBGRAPH_URL: Joi.string().uri().required(),
2425
});
2526

2627
function validateAppSecret(obj) {

dapp/tests/e2e/app.test.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ describe('sendEmail', () => {
2626
MAILGUN_APIKEY: 'xxx',
2727
WEB3MAIL_WHITELISTED_APPS:
2828
'["0xa638bf4665ce7bd7021a4a12416ea7a0a3272b6f"]',
29+
POCO_SUBGRAPH_URL: 'https://fake-poco.subgraph.iex.ec',
2930
});
3031
// requester secret setup
3132
process.env.IEXEC_REQUESTER_SECRET_1 = JSON.stringify({
@@ -54,6 +55,7 @@ describe('sendEmail', () => {
5455
MAILGUN_APIKEY: 'xxx',
5556
WEB3MAIL_WHITELISTED_APPS:
5657
'["0xa638bf4665ce7bd7021a4a12416ea7a0a3272b6f"]',
58+
POCO_SUBGRAPH_URL: 'https://fake-poco.subgraph.iex.ec',
5759
});
5860
await expect(() => start()).rejects.toThrow(
5961
Error('App secret error: "MJ_APIKEY_PUBLIC" is required')
@@ -69,6 +71,7 @@ describe('sendEmail', () => {
6971
MAILGUN_APIKEY: 'xxx',
7072
WEB3MAIL_WHITELISTED_APPS:
7173
'["0xa638bf4665ce7bd7021a4a12416ea7a0a3272b6f"]',
74+
POCO_SUBGRAPH_URL: 'https://fake-poco.subgraph.iex.ec',
7275
});
7376
await expect(() => start()).rejects.toThrow(
7477
Error('App secret error: "MJ_APIKEY_PRIVATE" is required')
@@ -84,6 +87,7 @@ describe('sendEmail', () => {
8487
MAILGUN_APIKEY: 'xxx',
8588
WEB3MAIL_WHITELISTED_APPS:
8689
'["0xa638bf4665ce7bd7021a4a12416ea7a0a3272b6f"]',
90+
POCO_SUBGRAPH_URL: 'https://fake-poco.subgraph.iex.ec',
8791
});
8892
await expect(() => start()).rejects.toThrow(
8993
Error('App secret error: "MJ_SENDER" is required')
@@ -99,6 +103,7 @@ describe('sendEmail', () => {
99103
MJ_SENDER: '[email protected]',
100104
WEB3MAIL_WHITELISTED_APPS:
101105
'["0xa638bf4665ce7bd7021a4a12416ea7a0a3272b6f"]',
106+
POCO_SUBGRAPH_URL: 'https://fake-poco.subgraph.iex.ec',
102107
});
103108
await expect(() => start()).rejects.toThrow(
104109
Error('App secret error: "MAILGUN_APIKEY" is required')
@@ -113,6 +118,7 @@ describe('sendEmail', () => {
113118
MJ_APIKEY_PRIVATE: 'xxx',
114119
MAILGUN_APIKEY: 'xxx',
115120
MJ_SENDER: '[email protected]',
121+
POCO_SUBGRAPH_URL: 'https://fake-poco.subgraph.iex.ec',
116122
});
117123
await expect(() => start()).rejects.toThrow(
118124
Error('App secret error: "WEB3MAIL_WHITELISTED_APPS" is required')
@@ -121,6 +127,22 @@ describe('sendEmail', () => {
121127
const out = await fsPromises.readdir(process.env.IEXEC_OUT);
122128
expect(out).toStrictEqual([]);
123129
});
130+
it('should fail if POCO_SUBGRAPH_URL in developer secret is missing', async () => {
131+
process.env.IEXEC_APP_DEVELOPER_SECRET = JSON.stringify({
132+
MJ_APIKEY_PUBLIC: 'xxx',
133+
MJ_APIKEY_PRIVATE: 'xxx',
134+
MAILGUN_APIKEY: 'xxx',
135+
MJ_SENDER: '[email protected]',
136+
WEB3MAIL_WHITELISTED_APPS:
137+
'["0xa638bf4665ce7bd7021a4a12416ea7a0a3272b6f"]',
138+
});
139+
await expect(() => start()).rejects.toThrow(
140+
Error('App secret error: "POCO_SUBGRAPH_URL" is required')
141+
);
142+
// output should be empty
143+
const out = await fsPromises.readdir(process.env.IEXEC_OUT);
144+
expect(out).toStrictEqual([]);
145+
});
124146
});
125147

126148
describe('with bad IEXEC_REQUESTER_SECRET_1', () => {
@@ -286,6 +308,7 @@ describe('sendEmail', () => {
286308
MAILGUN_APIKEY: 'fake',
287309
WEB3MAIL_WHITELISTED_APPS:
288310
'["0xa638bf4665ce7bd7021a4a12416ea7a0a3272b6f"]',
311+
POCO_SUBGRAPH_URL: 'https://fake-poco.subgraph.iex.ec',
289312
});
290313
// check the error is not an email validation error (mailgun validation is skipped, mailjet rejects)
291314
await expect(() => start()).rejects.toThrow(
@@ -303,6 +326,7 @@ describe('sendEmail', () => {
303326
MAILGUN_APIKEY: 'xxx',
304327
WEB3MAIL_WHITELISTED_APPS:
305328
'["0xa638bf4665ce7bd7021a4a12416ea7a0a3272b6f"]',
329+
POCO_SUBGRAPH_URL: 'https://fake-poco.subgraph.iex.ec',
306330
});
307331
await expect(() => start()).rejects.toThrow(
308332
Error('Failed to send email')

dapp/tests/unit/validation.test.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ describe('validateAppSecret function', () => {
3232
WEB3MAIL_WHITELISTED_APPS: JSON.parse(
3333
'["0xa638bf4665ce7bd7021a4a12416ea7a0a3272b6f"]'
3434
),
35+
POCO_SUBGRAPH_URL: 'https://fake-poco.subgraph.iex.ec',
3536
})
3637
).not.toThrow();
3738
});
@@ -94,10 +95,11 @@ describe('validateAppSecret function', () => {
9495
MJ_SENDER: 'foo',
9596
MAILGUN_APIKEY: '',
9697
WEB3MAIL_WHITELISTED_APPS: '[4]',
98+
POCO_SUBGRAPH_URL: 'not-a-url',
9799
})
98100
).toThrow(
99101
Error(
100-
'App secret error: "MJ_APIKEY_PUBLIC" must be a string; "MJ_APIKEY_PRIVATE" is not allowed to be empty; "MJ_SENDER" must be a valid email; "MAILGUN_APIKEY" is not allowed to be empty; "WEB3MAIL_WHITELISTED_APPS" must be an array'
102+
'App secret error: "MJ_APIKEY_PUBLIC" must be a string; "MJ_APIKEY_PRIVATE" is not allowed to be empty; "MJ_SENDER" must be a valid email; "MAILGUN_APIKEY" is not allowed to be empty; "WEB3MAIL_WHITELISTED_APPS" must be an array; "POCO_SUBGRAPH_URL" must be a valid uri'
101103
)
102104
);
103105
});

deployment-dapp/src/pushSecretScript.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const main = async () => {
1010
MJ_SENDER,
1111
MAILGUN_APIKEY,
1212
WEB3MAIL_WHITELISTED_APPS,
13+
POCO_SUBGRAPH_URL,
1314
} = process.env;
1415

1516
if (!WALLET_PRIVATE_KEY)
@@ -20,6 +21,7 @@ const main = async () => {
2021
if (!MAILGUN_APIKEY) throw Error('Missing env MAILGUN_APIKEY');
2122
if (WEB3MAIL_WHITELISTED_APPS === undefined)
2223
throw Error('Missing env WEB3MAIL_WHITELISTED_APPS');
24+
if (!POCO_SUBGRAPH_URL) throw Error('Missing env POCO_SUBGRAPH_URL');
2325

2426
if (!WALLET_PRIVATE_KEY)
2527
throw Error(`Missing WALLET_PRIVATE_KEY environment variable`);
@@ -40,6 +42,7 @@ const main = async () => {
4042
MJ_SENDER,
4143
MAILGUN_APIKEY,
4244
WEB3MAIL_WHITELISTED_APPS: JSON.stringify(fullWhitelistedApps),
45+
POCO_SUBGRAPH_URL,
4346
});
4447

4548
await pushSecret(iexec, appAddress, jsonSecret);

0 commit comments

Comments
 (0)