@@ -57,4 +57,23 @@ describe('credential', () => {
5757 expect ( restoredRemoteUrl ) . toBe ( originalRemoteUrl ) ;
5858 expect ( restoredRemoteUrl . includes ( exampleToken ) ) . toBe ( false ) ;
5959 } ) ;
60+
61+ test ( 'methods are idempotent' , async ( ) => {
62+ const originalRemoteUrl = await getRemoteUrl ( dir , defaultGitInfo . remote ) ;
63+ await credentialOn ( dir , originalRemoteUrl , defaultGitInfo . gitUserName , exampleToken , defaultGitInfo . remote ) ;
64+ const newRemoteUrl1 = await getRemoteUrl ( dir , defaultGitInfo . remote ) ;
65+ expect ( newRemoteUrl1 . includes ( exampleToken ) ) . toBe ( true ) ;
66+ await credentialOn ( dir , newRemoteUrl1 , defaultGitInfo . gitUserName , exampleToken , defaultGitInfo . remote ) ;
67+ await credentialOn ( dir , newRemoteUrl1 , defaultGitInfo . gitUserName , exampleToken , defaultGitInfo . remote ) ;
68+ await credentialOn ( dir , newRemoteUrl1 , defaultGitInfo . gitUserName , exampleToken , defaultGitInfo . remote ) ;
69+ const newRemoteUrl2 = await getRemoteUrl ( dir , defaultGitInfo . remote ) ;
70+ expect ( newRemoteUrl2 . includes ( exampleToken ) ) . toBe ( true ) ;
71+ expect ( newRemoteUrl2 ) . toBe ( newRemoteUrl1 ) ;
72+ await credentialOff ( dir , defaultGitInfo . remote ) ;
73+ await credentialOff ( dir , defaultGitInfo . remote ) ;
74+ await credentialOff ( dir , defaultGitInfo . remote ) ;
75+ const restoredRemoteUrl = await getRemoteUrl ( dir , defaultGitInfo . remote ) ;
76+ expect ( restoredRemoteUrl ) . toBe ( originalRemoteUrl ) ;
77+ expect ( restoredRemoteUrl . includes ( exampleToken ) ) . toBe ( false ) ;
78+ } ) ;
6079} ) ;
0 commit comments