Skip to content

Commit 10921de

Browse files
committed
Revert "test(env): add relaxed defaults for local tests and stub DB to avoid connections\n\n- Provide sensible defaults for client/server env when NEXT_PUBLIC_CB_ENVIRONMENT=test and not in CI\n- Avoid opening Postgres connections during local test runs by exporting a minimal stub DB\n- Keeps CI behavior strict (unchanged) by gating on CODEBUFF_GITHUB_ACTIONS=true"
This reverts commit d39e97e.
1 parent d39e97e commit 10921de

File tree

3 files changed

+4
-119
lines changed

3 files changed

+4
-119
lines changed

common/src/env.ts

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,8 @@
11
import { clientEnvSchema, clientProcessEnv } from './env-schema'
2-
import z from 'zod/v4'
32

43
// Only log environment in non-production
54
if (process.env.NEXT_PUBLIC_CB_ENVIRONMENT !== 'prod') {
65
console.log('Using environment:', process.env.NEXT_PUBLIC_CB_ENVIRONMENT)
76
}
87

9-
// In local test runs (not CI), provide relaxed defaults so unit tests don't
10-
// require full environment configuration.
11-
const isLocalTest =
12-
process.env.NEXT_PUBLIC_CB_ENVIRONMENT === 'test' &&
13-
process.env.CODEBUFF_GITHUB_ACTIONS !== 'true'
14-
15-
function withClientDefaults(input: typeof clientProcessEnv) {
16-
return {
17-
NEXT_PUBLIC_CB_ENVIRONMENT: input.NEXT_PUBLIC_CB_ENVIRONMENT ?? 'test',
18-
NEXT_PUBLIC_CODEBUFF_APP_URL:
19-
input.NEXT_PUBLIC_CODEBUFF_APP_URL ?? 'http://localhost:3000',
20-
NEXT_PUBLIC_CODEBUFF_BACKEND_URL:
21-
input.NEXT_PUBLIC_CODEBUFF_BACKEND_URL ?? 'localhost:4000',
22-
NEXT_PUBLIC_SUPPORT_EMAIL:
23-
input.NEXT_PUBLIC_SUPPORT_EMAIL ?? 'support@example.com',
24-
NEXT_PUBLIC_POSTHOG_API_KEY: input.NEXT_PUBLIC_POSTHOG_API_KEY ?? '',
25-
NEXT_PUBLIC_POSTHOG_HOST_URL:
26-
input.NEXT_PUBLIC_POSTHOG_HOST_URL ?? 'https://us.i.posthog.com',
27-
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY:
28-
input.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY ?? 'pk_test_dummy',
29-
NEXT_PUBLIC_STRIPE_CUSTOMER_PORTAL:
30-
input.NEXT_PUBLIC_STRIPE_CUSTOMER_PORTAL ?? 'http://localhost:3000/portal',
31-
NEXT_PUBLIC_LINKEDIN_PARTNER_ID:
32-
input.NEXT_PUBLIC_LINKEDIN_PARTNER_ID ?? undefined,
33-
NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION_ID:
34-
input.NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION_ID ?? undefined,
35-
NEXT_PUBLIC_WEB_PORT: input.NEXT_PUBLIC_WEB_PORT ?? 3000,
36-
}
37-
}
38-
39-
export const env = isLocalTest
40-
? clientEnvSchema.parse(withClientDefaults(clientProcessEnv))
41-
: clientEnvSchema.parse(clientProcessEnv)
8+
export const env = clientEnvSchema.parse(clientProcessEnv)

packages/internal/src/db/index.ts

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,7 @@ import * as schema from './schema'
77

88
import type { CodebuffPgDatabase } from './types'
99

10-
const isLocalTest =
11-
process.env.NEXT_PUBLIC_CB_ENVIRONMENT === 'test' &&
12-
process.env.CODEBUFF_GITHUB_ACTIONS !== 'true'
10+
const client = postgres(env.DATABASE_URL)
1311

14-
let dbInstance: CodebuffPgDatabase
15-
16-
if (isLocalTest) {
17-
// Provide a minimal stub during local test runs to avoid opening database connections.
18-
const stub: any = {
19-
insert: () => {
20-
throw new Error('DB not available in local tests (use spies/mocks)')
21-
},
22-
update: () => {
23-
throw new Error('DB not available in local tests (use spies/mocks)')
24-
},
25-
}
26-
dbInstance = stub as unknown as CodebuffPgDatabase
27-
} else {
28-
const client = postgres(env.DATABASE_URL)
29-
dbInstance = drizzle(client, { schema })
30-
}
31-
32-
export const db: CodebuffPgDatabase = dbInstance
12+
export const db: CodebuffPgDatabase = drizzle(client, { schema })
3313
export default db

packages/internal/src/env.ts

Lines changed: 1 addition & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,10 @@
11

22
import { serverEnvSchema, serverProcessEnv } from './env-schema'
3-
import z from 'zod/v4'
43

54

65
// Only log environment in non-production
76
if (process.env.NEXT_PUBLIC_CB_ENVIRONMENT !== 'prod') {
87
console.log('Using environment:', process.env.NEXT_PUBLIC_CB_ENVIRONMENT)
98
}
109

11-
// In local test runs (not CI), provide relaxed defaults so unit tests don't
12-
// require full environment configuration.
13-
const isLocalTest =
14-
process.env.NEXT_PUBLIC_CB_ENVIRONMENT === 'test' &&
15-
process.env.CODEBUFF_GITHUB_ACTIONS !== 'true'
16-
17-
function withServerDefaults(input: typeof serverProcessEnv) {
18-
return {
19-
// Include client defaults via common/env.ts behavior; here we ensure keys exist.
20-
NEXT_PUBLIC_CB_ENVIRONMENT: input.NEXT_PUBLIC_CB_ENVIRONMENT ?? 'test',
21-
NEXT_PUBLIC_CODEBUFF_APP_URL:
22-
input.NEXT_PUBLIC_CODEBUFF_APP_URL ?? 'http://localhost:3000',
23-
NEXT_PUBLIC_CODEBUFF_BACKEND_URL:
24-
input.NEXT_PUBLIC_CODEBUFF_BACKEND_URL ?? 'localhost:4000',
25-
NEXT_PUBLIC_SUPPORT_EMAIL:
26-
input.NEXT_PUBLIC_SUPPORT_EMAIL ?? 'support@example.com',
27-
NEXT_PUBLIC_POSTHOG_API_KEY: input.NEXT_PUBLIC_POSTHOG_API_KEY ?? '',
28-
NEXT_PUBLIC_POSTHOG_HOST_URL:
29-
input.NEXT_PUBLIC_POSTHOG_HOST_URL ?? 'https://us.i.posthog.com',
30-
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY:
31-
input.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY ?? 'pk_test_dummy',
32-
NEXT_PUBLIC_STRIPE_CUSTOMER_PORTAL:
33-
input.NEXT_PUBLIC_STRIPE_CUSTOMER_PORTAL ?? 'http://localhost:3000/portal',
34-
NEXT_PUBLIC_LINKEDIN_PARTNER_ID:
35-
input.NEXT_PUBLIC_LINKEDIN_PARTNER_ID ?? undefined,
36-
NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION_ID:
37-
input.NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION_ID ?? undefined,
38-
NEXT_PUBLIC_WEB_PORT: input.NEXT_PUBLIC_WEB_PORT ?? 3000,
39-
40-
// Backend / server defaults
41-
CODEBUFF_API_KEY: input.CODEBUFF_API_KEY ?? undefined,
42-
OPEN_ROUTER_API_KEY: input.OPEN_ROUTER_API_KEY ?? 'test-openrouter-key',
43-
RELACE_API_KEY: input.RELACE_API_KEY ?? 'test-relace-key',
44-
LINKUP_API_KEY: input.LINKUP_API_KEY ?? 'test-linkup-key',
45-
CONTEXT7_API_KEY: input.CONTEXT7_API_KEY ?? undefined,
46-
GOOGLE_CLOUD_PROJECT_ID: input.GOOGLE_CLOUD_PROJECT_ID ?? 'local-project',
47-
PORT: input.PORT ?? 4000,
48-
49-
DATABASE_URL:
50-
input.DATABASE_URL ?? 'postgresql://postgres:postgres@localhost:5432/codebuff',
51-
GOOGLE_SITE_VERIFICATION_ID: input.GOOGLE_SITE_VERIFICATION_ID ?? undefined,
52-
CODEBUFF_GITHUB_ID: input.CODEBUFF_GITHUB_ID ?? 'github-id',
53-
CODEBUFF_GITHUB_SECRET: input.CODEBUFF_GITHUB_SECRET ?? 'github-secret',
54-
NEXTAUTH_URL: input.NEXTAUTH_URL ?? 'http://localhost:3000',
55-
NEXTAUTH_SECRET: input.NEXTAUTH_SECRET ?? 'nextauth-secret',
56-
STRIPE_SECRET_KEY: input.STRIPE_SECRET_KEY ?? 'sk_test_dummy',
57-
STRIPE_WEBHOOK_SECRET_KEY:
58-
input.STRIPE_WEBHOOK_SECRET_KEY ?? 'whsec_dummy_secret',
59-
STRIPE_USAGE_PRICE_ID: input.STRIPE_USAGE_PRICE_ID ?? 'price_dummy',
60-
STRIPE_TEAM_FEE_PRICE_ID: input.STRIPE_TEAM_FEE_PRICE_ID ?? 'price_dummy',
61-
LOOPS_API_KEY: input.LOOPS_API_KEY ?? 'loops_dummy_key',
62-
DISCORD_PUBLIC_KEY: input.DISCORD_PUBLIC_KEY ?? 'discord_public_key',
63-
DISCORD_BOT_TOKEN: input.DISCORD_BOT_TOKEN ?? 'discord_bot_token',
64-
DISCORD_APPLICATION_ID: input.DISCORD_APPLICATION_ID ?? 'discord_app_id',
65-
API_KEY_ENCRYPTION_SECRET:
66-
input.API_KEY_ENCRYPTION_SECRET ?? '0123456789abcdef0123456789abcdef',
67-
}
68-
}
69-
70-
export const env = isLocalTest
71-
? serverEnvSchema.parse(withServerDefaults(serverProcessEnv))
72-
: serverEnvSchema.parse(serverProcessEnv)
10+
export const env = serverEnvSchema.parse(serverProcessEnv)

0 commit comments

Comments
 (0)