Как отключить настройки конфиденциальности ent для тестов?

Я устанавливаю приложение graphql, которое использует ent в качестве ORM и firebase.

В ent я добавил правила конфиденциальности для аутентификации пользователей, которые могут получить доступ к определенным методам graphql.

Теперь я хочу написать тесты, но не могу достучаться до некоторых методов graphql из-за следующей ошибки:

viewer is missing: ent/privacy: deny rule

Есть ли способ отключить правила конфиденциальности во время выполнения для тестирования?

1 ответ

При тестировании создайте свой клиент со следующими параметрами:

      // WithContext defines a client.Option to pass context.
func WithContext(ctx context.Context) client.Option {
    return client.Option(func(r *client.Request) {
        r.HTTP = r.HTTP.WithContext(ctx)
    })
}

func TestGraphql(t *testing.T) {
    opts := []enttest.Option{
        enttest.WithOptions(ent.Log(t.Log)),
        enttest.WithMigrateOptions(migrate.WithGlobalUniqueID(true)),
    }
    entClient := enttest.Open(t, "sqlite3", "file:ent?mode=memory&cache=shared&_fk=1", opts...)

    handler := handler.NewDefaultServer(gql.NewSchema(entClient, &trustly.Client{}))
    handler.Use(entgql.Transactioner{TxOpener: entClient})

    defer entClient.Close()

    err := c.Post(`query{}....`, &output, WithContext(privacy.DecisionContext(context.Background(), privacy.Allow)))

}
Другие вопросы по тегам