@@ -4,6 +4,7 @@ import { SourceControlService } from '../source-control.service.ee';
4
4
import type { SourceControlGitService } from '../source-control-git.service.ee' ;
5
5
import type { SourceControlPreferencesService } from '../source-control-preferences.service.ee' ;
6
6
import type { SourceControlExportService } from '../source-control-export.service.ee' ;
7
+ import type { SourceControlPreferences } from '../types/source-control-preferences' ;
7
8
8
9
describe ( 'SourceControlService - disconnect functionality' , ( ) => {
9
10
let sourceControlService : SourceControlService ;
@@ -38,16 +39,22 @@ describe('SourceControlService - disconnect functionality', () => {
38
39
describe ( 'disconnect' , ( ) => {
39
40
it ( 'should clean up HTTPS credentials when connection type is HTTPS' , async ( ) => {
40
41
// Arrange
41
- const httpsPreferences = {
42
+ const httpsPreferences : SourceControlPreferences = {
42
43
connectionType : 'https' as const ,
43
44
repositoryUrl : 'https://github.com/user/repo.git' ,
44
45
connected : true ,
46
+ branchName : 'main' ,
47
+ branchReadOnly : false ,
48
+ branchColor : '#5296D6' ,
49
+ publicKey : '' ,
50
+ initRepo : false ,
51
+ keyGeneratorType : 'ed25519' ,
45
52
} ;
46
53
47
- mockPreferencesService . getPreferences . mockReturnValue ( httpsPreferences ) ;
48
- mockPreferencesService . setPreferences . mockResolvedValue ( { } as any ) ;
54
+ jest . spyOn ( mockPreferencesService , ' getPreferences' ) . mockReturnValue ( httpsPreferences ) ;
55
+ jest . spyOn ( mockPreferencesService , ' setPreferences' ) . mockResolvedValue ( { } as any ) ;
49
56
mockPreferencesService . deleteHttpsCredentials = jest . fn ( ) . mockResolvedValue ( undefined ) ;
50
- mockExportService . deleteRepositoryFolder . mockResolvedValue ( ) ;
57
+ jest . spyOn ( mockExportService , ' deleteRepositoryFolder' ) . mockResolvedValue ( undefined ) ;
51
58
52
59
await sourceControlService . disconnect ( ) ;
53
60
@@ -62,16 +69,22 @@ describe('SourceControlService - disconnect functionality', () => {
62
69
} ) ;
63
70
64
71
it ( 'should clean up SSH key pair when connection type is SSH and keepKeyPair is false' , async ( ) => {
65
- const sshPreferences = {
72
+ const sshPreferences : SourceControlPreferences = {
66
73
connectionType : 'ssh' as const ,
67
74
repositoryUrl : 'git@github.com:user/repo.git' ,
68
75
connected : true ,
76
+ branchName : 'main' ,
77
+ branchReadOnly : false ,
78
+ branchColor : '#5296D6' ,
79
+ publicKey : '' ,
80
+ initRepo : false ,
81
+ keyGeneratorType : 'ed25519' ,
69
82
} ;
70
83
71
- mockPreferencesService . getPreferences . mockReturnValue ( sshPreferences ) ;
72
- mockPreferencesService . setPreferences . mockResolvedValue ( { } as any ) ;
73
- mockPreferencesService . deleteKeyPair = jest . fn ( ) . mockResolvedValue ( ) ;
74
- mockExportService . deleteRepositoryFolder . mockResolvedValue ( ) ;
84
+ jest . spyOn ( mockPreferencesService , ' getPreferences' ) . mockReturnValue ( sshPreferences ) ;
85
+ jest . spyOn ( mockPreferencesService , ' setPreferences' ) . mockResolvedValue ( { } as any ) ;
86
+ mockPreferencesService . deleteKeyPair = jest . fn ( ) . mockResolvedValue ( undefined ) ;
87
+ jest . spyOn ( mockExportService , ' deleteRepositoryFolder' ) . mockResolvedValue ( undefined ) ;
75
88
76
89
await sourceControlService . disconnect ( { keepKeyPair : false } ) ;
77
90
@@ -86,16 +99,22 @@ describe('SourceControlService - disconnect functionality', () => {
86
99
} ) ;
87
100
88
101
it ( 'should keep SSH key pair when connection type is SSH and keepKeyPair is true' , async ( ) => {
89
- const sshPreferences = {
102
+ const sshPreferences : SourceControlPreferences = {
90
103
connectionType : 'ssh' as const ,
91
104
repositoryUrl : 'git@github.com:user/repo.git' ,
92
105
connected : true ,
106
+ branchName : 'main' ,
107
+ branchReadOnly : false ,
108
+ branchColor : '#5296D6' ,
109
+ publicKey : '' ,
110
+ initRepo : false ,
111
+ keyGeneratorType : 'ed25519' ,
93
112
} ;
94
113
95
- mockPreferencesService . getPreferences . mockReturnValue ( sshPreferences ) ;
96
- mockPreferencesService . setPreferences . mockResolvedValue ( { } as any ) ;
97
- mockPreferencesService . deleteKeyPair = jest . fn ( ) . mockResolvedValue ( ) ;
98
- mockExportService . deleteRepositoryFolder . mockResolvedValue ( ) ;
114
+ jest . spyOn ( mockPreferencesService , ' getPreferences' ) . mockReturnValue ( sshPreferences ) ;
115
+ jest . spyOn ( mockPreferencesService , ' setPreferences' ) . mockResolvedValue ( { } as any ) ;
116
+ mockPreferencesService . deleteKeyPair = jest . fn ( ) . mockResolvedValue ( undefined ) ;
117
+ jest . spyOn ( mockExportService , ' deleteRepositoryFolder' ) . mockResolvedValue ( undefined ) ;
99
118
100
119
await sourceControlService . disconnect ( { keepKeyPair : true } ) ;
101
120
@@ -110,17 +129,23 @@ describe('SourceControlService - disconnect functionality', () => {
110
129
} ) ;
111
130
112
131
it ( 'should not delete SSH keys when connection type is HTTPS' , async ( ) => {
113
- const httpsPreferences = {
132
+ const httpsPreferences : SourceControlPreferences = {
114
133
connectionType : 'https' as const ,
115
134
repositoryUrl : 'https://github.com/user/repo.git' ,
116
135
connected : true ,
136
+ branchName : 'main' ,
137
+ branchReadOnly : false ,
138
+ branchColor : '#5296D6' ,
139
+ publicKey : '' ,
140
+ initRepo : false ,
141
+ keyGeneratorType : 'ed25519' ,
117
142
} ;
118
143
119
- mockPreferencesService . getPreferences . mockReturnValue ( httpsPreferences ) ;
120
- mockPreferencesService . setPreferences . mockResolvedValue ( { } as any ) ;
144
+ jest . spyOn ( mockPreferencesService , ' getPreferences' ) . mockReturnValue ( httpsPreferences ) ;
145
+ jest . spyOn ( mockPreferencesService , ' setPreferences' ) . mockResolvedValue ( { } as any ) ;
121
146
mockPreferencesService . deleteHttpsCredentials = jest . fn ( ) . mockResolvedValue ( undefined ) ;
122
- mockPreferencesService . deleteKeyPair = jest . fn ( ) . mockResolvedValue ( ) ;
123
- mockExportService . deleteRepositoryFolder . mockResolvedValue ( ) ;
147
+ mockPreferencesService . deleteKeyPair = jest . fn ( ) . mockResolvedValue ( undefined ) ;
148
+ jest . spyOn ( mockExportService , ' deleteRepositoryFolder' ) . mockResolvedValue ( undefined ) ;
124
149
125
150
await sourceControlService . disconnect ( { keepKeyPair : false } ) ;
126
151
@@ -129,31 +154,43 @@ describe('SourceControlService - disconnect functionality', () => {
129
154
} ) ;
130
155
131
156
it ( 'should handle errors during disconnect gracefully' , async ( ) => {
132
- const httpsPreferences = {
157
+ const httpsPreferences : SourceControlPreferences = {
133
158
connectionType : 'https' as const ,
134
159
repositoryUrl : 'https://github.com/user/repo.git' ,
135
160
connected : true ,
161
+ branchName : 'main' ,
162
+ branchReadOnly : false ,
163
+ branchColor : '#5296D6' ,
164
+ publicKey : '' ,
165
+ initRepo : false ,
166
+ keyGeneratorType : 'ed25519' ,
136
167
} ;
137
168
138
- mockPreferencesService . getPreferences . mockReturnValue ( httpsPreferences ) ;
139
- mockPreferencesService . setPreferences . mockRejectedValue ( new Error ( 'DB error' ) ) ;
169
+ jest . spyOn ( mockPreferencesService , ' getPreferences' ) . mockReturnValue ( httpsPreferences ) ;
170
+ jest . spyOn ( mockPreferencesService , ' setPreferences' ) . mockRejectedValue ( new Error ( 'DB error' ) ) ;
140
171
141
172
await expect ( sourceControlService . disconnect ( ) ) . rejects . toThrow (
142
173
'Failed to disconnect from source control' ,
143
174
) ;
144
175
} ) ;
145
176
146
177
it ( 'should reset connection type to SSH by default' , async ( ) => {
147
- const httpsPreferences = {
178
+ const httpsPreferences : SourceControlPreferences = {
148
179
connectionType : 'https' as const ,
149
180
repositoryUrl : 'https://github.com/user/repo.git' ,
150
181
connected : true ,
182
+ branchName : 'main' ,
183
+ branchReadOnly : false ,
184
+ branchColor : '#5296D6' ,
185
+ publicKey : '' ,
186
+ initRepo : false ,
187
+ keyGeneratorType : 'ed25519' ,
151
188
} ;
152
189
153
- mockPreferencesService . getPreferences . mockReturnValue ( httpsPreferences ) ;
154
- mockPreferencesService . setPreferences . mockResolvedValue ( { } as any ) ;
190
+ jest . spyOn ( mockPreferencesService , ' getPreferences' ) . mockReturnValue ( httpsPreferences ) ;
191
+ jest . spyOn ( mockPreferencesService , ' setPreferences' ) . mockResolvedValue ( { } as any ) ;
155
192
mockPreferencesService . deleteHttpsCredentials = jest . fn ( ) . mockResolvedValue ( undefined ) ;
156
- mockExportService . deleteRepositoryFolder . mockResolvedValue ( ) ;
193
+ jest . spyOn ( mockExportService , ' deleteRepositoryFolder' ) . mockResolvedValue ( undefined ) ;
157
194
158
195
await sourceControlService . disconnect ( ) ;
159
196
0 commit comments