Ejemplo n.º 1
0
    def test_processess_cron_with_available_image_with_deletion(
            self, slack, boto3, constants, aws):
        client = MagicMock()
        boto3.client.return_value = client
        server = helper.get_mock_server(state="stopped")
        aws.find_devserver.return_value = server
        aws.get_images.return_value = {"Images": [{"State": "available"}]}
        client.describe_images.return_value = {
            "Images": [{
                "ImageId": "foo",
                "BlockDeviceMappings": [{
                    "Ebs": {
                        "SnapshotId": "bar"
                    }
                }],
            }]
        }

        resp = albatross_internal.handle(get_test_cron(), None)

        self.assertEqual(200, resp["statusCode"])
        client.terminate_instances.assert_called_with(
            InstanceIds=[server["InstanceId"]])
        slack.post.assert_called_with("Image created and instance terminated")
        client.deregister_image.assert_called_with(ImageId="foo")
        client.delete_snapshot.assert_called_with(SnapshotId="bar")
Ejemplo n.º 2
0
    def test_processess_cron_with_running_server(self, slack, boto3, constants,
                                                 aws):
        client = MagicMock()
        boto3.client.return_value = client
        server = helper.get_mock_server(state="running")
        aws.find_devserver.return_value = server

        resp = albatross_internal.handle(get_test_cron(), None)

        self.assertEqual(200, resp["statusCode"])
        client.terminate_instances.assert_not_called()
        slack.post.assert_not_called()
Ejemplo n.º 3
0
    def test_processess_state_change_for_irrelevant_server(
            self, slack, boto3, constants, aws):
        client = MagicMock()
        boto3.client.return_value = client
        server = helper.get_mock_server(state="stopped")
        aws.find_devserver.return_value = server

        resp = albatross_internal.handle(get_state_change("foo", "bar"), None)

        self.assertEqual(200, resp["statusCode"])
        slack.post.assert_not_called()
        aws.create_image.assert_not_called()
        client.create_tags.assert_not_called()
Ejemplo n.º 4
0
    def test_processess_cron_with_unavailable_image(self, slack, boto3,
                                                    constants, aws):
        client = MagicMock()
        boto3.client.return_value = client
        server = helper.get_mock_server(state="stopped")
        aws.find_devserver.return_value = server
        aws.get_images.return_value = {"Images": [{"State": "pending"}]}

        resp = albatross_internal.handle(get_test_cron(), None)

        self.assertEqual(200, resp["statusCode"])
        client.terminate_instances.assert_not_called()
        slack.post.assert_not_called()
Ejemplo n.º 5
0
    def test_processess_sns_for_up_with_stopped_server(self, slack, boto3,
                                                       constants, aws):
        constants.UP = "up"
        resource = MagicMock()
        boto3.resource.return_value = resource
        client = MagicMock()
        boto3.client.return_value = client
        aws.find_devserver.return_value = helper.get_mock_server(
            state="stopped")

        resp = albatross_internal.handle(get_test_sns(constants.UP), None)

        self.assertEqual(200, resp["statusCode"])
        slack.post.assert_called_with(
            "Server is in the shutdown process, please wait")
        aws.spawn_devserver.assert_not_called()
Ejemplo n.º 6
0
    def test_processess_sns_for_up_with_running_server(self, slack, boto3,
                                                       constants, aws):
        constants.UP = "up"
        resource = MagicMock()
        boto3.resource.return_value = resource
        client = MagicMock()
        boto3.client.return_value = client
        aws.find_devserver.return_value = helper.get_mock_server(
            state="running")

        resp = albatross_internal.handle(get_test_sns(constants.UP), None)

        self.assertEqual(200, resp["statusCode"])
        slack.post.assert_called_with(
            "Server already running, can't start another one")
        aws.spawn_devserver.assert_not_called()
Ejemplo n.º 7
0
    def test_processess_sns_with_image(self, slack, boto3, constants, aws):
        constants.UP = "up"
        resource = MagicMock()
        boto3.resource.return_value = resource
        client = MagicMock()
        boto3.client.return_value = client
        aws.find_devserver.return_value = None
        aws.get_images.return_value = {"Images": [{"ImageId": "imageId"}]}
        server = MagicMock()
        server.public_dns_name = "foobar.com"
        aws.spawn_devserver.return_value = [server]

        resp = albatross_internal.handle(get_test_sns(constants.UP), None)

        self.assertEqual(200, resp["statusCode"])
        aws.spawn_devserver.assert_called_with(resource, "imageId")
        slack.post.assert_not_called()
Ejemplo n.º 8
0
    def test_processess_state_change_for_running_state_and_server(
            self, slack, boto3, constants, aws):
        client = MagicMock()
        boto3.client.return_value = client
        resource = MagicMock()
        boto3.resource.return_value = resource
        server = helper.get_mock_server(state="running")
        aws.find_devserver.return_value = server
        refreshed_server = MagicMock()
        refreshed_server.public_ip_address = "foobar.com"
        resource.Instance.return_value = refreshed_server

        resp = albatross_internal.handle(
            get_state_change(server["InstanceId"], "running"), None)

        self.assertEqual(200, resp["statusCode"])
        slack.post.assert_called_with("""devserver successfully started:
```
mosh -I albatross [email protected]
```""")
        aws.create_image.assert_not_called()
        client.create_tags.assert_not_called()
Ejemplo n.º 9
0
    def test_processess_state_change_for_stopping_state_and_server(
            self, slack, boto3, constants, aws):
        client = MagicMock()
        boto3.client.return_value = client
        server = helper.get_mock_server(state="stopped")
        aws.find_devserver.return_value = server
        aws.get_images.return_value = {"Images": [{"ImageId": "foo"}]}
        aws.create_image.return_value = {"ImageId": "id2"}

        resp = albatross_internal.handle(
            get_state_change(server["InstanceId"], "stopped"), None)

        self.assertEqual(200, resp["statusCode"])
        slack.post.assert_called_with("Instance has stopped, image created")
        aws.create_image.assert_called_with(client, server["InstanceId"])
        client.create_tags.assert_called_with(
            Resources=["id2"],
            Tags=[{
                "Key": "application",
                "Value": constants.DEVSERVER
            }],
        )
Ejemplo n.º 10
0
 def test_processess_sns_for_irrelevant_action(self, slack, boto3,
                                               constants, aws):
     constants.DOWN = "down"
     resp = albatross_internal.handle(get_test_sns(constants.DOWN), None)
     self.assertEqual(200, resp["statusCode"])
     slack.post.assert_not_called()