@@ -6,7 +6,7 @@ import ora from 'ora';
66import chalk from 'chalk' ;
77import fetch from 'node-fetch' ;
88import Conf from 'conf' ;
9- import { BASE_URL } from '../src/commons.js' ;
9+ import { BASE_URL , PROJECT_NAME } from '../src/commons.js' ;
1010
1111// Mock console to prevent actual logging
1212vi . spyOn ( console , 'log' ) . mockImplementation ( ( ) => { } ) ;
@@ -18,37 +18,43 @@ vi.mock('chalk', () => ({
1818 default : {
1919 green : vi . fn ( text => text ) ,
2020 red : vi . fn ( text => text ) ,
21- dim : vi . fn ( text => text )
21+ dim : vi . fn ( text => text ) ,
22+ yellow : vi . fn ( text => text ) ,
23+ cyan : vi . fn ( text => text ) ,
2224 }
2325} ) ) ;
2426vi . mock ( 'node-fetch' ) ;
2527
26- // Mock Conf
27- vi . mock ( 'conf' , ( ) => {
28- return {
29- default : vi . fn ( ) . mockImplementation ( ( ) => ( {
30- set : vi . fn ( ) ,
31- get : vi . fn ( ) ,
32- } ) )
33- }
34- } ) ;
35-
3628// Create a mock spinner object
3729const mockSpinner = {
3830 start : vi . fn ( ) . mockReturnThis ( ) ,
3931 succeed : vi . fn ( ) . mockReturnThis ( ) ,
40- fail : vi . fn ( ) . mockReturnThis ( )
32+ fail : vi . fn ( ) . mockReturnThis ( ) ,
33+ info : vi . fn ( ) . mockReturnThis ( ) ,
4134} ;
4235
4336// Mock ora
4437vi . mock ( 'ora' , ( ) => ( {
4538 default : vi . fn ( ( ) => mockSpinner )
4639} ) ) ;
4740
41+ // Mock Conf
42+ vi . mock ( 'conf' , ( ) => {
43+ return {
44+ default : vi . fn ( ) . mockImplementation ( ( ) => ( {
45+ set : vi . fn ( ) ,
46+ get : vi . fn ( ) ,
47+ clear : vi . fn ( ) ,
48+ } ) ) ,
49+ } ;
50+ } ) ;
4851
4952describe ( 'auth.js' , ( ) => {
53+ // let config;
54+
5055 beforeEach ( ( ) => {
5156 vi . clearAllMocks ( ) ;
57+ // config = new Conf({ projectName: PROJECT_NAME });
5258 } ) ;
5359
5460 describe ( 'login' , ( ) => {
@@ -85,69 +91,69 @@ describe('auth.js', () => {
8591 // Verify spinner methods were called
8692 expect ( mockSpinner . start ) . toHaveBeenCalled ( ) ;
8793 expect ( mockSpinner . succeed ) . toHaveBeenCalled ( ) ;
88-
8994 } ) ;
90- /*
95+
9196 it ( 'should fail login with invalid credentials' , async ( ) => {
9297 inquirer . prompt . mockResolvedValue ( { username : 'testuser' , password : 'testpass' } ) ;
9398 fetch . mockResolvedValue ( {
9499 json : vi . fn ( ) . mockResolvedValue ( { proceed : false } ) ,
95100 ok : true ,
96101 } ) ;
97- const spinner = { start: vi.fn(), fail: vi.fn() };
98- ora.mockReturnValue(spinner);
99102
100103 await login ( ) ;
101-
102- expect(spinner.fail).toHaveBeenCalledWith(chalk.red('Login failed. Please check your credentials.'));
104+ expect ( mockSpinner . fail ) . toHaveBeenCalledWith ( chalk . red ( 'Login failed. Please check your credentials.' ) ) ;
103105 } ) ;
104106
105107 it ( 'should handle login error' , async ( ) => {
106108 inquirer . prompt . mockResolvedValue ( { username : 'testuser' , password : 'testpass' } ) ;
107109 fetch . mockRejectedValue ( new Error ( 'Network error' ) ) ;
108- const spinner = { start: vi.fn(), fail: vi.fn() };
109- ora.mockReturnValue(spinner);
110-
111- await login();
112110
113- expect(spinner.fail).toHaveBeenCalledWith(chalk.red('Failed to login'));
114- });*/
111+ await expect ( login ( ) ) . rejects . toThrow ( 'Network error' ) ;
112+ expect ( mockSpinner . fail ) . toHaveBeenCalledWith ( chalk . red ( 'Failed to login' ) ) ;
113+ expect ( console . error ) . toHaveBeenCalledWith ( chalk . red ( 'Error: Network error' ) ) ;
114+ } ) ;
115115 } ) ;
116- /*
116+
117+
117118 describe ( 'logout' , ( ) => {
118- it('should logout successfully', async () => {
119- config.get.mockReturnValue('testtoken');
120- const spinner = { start: vi.fn(), succeed: vi.fn() };
121- ora.mockReturnValue(spinner);
119+ let config ;
122120
123- await logout();
121+ beforeEach ( ( ) => {
122+ vi . clearAllMocks ( ) ;
123+ config = new Conf ( { projectName : PROJECT_NAME } ) ;
124+ // config.clear = vi.fn();
125+ } ) ;
124126
127+ it . skip ( 'should logout successfully' , async ( ) => {
128+ // Mock config.get to return a token
129+ config . get = vi . fn ( ) . mockReturnValue ( 'testtoken' ) ;
130+ await logout ( ) ;
131+ // Verify config.clear was called
125132 expect ( config . clear ) . toHaveBeenCalled ( ) ;
126- expect(spinner .succeed).toHaveBeenCalledWith(chalk.green('Successfully logged out from Puter!'));
133+ expect ( mockSpinner . succeed ) . toHaveBeenCalledWith ( chalk . green ( 'Successfully logged out from Puter!' ) ) ;
127134 } ) ;
128135
129136 it ( 'should handle already logged out' , async ( ) => {
130- config.get.mockReturnValue(null);
131- const spinner = { start: vi.fn(), info: vi.fn() };
132- ora.mockReturnValue(spinner);
137+ config . get = vi . fn ( ) . mockReturnValue ( null ) ;
133138
134139 await logout ( ) ;
135140
136- expect(spinner .info).toHaveBeenCalledWith(chalk.yellow('Already logged out'));
141+ expect ( mockSpinner . info ) . toHaveBeenCalledWith ( chalk . yellow ( 'Already logged out' ) ) ;
137142 } ) ;
138143
139- it('should handle logout error', async () => {
140- config.get.mockReturnValue('testtoken');
141- config.clear.mockImplementation(() => { throw new Error('Config error'); });
142- const spinner = { start: vi.fn(), fail: vi.fn() };
143- ora.mockReturnValue(spinner);
144+ it . skip ( 'should handle logout error' , async ( ) => {
145+ config . get = vi . fn ( ) . mockReturnValue ( 'testtoken' ) ;
146+ config . clear = vi . fn ( ) . mockImplementation ( ( ) => { throw new Error ( 'Config error' ) ; } ) ;
144147
145148 await logout ( ) ;
146149
147- expect(spinner.fail).toHaveBeenCalledWith(chalk.red('Failed to logout'));
150+ expect ( mockSpinner . fail ) . toHaveBeenCalled ( ) ;
151+ expect ( mockSpinner . fail ) . toHaveBeenCalledWith ( chalk . red ( 'Failed to logout' ) ) ;
148152 } ) ;
153+
149154 } ) ;
150-
155+
156+ /*
151157 describe('getUserInfo', () => {
152158 it('should fetch user info successfully', async () => {
153159 fetch.mockResolvedValue({
@@ -265,4 +271,5 @@ describe('auth.js', () => {
265271 });
266272 });
267273 */
274+
268275} ) ;
0 commit comments