Code Snippet Server
by ngeojiajun
Verified
import { jest } from "@jest/globals";
import { GoogleAuthService } from "../google-auth-service";
import { GoogleBaseService } from "../google-base-service";
import { OAuth2Client } from "google-auth-library";
jest.mock("../google-auth-service");
class TestGoogleService extends GoogleBaseService {
constructor() {
super();
}
public async testInit(): Promise<void> {
await this.waitForInit();
}
}
describe("GoogleBaseService", () => {
let mockAuth: jest.Mocked<GoogleAuthService>;
let service: TestGoogleService;
beforeEach(() => {
mockAuth = {
initialize: jest.fn().mockImplementation(() => Promise.resolve()),
authenticate: jest.fn().mockImplementation(() => Promise.resolve()),
getAuth: jest.fn().mockReturnValue(new OAuth2Client()),
saveToken: jest.fn().mockImplementation(() => Promise.resolve()),
} as unknown as jest.Mocked<GoogleAuthService>;
(GoogleAuthService.getInstance as jest.Mock).mockReturnValue(mockAuth);
service = new TestGoogleService();
});
it("should initialize successfully", async () => {
await expect(service.testInit()).resolves.not.toThrow();
expect(mockAuth.initialize).toHaveBeenCalled();
expect(mockAuth.authenticate).toHaveBeenCalled();
});
it("should handle initialization failure", async () => {
mockAuth.initialize.mockRejectedValueOnce(new Error("Init failed"));
await expect(service.testInit()).rejects.toThrow("Init failed");
});
it("should handle authentication failure", async () => {
mockAuth.authenticate.mockRejectedValueOnce(new Error("Auth failed"));
await expect(service.testInit()).rejects.toThrow("Auth failed");
});
});