Adds paste_url.feature (valid/invalid/not-found/dedup, +@pending no-captions) and an onboarding-burst scenario on connect; all non-pending scenarios mapped in the coverage gate to their existing Go tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
61 lines
2.5 KiB
Gherkin
61 lines
2.5 KiB
Gherkin
Feature: Connect and manage video accounts
|
|
As a user
|
|
I want to connect my YouTube or Vimeo account and have my subscriptions tracked
|
|
So that Tapir watches the channels I already follow
|
|
|
|
Scenario: Connect a YouTube account
|
|
Given I have no connected video accounts
|
|
When I connect my YouTube account
|
|
Then the connection is stored with status "active"
|
|
And my refresh token is stored only as a secret reference
|
|
And my subscriptions are synced
|
|
|
|
@pending
|
|
# Vimeo connect is not built yet (provider label exists; no connect flow or test).
|
|
Scenario: Connect a Vimeo account
|
|
Given I have no connected video accounts
|
|
When I connect my Vimeo account
|
|
Then the connection is stored with status "active"
|
|
And my subscriptions are synced
|
|
|
|
Scenario: Connecting an account discovers videos immediately
|
|
Given I have no connected video accounts
|
|
When I connect my YouTube account
|
|
Then a discovery pass for my account is triggered right away
|
|
And I do not have to wait for the next scheduled pass to see my videos
|
|
|
|
Scenario: Connecting summarizes my newest videos right away
|
|
Given I have no connected video accounts
|
|
When I connect my YouTube account
|
|
Then up to the onboarding cap of my newest videos are summarized through the rate gate
|
|
And the rest are left to the scheduled recency-bounded pass
|
|
|
|
Scenario: Tokens are never stored in the clear
|
|
When I connect any video account
|
|
Then no OAuth token value is stored in the database
|
|
And only an opaque secret reference is stored
|
|
|
|
Scenario: Revoking a connection stops watching but keeps history
|
|
Given I have a connected YouTube account with summaries
|
|
When I revoke the connection
|
|
Then the connection status becomes "revoked"
|
|
And no new videos are watched for that connection
|
|
And my existing summaries remain readable
|
|
|
|
@pending
|
|
# Per-provider BYO credential config is not built as a web flow yet (the summarizer
|
|
# supports a fallback endpoint, but there is no user-facing BYO setup + its test).
|
|
Scenario Outline: BYO AI credential is optional and per-provider
|
|
When I configure a BYO provider "<provider>"
|
|
Then the credential is stored only as a secret reference
|
|
And it is used only as the fallback when local AI fails
|
|
|
|
Examples:
|
|
| provider |
|
|
| anthropic |
|
|
| openai |
|
|
| gemini |
|
|
|
|
# Stage 1 (Future B): connecting a new user's account requires no code change.
|
|
# Isolation: a user can only ever see and manage their own connections.
|