Example #1
0
 public function testLaunchInstancesWithAWSInstanceAccess()
 {
     $image = new Image('ami-123345', []);
     $fakeKey = '---FAKEKey---';
     $generatedKeyName = 'FakeKeyName';
     $instanceAccess = new InstanceAccess();
     $instanceAccess->setCredentials(['key.name' => $generatedKeyName]);
     $this->patchClassMethod('App\\Platform\\Aws\\Client::convertToInstances');
     $this->patchClassMethod('App\\Platform\\Aws\\Client::getEc2Client', function () use($fakeKey, $generatedKeyName) {
         $mockEc2Client = $this->getMockEc2Client(['runInstances', 'deleteKeyPair', 'createKeyPair', 'waitUntilInstanceRunning']);
         $mockEc2Client->expects($this->once())->method('runInstances')->will($this->returnCallback(function ($config) use($generatedKeyName) {
             $yamlDumper = new Dumper();
             $this->assertEquals(['ImageId' => 'ami-123345', 'MinCount' => 1, 'MaxCount' => 1, 'KeyName' => $generatedKeyName], $config);
             return new GuzzleModel(['Instances' => [['InstanceId' => 'i-123456']]]);
         }));
         $mockEc2Client->expects($this->once())->method('deleteKeyPair')->with($this->equalTo(['KeyName' => $generatedKeyName]))->will($this->returnValue(new GuzzleModel([])));
         $mockEc2Client->expects($this->once())->method('createKeyPair')->with($this->equalTo(['KeyName' => $generatedKeyName]))->will($this->returnValue(new GuzzleModel(['KeyName' => $generatedKeyName, 'KeyFingerprint' => '99:99:aa:...:...', 'KeyMaterial' => $fakeKey])));
         $mockEc2Client->expects($this->once())->method('waitUntilInstanceRunning');
         return $mockEc2Client;
     }, 1);
     $client = new Client();
     $client->launchInstances($image, 1, [], $instanceAccess);
     $this->assertEquals($fakeKey, $instanceAccess->get('key'));
 }