Skip to content

Commit

Permalink
feat: add origins to psa pin request (#897)
Browse files Browse the repository at this point in the history
* feat: add origins to psa pin request

* chore: remove comment

* chore: remove only from test

* chore: add better name for test
  • Loading branch information
Alexandra Stoica authored Jan 26, 2022
1 parent a378c0d commit 0056679
Show file tree
Hide file tree
Showing 9 changed files with 258 additions and 41 deletions.
5 changes: 2 additions & 3 deletions packages/api/src/pins.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ async function createPin (normalizedCid, pinData, authTokenId, env, ctx) {
authKey: authTokenId,
meta: pinMeta,
name: pinName,
origins,
pins
}

Expand Down Expand Up @@ -399,9 +400,7 @@ function getPinStatus (pinRequest) {
created: pinRequest.created,
pin: {
cid: pinRequest.sourceCid,
name: pinRequest.name,
origins: [],
meta: pinRequest.meta
...pinRequest
},
// TODO(https://github.com/web3-storage/web3.storage/issues/792)
delegates: []
Expand Down
18 changes: 9 additions & 9 deletions packages/api/test/fixtures/init-data.sql
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,12 @@ VALUES ('bafybeid46f7zggioxjm5p2ze2l6s6wbqvoo4gzbdzfjtdosthmfyxdign4'),
('bafybeidqts3rbwkprggjojbvcxy4jzpgzgcvs4a73y3gx2jjxphjeerbcy');


INSERT INTO psa_pin_request (id, auth_key_id, content_cid, source_cid, meta, name, inserted_at, updated_at)
VALUES ('ab62cf3c-c98d-494b-a756-b3a3fb6ddcab', 3, 'bafybeid46f7zggioxjm5p2ze2l6s6wbqvoo4gzbdzfjtdosthmfyxdign4', 'bafybeid46f7zggioxjm5p2ze2l6s6wbqvoo4gzbdzfjtdosthmfyxdign4', null, 'ReportDoc.pdf', '2021-07-14T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('bebd5f62-1381-4124-93a1-1e4eeed52635', 3, 'bafybeig7yvw6a4uhio4pmg5gahyd2xumowkfljdukad7pmdsv5uk5zcseu', 'bafybeig7yvw6a4uhio4pmg5gahyd2xumowkfljdukad7pmdsv5uk5zcseu', '{"app_id": "99986338-1113-4706-8302-4420da6158aa"}', 'reportdoc.pdf', '2021-01-01T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('d9670c3b-179c-4799-b4fa-66e2bb82c84f', 3, 'bafybeia45bscvzxngto555xsel4gwoclb5fxd7zpxige7rl3maoleznswu', 'bafybeia45bscvzxngto555xsel4gwoclb5fxd7zpxige7rl3maoleznswu', null, 'Data', '2021-07-14T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('63992f6e-5bbf-4d01-8a69-9e0561c38b04', 3, 'bafybeidw7pc6nvm7u4rfhpctac4qgtpmwxapw4duugvsl3ppivvzibdlgy', 'bafybeidw7pc6nvm7u4rfhpctac4qgtpmwxapw4duugvsl3ppivvzibdlgy', null, 'Image.jpeg', '2021-07-14T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('3fa630f2-f22c-486f-ad1c-b36d4d740e31', 3, 'bafybeidrzt6t4k25qjeasydgi3fyh6ejos5x4d6tk2pdzxkb66bkomezy4', 'bafybeidrzt6t4k25qjeasydgi3fyh6ejos5x4d6tk2pdzxkb66bkomezy4', null, 'Image.png', '2021-07-14T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('5c7e7885-7f68-462d-bdfb-3f0abfb367b5', 3, 'bafybeifsrhq2qtkcgjt4gzi7rkafrv2gaai24ptt6rohe2ebqzydkz47sm', 'bafybeifsrhq2qtkcgjt4gzi7rkafrv2gaai24ptt6rohe2ebqzydkz47sm', null, 'Image.jpg', '2021-07-20T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('3a19e48d-d6db-4f36-b686-fb8bc37c9d48', 2, 'bafybeiaqu6ijhfhwzjipwesbqf4myz6uczyigahib5joqbo5jw2xmjczfa', 'bafybeiaqu6ijhfhwzjipwesbqf4myz6uczyigahib5joqbo5jw2xmjczfa', null, 'Image.jpg', '2021-07-20T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('9be23b92-918e-44b8-98f4-6043c346fb4e', 2, 'bafybeidqts3rbwkprggjojbvcxy4jzpgzgcvs4a73y3gx2jjxphjeerbcy', 'bafybeidqts3rbwkprggjojbvcxy4jzpgzgcvs4a73y3gx2jjxphjeerbcy', null, 'Image.jpg', '2021-07-14T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z');
INSERT INTO psa_pin_request (id, auth_key_id, content_cid, source_cid, name, origins, meta, inserted_at, updated_at)
VALUES ('ab62cf3c-c98d-494b-a756-b3a3fb6ddcab', 3, 'bafybeid46f7zggioxjm5p2ze2l6s6wbqvoo4gzbdzfjtdosthmfyxdign4', 'bafybeid46f7zggioxjm5p2ze2l6s6wbqvoo4gzbdzfjtdosthmfyxdign4', 'ReportDoc.pdf', '["/ip6/2606:4700:60::6/tcp/4009/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N", "/ip4/172.65.0.13/tcp/4009/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx4N"]', null, '2021-07-14T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('bebd5f62-1381-4124-93a1-1e4eeed52635', 3, 'bafybeig7yvw6a4uhio4pmg5gahyd2xumowkfljdukad7pmdsv5uk5zcseu', 'bafybeig7yvw6a4uhio4pmg5gahyd2xumowkfljdukad7pmdsv5uk5zcseu', 'reportdoc.pdf', null, '{"app_id": "99986338-1113-4706-8302-4420da6158aa"}', '2021-01-01T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('d9670c3b-179c-4799-b4fa-66e2bb82c84f', 3, 'bafybeia45bscvzxngto555xsel4gwoclb5fxd7zpxige7rl3maoleznswu', 'bafybeia45bscvzxngto555xsel4gwoclb5fxd7zpxige7rl3maoleznswu', 'Data', null, null, '2021-07-14T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('63992f6e-5bbf-4d01-8a69-9e0561c38b04', 3, 'bafybeidw7pc6nvm7u4rfhpctac4qgtpmwxapw4duugvsl3ppivvzibdlgy', 'bafybeidw7pc6nvm7u4rfhpctac4qgtpmwxapw4duugvsl3ppivvzibdlgy', 'Image.jpeg', null, null, '2021-07-14T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('3fa630f2-f22c-486f-ad1c-b36d4d740e31', 3, 'bafybeidrzt6t4k25qjeasydgi3fyh6ejos5x4d6tk2pdzxkb66bkomezy4', 'bafybeidrzt6t4k25qjeasydgi3fyh6ejos5x4d6tk2pdzxkb66bkomezy4', 'Image.png', null, null, '2021-07-14T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('5c7e7885-7f68-462d-bdfb-3f0abfb367b5', 3, 'bafybeifsrhq2qtkcgjt4gzi7rkafrv2gaai24ptt6rohe2ebqzydkz47sm', 'bafybeifsrhq2qtkcgjt4gzi7rkafrv2gaai24ptt6rohe2ebqzydkz47sm', 'Image.jpg', null, null, '2021-07-20T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('3a19e48d-d6db-4f36-b686-fb8bc37c9d48', 2, 'bafybeiaqu6ijhfhwzjipwesbqf4myz6uczyigahib5joqbo5jw2xmjczfa', 'bafybeiaqu6ijhfhwzjipwesbqf4myz6uczyigahib5joqbo5jw2xmjczfa', 'Image.jpg', null, null, '2021-07-20T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z'),
('9be23b92-918e-44b8-98f4-6043c346fb4e', 2, 'bafybeidqts3rbwkprggjojbvcxy4jzpgzgcvs4a73y3gx2jjxphjeerbcy', 'bafybeidqts3rbwkprggjojbvcxy4jzpgzgcvs4a73y3gx2jjxphjeerbcy', 'Image.jpg', null, null, '2021-07-14T19:27:14.934572Z', '2021-07-14T19:27:14.934572Z');
41 changes: 36 additions & 5 deletions packages/api/test/pin.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,9 @@ describe('Pinning APIs endpoints', () => {
assert(res.ok, 'Server response ok')
const data = await res.json()
assert.strictEqual(data.pin.cid, cid)
assert.strictEqual(data.pin.name, null)
assert.strictEqual(data.pin.origins, null)
assert.strictEqual(data.pin.meta, null)
})

it('requires cid', async () => {
Expand Down Expand Up @@ -336,19 +339,22 @@ describe('Pinning APIs endpoints', () => {

it('should receive pin data containing cid, name, origin, meta', async () => {
const cid = 'bafybeibqmrg5e5bwhx2ny4kfcjx2mm3ohh2cd4i54wlygquwx7zbgwqs4e'
const name = 'PreciousData.pdf'
const origins = [
'/ip6/2606:4700:60::6/tcp/4009/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N',
'/ip4/172.65.0.13/tcp/4009/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx4N'
]
const meta = { app_id: '99986338-1113-4706-8302-4420da6158aa' }

const res = await fetch(new URL('pins', endpoint).toString(), {
method: 'POST',
headers: {
Authorization: `Bearer ${token}`
},
body: JSON.stringify({
cid,
name: 'PreciousData.pdf',
origins: [
'/ip6/2606:4700:60::6/tcp/4009/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N',
'/ip4/172.65.0.13/tcp/4009/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx4N'
],
name,
origins,
meta
})
})
Expand All @@ -357,6 +363,8 @@ describe('Pinning APIs endpoints', () => {
assert(res.ok, 'Server response ok')
const data = await res.json()
assert.strictEqual(data.pin.cid, cid)
assert.deepStrictEqual(data.pin.name, name)
assert.deepStrictEqual(data.pin.origins, origins)
assert.deepStrictEqual(data.pin.meta, meta)
})

Expand Down Expand Up @@ -557,6 +565,29 @@ describe('Pinning APIs endpoints', () => {
assert.strictEqual(data.requestId, requestId.toString())
assert.deepStrictEqual(data.pin.meta, meta)
})

it('returns the pin request with specified origins', async () => {
const requestId = 'ab62cf3c-c98d-494b-a756-b3a3fb6ddcab'
const origins = [
'/ip6/2606:4700:60::6/tcp/4009/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N',
'/ip4/172.65.0.13/tcp/4009/p2p/QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx4N'
]

const res = await fetch(new URL(`pins/${requestId}`, endpoint).toString(), {
method: 'GET',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json'
}
})
const data = await res.json()

assert(res, 'Server responded')
assert(res.ok, 'Server response is ok')
assertCorrectPinResponse(data)
assert.strictEqual(data.requestId, requestId.toString())
assert.deepStrictEqual(data.pin.origins, origins)
})
})

describe('getEffectivePinStatus', () => {
Expand Down
1 change: 1 addition & 0 deletions packages/db/db-client-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,7 @@ export type ListUploadsOptions = {
export type PsaPinRequestUpsertInput = {
id?: string,
name?: definitions['psa_pin_request']['name'],
origins?: definitions['psa_pin_request']['origins'],
meta?: definitions['psa_pin_request']['meta'],
authKey: string,
sourceCid: definitions['psa_pin_request']['source_cid'],
Expand Down
2 changes: 2 additions & 0 deletions packages/db/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ const pinRequestSelect = `
contentCid:content_cid,
authKey:auth_key_id::text,
name,
origins,
meta,
deleted:deleted_at,
created:inserted_at,
Expand Down Expand Up @@ -777,6 +778,7 @@ export class DBClient {
content_cid: pinRequestData.contentCid,
source_cid: pinRequestData.sourceCid,
name: pinRequestData.name,
origins: pinRequestData.origins,
meta: pinRequestData.meta,
dag_size: pinRequestData.dagSize,
inserted_at: pinRequestData.created || now,
Expand Down
2 changes: 2 additions & 0 deletions packages/db/postgres/functions.sql
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ BEGIN
content_cid,
source_cid,
name,
origins,
meta,
inserted_at,
updated_at
Expand All @@ -200,6 +201,7 @@ BEGIN
data ->> 'content_cid',
data ->> 'source_cid',
data ->> 'name',
(data ->> 'origins')::jsonb,
(data ->> 'meta')::jsonb,
(data ->> 'inserted_at')::timestamptz,
(data ->> 'updated_at')::timestamptz
Expand Down
Loading

0 comments on commit 0056679

Please sign in to comment.