mirror of
https://github.com/coleam00/context-engineering-intro.git
synced 2025-12-17 17:55:29 +00:00
59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
import { vi } from 'vitest'
|
|
import { mockGitHubUser, mockAccessToken } from '../fixtures/auth.fixtures'
|
|
|
|
// Mock Octokit
|
|
export const mockOctokit = {
|
|
rest: {
|
|
users: {
|
|
getAuthenticated: vi.fn(),
|
|
},
|
|
},
|
|
}
|
|
|
|
vi.mock('octokit', () => ({
|
|
Octokit: vi.fn(() => mockOctokit),
|
|
}))
|
|
|
|
// Mock GitHub API responses
|
|
export function setupGitHubMocks() {
|
|
mockOctokit.rest.users.getAuthenticated.mockResolvedValue(mockGitHubUser)
|
|
}
|
|
|
|
export function setupGitHubError() {
|
|
mockOctokit.rest.users.getAuthenticated.mockRejectedValue(new Error('GitHub API error'))
|
|
}
|
|
|
|
export function setupGitHubUnauthorized() {
|
|
mockOctokit.rest.users.getAuthenticated.mockRejectedValue(new Error('Bad credentials'))
|
|
}
|
|
|
|
export function resetGitHubMocks() {
|
|
vi.clearAllMocks()
|
|
setupGitHubMocks()
|
|
}
|
|
|
|
// Mock fetch for GitHub OAuth token exchange
|
|
export function setupGitHubTokenExchange() {
|
|
global.fetch = vi.fn((url: string) => {
|
|
if (url.includes('github.com/login/oauth/access_token')) {
|
|
return Promise.resolve({
|
|
ok: true,
|
|
text: () => Promise.resolve(`access_token=${mockAccessToken}&token_type=bearer&scope=read:user`),
|
|
} as Response)
|
|
}
|
|
return Promise.reject(new Error('Unexpected fetch call'))
|
|
})
|
|
}
|
|
|
|
export function setupGitHubTokenExchangeError() {
|
|
global.fetch = vi.fn((url: string) => {
|
|
if (url.includes('github.com/login/oauth/access_token')) {
|
|
return Promise.resolve({
|
|
ok: false,
|
|
status: 400,
|
|
text: () => Promise.resolve('error=invalid_grant&error_description=Bad verification code.'),
|
|
} as Response)
|
|
}
|
|
return Promise.reject(new Error('Unexpected fetch call'))
|
|
})
|
|
} |