// Creates a new key pair and returns the private info and the public keypair func createKey(name string, ec2client *ec2.EC2) (string, ec2.KeyPairInfo, error) { //Build our input data keyIn := ec2.CreateKeyPairInput{ KeyName: aws.String(name), } //Create the keypair and get the response from the system keyResp, err := ec2client.CreateKeyPair(&keyIn) if err != nil { return "", ec2.KeyPairInfo{}, err } //Setup our key info object to return keyInfo := ec2.KeyPairInfo{ KeyFingerprint: keyResp.KeyFingerprint, KeyName: keyResp.KeyName, } return *keyResp.KeyMaterial, keyInfo, nil }
BeforeEach(func() { fakeBackend = &FakeEC2Backend{} fakeServer = httptest.NewServer(awsfaker.New(fakeBackend)) client = ec2.New(newSession(fakeServer.URL)) }) AfterEach(func() { if fakeServer != nil { fakeServer.Close() } }) It("should call the backend method", func() { client.CreateKeyPair( &ec2.CreateKeyPairInput{ KeyName: aws.String("some-key-name"), }) Expect(fakeBackend.CreateKeyPairCall.Receives).NotTo(BeNil()) Expect(fakeBackend.CreateKeyPairCall.Receives.KeyName).To(Equal(aws.String("some-key-name"))) }) Context("when the backend succeeds", func() { It("should return the data in a format parsable by the client library", func() { fakeBackend.CreateKeyPairCall.ReturnsResult = &ec2.CreateKeyPairOutput{ KeyFingerprint: aws.String("some-fingerprint"), KeyMaterial: aws.String("some-pem-data"), KeyName: aws.String("some-key-name"), } output, err := client.CreateKeyPair(