Skip to content

chore(deps): track removal of expiry_seconds alias (campus #659) - #48

Merged
ngjunsiang merged 1 commit into
mainfrom
chore/bump-campus-suite-ff98c44
Sep 30, 2026
Merged

ngjunsiang merged 1 commit into
mainfrom
chore/bump-campus-suite-ff98c44

Conversation

@nycomp

@nycomp nycomp commented Sep 30, 2026

Copy link
Copy Markdown
Contributor

Summary

The #648 deprecation checklist is now fully complete on campus weekly (head ff98c44a) — item 2 (remove the OAuthToken expiry_seconds alias) landed in nyjc-computing/campus#659, joining items 3+5 (#658) and 4 (#657). This PR brings the client onto that head and pins the final contract.

Follow-up assessment (all five checklist items done)

#648 checklist item Landed in Client impact
1. campus-api-python#40 closed PR #43 done
2. Remove expiry_seconds InitVar / payload key #659 none — client has zero OAuthToken expiry_seconds call sites; logins.update(expiry_seconds) targets the LoginSession endpoint, which keeps its own key (unchanged on weekly, verified)
3. Storage flip + backfill #658 none — API shapes unchanged (verified in #46)
4. Stop dual-emitting scopes #657 none — client already pinned scope-only emission (PR #45)
5. Drop legacy read-time derivation #658 none

Changes

  • campus-suite → weekly head ff98c44a (includes #659 breaking removal + #664/#666–#670 unrelated fixes)
  • Contract tests: corrected the now-stale docstring claim that PATCH validation "accepts legacy expiry_seconds"; added TestExpirySecondsAliasRemoved pinning the end state both ways (constructor raises TypeError on the kwarg; a payload whose only expiry info is expiry_seconds fails from_resource validation → server 422), guarding against the alias creeping back in either direction

Verification

Probed against campus-suite @ ff98c44a:

  • OAuthToken(id=..., expiry_seconds=60) → TypeError ✅
  • from_resource({"access_token", "expiry_seconds"}) → ValueError (no derivable expiry) ✅
  • expires_in-based construction/roundtrip and scope-only emission unchanged ✅
  • Logins route on weekly still accepts expiry_seconds (LoginSession contract intact) ✅

91 tests pass (incl. the 9 new from PR #47 — this bump is compatible with that work), CI 3.11 + 3.12 green.

After this

Nothing further is required from the client for #648 — the migration arc (#40 → #43–#47, campus #650/#654/#655–#656/#657/#658/#659) is closed. Remaining optional item: the authenticated live exercise against the Railway dev deployment (needs CLIENT_ID/CLIENT_SECRET).

The #648 deprecation is fully complete on campus weekly (head
ff98c44a): #659 removed the OAuthToken expiry_seconds InitVar, its
from_resource payload mapping, and the POST /credentials fallback —
expires_in is the only accepted form. The client has no
expiry_seconds call sites against OAuthToken (logins.update targets
the LoginSession endpoint, which keeps its own expiry_seconds).

Changes:
- campus-suite bumped to weekly head ff98c44a
- contract tests: stale docstring claim corrected; new pins guard the
  alias-removed end state (ctor TypeError; payload with only
  expiry_seconds fails validation)
@ngjunsiang
ngjunsiang merged commit c41213f into main Sep 30, 2026
2 checks passed
@nycomp
nycomp deleted the chore/bump-campus-suite-ff98c44 branch September 30, 2026 14:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants