atproto/packages/pds/tests/proxied/feedgen.test.ts
Matthieu Sieben b934b396b1
Client SDK rework (#2483)
* feat(api): support creation of oauth based AtpAgents

* oauth: misc fixes for confidential clients

* fix(xprc): remove ReadableStream.from polyfill

* OAuth docs tweaks (#2679)

* OAuth: clarification about client_name being shown

* OAuth: re-write handle resolution privacy concern

* avoid relying on ReadableStream.from in xrpc-server tests

* feat(oauth-types): expose "ALLOW_UNSECURE_ORIGINS" constant

* feat(handle-resolver): expose "AtprotoIdentityDidMethods" type

* fix(oauth-client): ensure that the oauth metadata document contains client_id_metadata_document_supported

* fix(oauth-types): prevent unknown query string in loopback client id

* fix(identity-resolver): check that handle is in did doc's "alsoKnownAs"

* feat(oauth-client:oauth-resolver): allow logging in using either the PDS URL or Entryway URL

* fix(oauth-client): return better error in case of invalid "oauth-protected-resource" status code

* refactor(did): group atproto specific checks in own

* feat(api): relax typing of "appLabelers" and "labelers" AtpClient properties

* allow any did as labeller (for tests mainly)

* fix(api): allow to override "atproto-proxy" on a per-request basis

* remove release candidate versions from changelog

* update changeset for api and xrpc packages

* Add missing changeset

* revert RC versions

* Proper wording in OAUTH.md api example

* remove "pre" changeset file

* xrpc: restore original behavior of setHEader and unsetHeader

* docs: add comment for XrpcClient 's constructor arg

* feat(api): expose "schemas" publicly

* feat(api): allow customizing the whatwg fetch function of the AtpAgent

* docs(api): improve migration docs

* docs: change reference to BskyAgent to AtpAgent

* docs: mention the breaking change regarding setSessionPersistHandler

* fix(api): better split AtpClient concerns

* fix(xrpc): remove unused import

* refactor(api): simplify class hierarchu by removeing AtpClient

* fix(api): mock proper method for facets detection

* restore ability to restore session asynchronously

* feat(api): allow instantiating Agent with same argument as super class

* docs(api): properly extend Agent class

* style(xrpc): var name

* docs(api): remove "async" to header getter

---------

Co-authored-by: Devin Ivy <devinivy@gmail.com>
Co-authored-by: bnewbold <bnewbold@robocracy.org>
Co-authored-by: Hailey <me@haileyok.com>
2024-08-12 19:57:21 +02:00

67 lines
1.8 KiB
TypeScript

import { AtpAgent, AtUri } from '@atproto/api'
import { TestNetwork, SeedClient } from '@atproto/dev-env'
import basicSeed from '../seeds/basic'
import { forSnapshot } from '../_util'
import { InvalidRequestError } from '@atproto/xrpc-server'
describe('feedgen proxy view', () => {
let network: TestNetwork
let agent: AtpAgent
let sc: SeedClient
let feedUri: AtUri
beforeAll(async () => {
network = await TestNetwork.create({
dbPostgresSchema: 'proxy_feedgen',
})
agent = network.pds.getClient()
sc = network.getSeedClient()
await basicSeed(sc, { addModLabels: network.bsky })
feedUri = AtUri.make(sc.dids.alice, 'app.bsky.feed.generator', 'mutuals')
const feedGen = await network.createFeedGen({
[feedUri.toString()]: ({ params }) => {
if (params.feed !== feedUri.toString()) {
throw new InvalidRequestError('Unknown feed')
}
return {
encoding: 'application/json',
body: {
feed: [
{ post: sc.posts[sc.dids.alice][0].ref.uriStr },
{ post: sc.posts[sc.dids.carol][0].ref.uriStr },
],
},
}
},
})
// publish feed
await agent.api.app.bsky.feed.generator.create(
{ repo: sc.dids.alice, rkey: feedUri.rkey },
{
did: feedGen.did,
displayName: 'Test feed',
createdAt: new Date().toISOString(),
},
sc.getHeaders(sc.dids.alice),
)
await network.processAll()
})
afterAll(async () => {
await network.close()
})
it('performs basic proxy of getFeed', async () => {
const { data: feed } = await agent.api.app.bsky.feed.getFeed(
{ feed: feedUri.toString() },
{
headers: { ...sc.getHeaders(sc.dids.alice) },
},
)
expect(forSnapshot(feed)).toMatchSnapshot()
})
})