| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  | import { expect, tap } from '@pushrocks/tapbundle'; | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  | import * as smartssh from '../ts/index.js'; | 
					
						
							|  |  |  | import * as path from 'path'; | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  | let testSshInstance: smartssh.SshInstance; | 
					
						
							|  |  |  | let testSshKey: smartssh.SshKey; | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | tap.test('should create a valid SshKey object', async () => { | 
					
						
							|  |  |  |   testSshKey = new smartssh.SshKey({ | 
					
						
							|  |  |  |     host: 'example.com', | 
					
						
							|  |  |  |     private: 'someExamplePrivateKey', | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |     public: 'someExamplePublicKey', | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |   expect(testSshKey).toBeInstanceOf(smartssh.SshKey); | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | tap.test('.type should be a valid type', async () => { | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |   expect(testSshKey.type).toEqual('duplex'); | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | tap.test('.publicKey should be public key', async () => { | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |   expect(testSshKey.pubKey).toEqual('someExamplePublicKey'); | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | tap.test('.privateKey should be private key', async () => { | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |   expect(testSshKey.privKey).toEqual('someExamplePrivateKey'); | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | tap.test('.publicKeyBase64 should be public key base 64 encoded', async () => { | 
					
						
							|  |  |  |   // tslint:disable-next-line:no-unused-expression
 | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  |   testSshKey.pubKeyBase64; | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | tap.test('.store() should store the file to disk', async () => { | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  |   testSshKey.store(path.join(process.cwd(), 'test/temp')); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | // SSH INstance
 | 
					
						
							|  |  |  | tap.test("'new' keyword should create a new SshInstance object from class", async () => { | 
					
						
							|  |  |  |   testSshInstance = new smartssh.SshInstance({ | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |     sshDirPath: path.join(process.cwd(), 'test/temp/'), | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  |   }); | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |   expect(testSshInstance).toBeInstanceOf(smartssh.SshInstance); | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | tap.test('.addKey() should accept a new SshKey object', async () => { | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  |   testSshInstance.addKey( | 
					
						
							|  |  |  |     new smartssh.SshKey({ | 
					
						
							|  |  |  |       public: 'somePublicKey', | 
					
						
							|  |  |  |       private: 'somePrivateKey', | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |       host: 'gitlab.com', | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  |     }) | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  |   testSshInstance.addKey( | 
					
						
							|  |  |  |     new smartssh.SshKey({ | 
					
						
							|  |  |  |       public: 'somePublicKey', | 
					
						
							|  |  |  |       private: 'somePrivateKey', | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |       host: 'bitbucket.org', | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  |     }) | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  |   testSshInstance.addKey( | 
					
						
							|  |  |  |     new smartssh.SshKey({ | 
					
						
							|  |  |  |       public: 'someGitHubPublicKey', | 
					
						
							|  |  |  |       private: 'someGitHubPrivateKey', | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |       host: 'github.com', | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  |     }) | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | tap.test('.sshKeys should point to an array of sshKeys', async () => { | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  |   let sshKeyArray = testSshInstance.sshKeys; | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |   expect(sshKeyArray).toBeInstanceOf(Array); | 
					
						
							|  |  |  |   expect(sshKeyArray[0].host).toEqual('gitlab.com'); | 
					
						
							|  |  |  |   expect(sshKeyArray[1].host).toEqual('bitbucket.org'); | 
					
						
							|  |  |  |   expect(sshKeyArray[2].host).toEqual('github.com'); | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | tap.test('.getKey() should get a specific key selected by host', async () => { | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |   expect(testSshInstance.getKey('github.com').pubKey).toEqual('someGitHubPublicKey'); | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | tap.test('.removeKey() should remove a key', async () => { | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  |   testSshInstance.removeKey(testSshInstance.getKey('bitbucket.org')); | 
					
						
							| 
									
										
										
										
											2022-10-11 13:05:29 +02:00
										 |  |  |   expect(testSshInstance.sshKeys[1].host).toEqual('github.com'); | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | tap.test('it should store to disk', async () => { | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  |   testSshInstance.writeToDisk(); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2017-06-15 17:52:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-17 22:32:31 +02:00
										 |  |  | tap.start(); |