@@ -2,10 +2,9 @@ import prompts from 'prompts';
2
2
import { describe , beforeAll , afterEach , it , expect } from 'vitest' ;
3
3
4
4
import Command from '../../src/commands/login.js' ;
5
- import { APIv1Error } from '../../src/lib/apiError.js' ;
6
5
import configStore from '../../src/lib/configstore.js' ;
7
6
import { getAPIv1Mock } from '../helpers/get-api-mock.js' ;
8
- import { runCommandAndReturnResult } from '../helpers/oclif.js' ;
7
+ import { runCommand , type OclifOutput } from '../helpers/oclif.js' ;
9
8
10
9
const apiKey = 'abcdefg' ;
11
10
const email = '[email protected] ' ;
@@ -14,30 +13,30 @@ const project = 'subdomain';
14
13
const token = '123456' ;
15
14
16
15
describe ( 'rdme login' , ( ) => {
17
- let run : ( args ?: string [ ] ) => Promise < string > ;
16
+ let run : ( args ?: string [ ] ) => OclifOutput ;
18
17
19
18
beforeAll ( ( ) => {
20
- run = runCommandAndReturnResult ( Command ) ;
19
+ run = runCommand ( Command ) ;
21
20
} ) ;
22
21
23
22
afterEach ( ( ) => configStore . clear ( ) ) ;
24
23
25
24
it ( 'should error if no project provided' , ( ) => {
26
25
prompts . inject ( [ email , password ] ) ;
27
- return expect ( run ( ) ) . rejects . toStrictEqual ( new Error ( 'No project subdomain provided. Please use `--project`.' ) ) ;
26
+ return expect ( run ( ) ) . resolves . toMatchSnapshot ( ) ;
28
27
} ) ;
29
28
30
29
it ( 'should error if email is invalid' , ( ) => {
31
30
prompts . inject ( [ 'this-is-not-an-email' , password , project ] ) ;
32
- return expect ( run ( ) ) . rejects . toStrictEqual ( new Error ( 'You must provide a valid email address.' ) ) ;
31
+ return expect ( run ( ) ) . resolves . toMatchSnapshot ( ) ;
33
32
} ) ;
34
33
35
34
it ( 'should post to /login on the API' , async ( ) => {
36
35
prompts . inject ( [ email , password , project ] ) ;
37
36
38
37
const mock = getAPIv1Mock ( ) . post ( '/api/v1/login' , { email, password, project } ) . reply ( 200 , { apiKey } ) ;
39
38
40
- await expect ( run ( ) ) . resolves . toBe ( 'Successfully logged in as [email protected] to the subdomain project.' ) ;
39
+ await expect ( run ( ) ) . resolves . toMatchSnapshot ( ) ;
41
40
42
41
mock . done ( ) ;
43
42
@@ -51,9 +50,7 @@ describe('rdme login', () => {
51
50
52
51
const mock = getAPIv1Mock ( ) . post ( '/api/v1/login' , { email, password, project } ) . reply ( 200 , { apiKey } ) ;
53
52
54
- await expect ( run ( [ '--project' , project ] ) ) . resolves . toBe (
55
- 'Successfully logged in as [email protected] to the subdomain project.' ,
56
- ) ;
53
+ await expect ( run ( [ '--project' , project ] ) ) . resolves . toMatchSnapshot ( ) ;
57
54
58
55
mock . done ( ) ;
59
56
@@ -65,9 +62,9 @@ describe('rdme login', () => {
65
62
it ( 'should bypass prompts and post to /login on the API if passing in every opt' , async ( ) => {
66
63
const mock = getAPIv1Mock ( ) . post ( '/api/v1/login' , { email, password, project, token } ) . reply ( 200 , { apiKey } ) ;
67
64
68
- await expect ( run ( [ '--email' , email , '--password' , password , '--project' , project , '--otp' , token ] ) ) . resolves . toBe (
69
- 'Successfully logged in as [email protected] to the subdomain project.' ,
70
- ) ;
65
+ await expect (
66
+ run ( [ '--email' , email , '--password' , password , '--project' , project , '--otp' , token ] ) ,
67
+ ) . resolves . toMatchSnapshot ( ) ;
71
68
72
69
mock . done ( ) ;
73
70
@@ -79,9 +76,7 @@ describe('rdme login', () => {
79
76
it ( 'should bypass prompts and post to /login on the API if passing in every opt (no 2FA)' , async ( ) => {
80
77
const mock = getAPIv1Mock ( ) . post ( '/api/v1/login' , { email, password, project } ) . reply ( 200 , { apiKey } ) ;
81
78
82
- await expect ( run ( [ '--email' , email , '--password' , password , '--project' , project ] ) ) . resolves . toBe (
83
- 'Successfully logged in as [email protected] to the subdomain project.' ,
84
- ) ;
79
+ await expect ( run ( [ '--email' , email , '--password' , password , '--project' , project ] ) ) . resolves . toMatchSnapshot ( ) ;
85
80
86
81
mock . done ( ) ;
87
82
@@ -101,7 +96,7 @@ describe('rdme login', () => {
101
96
102
97
const mock = getAPIv1Mock ( ) . post ( '/api/v1/login' , { email, password, project } ) . reply ( 401 , errorResponse ) ;
103
98
104
- await expect ( run ( ) ) . rejects . toStrictEqual ( new APIv1Error ( errorResponse ) ) ;
99
+ await expect ( run ( ) ) . resolves . toMatchSnapshot ( ) ;
105
100
106
101
mock . done ( ) ;
107
102
} ) ;
@@ -121,7 +116,7 @@ describe('rdme login', () => {
121
116
. post ( '/api/v1/login' , { email, password, project, token } )
122
117
. reply ( 200 , { apiKey } ) ;
123
118
124
- await expect ( run ( ) ) . resolves . toBe ( 'Successfully logged in as [email protected] to the subdomain project.' ) ;
119
+ await expect ( run ( ) ) . resolves . toMatchSnapshot ( ) ;
125
120
126
121
mock . done ( ) ;
127
122
@@ -144,7 +139,7 @@ describe('rdme login', () => {
144
139
. post ( '/api/v1/login' , { email, password, project : projectThatIsNotYours } )
145
140
. reply ( 404 , errorResponse ) ;
146
141
147
- await expect ( run ( ) ) . rejects . toStrictEqual ( new APIv1Error ( errorResponse ) ) ;
142
+ await expect ( run ( ) ) . resolves . toMatchSnapshot ( ) ;
148
143
149
144
mock . done ( ) ;
150
145
} ) ;
0 commit comments