From bda7ebb9081ac7312501760b13428938fe112df5 Mon Sep 17 00:00:00 2001 From: Yun Chan Date: Wed, 23 Sep 2026 19:58:34 +0900 Subject: [PATCH] =?UTF-8?q?Agy=20OAuth=20=ED=81=B4=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EC=96=B8=ED=8A=B8=20=EC=8B=9C=ED=81=AC=EB=A6=BF=20=EC=A0=84?= =?UTF-8?q?=EC=82=AC=20=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/app/services/provider_oauth.py | 2 +- apps/api/app/test_provider_oauth.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/api/app/services/provider_oauth.py b/apps/api/app/services/provider_oauth.py index fd2f389..6cc5e20 100644 --- a/apps/api/app/services/provider_oauth.py +++ b/apps/api/app/services/provider_oauth.py @@ -73,7 +73,7 @@ _AGY_OAUTH = { "token_url": "https://oauth2.googleapis.com/token", "redirect_uri": "http://localhost:1455/auth/callback", "client_id": "1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com", - "client_secret": "GOCSPX-K58FWR486LdLJ1mLB8sXC4zqDAf", + "client_secret": "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", "scope": ( "https://www.googleapis.com/auth/cloud-platform " "https://www.googleapis.com/auth/userinfo.email " diff --git a/apps/api/app/test_provider_oauth.py b/apps/api/app/test_provider_oauth.py index b58f78d..614fc4f 100644 --- a/apps/api/app/test_provider_oauth.py +++ b/apps/api/app/test_provider_oauth.py @@ -152,6 +152,14 @@ class PasteAndMetadataTest(unittest.TestCase): self.assertIsNone(svc._chatgpt_account_id("not-a-jwt")) self.assertIsNone(svc._chatgpt_account_id("h." + _b64url({"sub": "x"}) + ".s")) + def test_agy_client_credentials_are_well_formed(self): + # 구글 시크릿은 GOCSPX- + 28자다. 전사 오타(한 글자 누락)가 401 invalid_client를 만든다. + credential = svc._AGY_OAUTH + self.assertRegex(credential["client_secret"], r"^GOCSPX-[A-Za-z0-9_-]{28}$") + self.assertRegex( + credential["client_id"], r"^\d{12,13}-[a-z0-9]+\.apps\.googleusercontent\.com$" + ) + def test_default_tier_prefers_is_default_flag(self): loaded = { "allowedTiers": [{"id": "free-tier"}, {"id": "paid-tier", "isDefault": True}],