253 lines
7.5 KiB
Plaintext
253 lines
7.5 KiB
Plaintext
require_relative "../support/spec_helper"
|
|
|
|
module Dalmatian
|
|
RSpec.describe Rds do
|
|
let(:rds_reference) do
|
|
{
|
|
"identifier" => "testservice",
|
|
"in_use_by" => [
|
|
"test-service"
|
|
],
|
|
"instance_class" => {
|
|
"production" => "db.t2.small",
|
|
"staging" => "db.t2.micro"
|
|
},
|
|
"engine" => "postgres",
|
|
"engine_version" => "11.4",
|
|
"allocated_storage" => 20,
|
|
"storage_encrypted" => true,
|
|
"storage_type" => "gp3",
|
|
"db_name" => "testapp",
|
|
"port" => 5432,
|
|
"maintenance_window" => "mon:19:00-mon:19:30",
|
|
"backup_window" => "09:00-10:00",
|
|
"backup_retention_period" => 31,
|
|
"force_ssl" => true,
|
|
"parameter_store_path_db_url_name" => "DATABASE_URL",
|
|
"sql_backup_scheduled_task_environment_variables" => [
|
|
{
|
|
"name" => "foo",
|
|
"value" => "bar"
|
|
}
|
|
],
|
|
"check_sql_backup_scheduled_task_environment_variables" => [
|
|
{
|
|
"name" => "foo",
|
|
"value" => "bar"
|
|
}
|
|
],
|
|
"sync_sql_backup_to_azure" => false,
|
|
"replication_bucket_destination_arn" => "arn:aws:s3:::dest-bucket",
|
|
"replication_kms_key_id" => "key-id",
|
|
"codebuild_access" => [
|
|
"service-name"
|
|
]
|
|
}
|
|
end
|
|
|
|
let(:cluster) do
|
|
instance_double(
|
|
Cluster,
|
|
id: "new-dedicated-cluster",
|
|
name: "new-dedicated-cluster",
|
|
environments: {"staging" => {}, "production" => {}},
|
|
services: [double(name: "test-service", domain_names: {"staging" => ["example-domain-name.co.uk"]}, launch_on_cluster: "test"),
|
|
double(name: "test-service", domain_names: {"staging" => ["example-domain-name.co.uk"]}, launch_on_cluster: "")],
|
|
account_id: 123456789012,
|
|
rdss: [double(reference: {identifier: "someotherrds"}),
|
|
double(reference: rds_reference)]
|
|
)
|
|
end
|
|
let(:rds) { Rds.new(cluster: cluster, reference: rds_reference) }
|
|
|
|
describe "#identifier" do
|
|
it "uses rds identifier" do
|
|
expect(rds.identifier).to eq("testservice")
|
|
end
|
|
end
|
|
|
|
describe "#in_use_by" do
|
|
it "uses rds in_use_by list" do
|
|
expect(rds.in_use_by).to eq(["test-service"])
|
|
end
|
|
end
|
|
|
|
describe "#clusters_in_use" do
|
|
it "uses rds clusters_in_use list" do
|
|
expect(rds.clusters_in_use).to eq({"staging" => ["test", "default_dalmatian_ecs_cluster"], "production" => ["test", "default_dalmatian_ecs_cluster"]})
|
|
end
|
|
end
|
|
|
|
describe "#instance_class" do
|
|
it "uses rds instance_class" do
|
|
expect(rds.instance_class).to eq({"production" => "db.t2.small", "staging" => "db.t2.micro"})
|
|
end
|
|
end
|
|
|
|
describe "#engine" do
|
|
it "uses rds engine" do
|
|
expect(rds.engine).to eq("postgres")
|
|
end
|
|
end
|
|
|
|
describe "#engine_version" do
|
|
it "uses the rds engine_version" do
|
|
expect(rds.engine_version).to eq("11.4")
|
|
end
|
|
end
|
|
|
|
describe "#allocated_storage" do
|
|
it "uses the rds allocated_storage" do
|
|
expect(rds.allocated_storage).to eq(20)
|
|
end
|
|
end
|
|
|
|
describe "#storage_encrypted" do
|
|
it "uses the rds storage_encrypted bool" do
|
|
expect(rds.storage_encrypted).to eq(true)
|
|
end
|
|
end
|
|
|
|
describe "#storage_type" do
|
|
it "uses the rds storage_type gp3" do
|
|
expect(rds.storage_type).to eq("gp3")
|
|
end
|
|
end
|
|
|
|
describe "#db_name" do
|
|
it "uses the rds db_name" do
|
|
expect(rds.db_name).to eq("testapp")
|
|
end
|
|
end
|
|
|
|
describe "#port" do
|
|
it "uses the rds port" do
|
|
expect(rds.port).to eq(5432)
|
|
end
|
|
end
|
|
|
|
describe "#maintenance_window" do
|
|
it "uses the rds maintenance_window" do
|
|
expect(rds.maintenance_window).to eq("mon:19:00-mon:19:30")
|
|
end
|
|
end
|
|
|
|
describe "#backup_window" do
|
|
it "uses the rds backup_window" do
|
|
expect(rds.backup_window).to eq("09:00-10:00")
|
|
end
|
|
end
|
|
|
|
describe "#backup_retention_period" do
|
|
it "uses the rds backup_retention_period" do
|
|
expect(rds.backup_retention_period).to eq(31)
|
|
end
|
|
end
|
|
|
|
describe "#force_ssl" do
|
|
it "uses the rds force_ssl bool" do
|
|
expect(rds.force_ssl).to eq(true)
|
|
end
|
|
end
|
|
|
|
describe "#parameter_store_path_db_url_name" do
|
|
it "uses the rds parameter_store_path_db_url_name" do
|
|
expect(rds.parameter_store_path_db_url_name).to eq("DATABASE_URL")
|
|
end
|
|
end
|
|
|
|
describe "#sql_backup_scheduled_task_environment_variables" do
|
|
it "uses the rds sql_backup_scheduled_task_environment_variables" do
|
|
expect(rds.sql_backup_scheduled_task_environment_variables).to eq([{"name" => "foo", "value" => "bar"}])
|
|
end
|
|
end
|
|
|
|
describe "#check_sql_backup_scheduled_task_environment_variables" do
|
|
it "uses the rds check_sql_backup_scheduled_task_environment_variables" do
|
|
expect(rds.check_sql_backup_scheduled_task_environment_variables).to eq([{"name" => "foo", "value" => "bar"}])
|
|
end
|
|
end
|
|
|
|
describe "#sync_sql_backup_to_azure" do
|
|
it "will have offsite backups disabled by default" do
|
|
expect(rds.sync_sql_backup_to_azure).to eq(false)
|
|
end
|
|
end
|
|
|
|
describe "#replication_bucket_destination_arn" do
|
|
it "uses the rds replication_bucket_destination_arn" do
|
|
expect(rds.replication_bucket_destination_arn).to eq("arn:aws:s3:::dest-bucket")
|
|
end
|
|
end
|
|
|
|
describe "#replication_kms_key_id" do
|
|
it "uses the rds replication_kms_key_id" do
|
|
expect(rds.replication_kms_key_id).to eq("key-id")
|
|
end
|
|
end
|
|
|
|
describe "#codebuild_access" do
|
|
it "uses the rds codebuild_access" do
|
|
expect(rds.codebuild_access).to eq(["service-name"])
|
|
end
|
|
end
|
|
|
|
describe "#to_params" do
|
|
it "provides a hash of attributes for use in deployment" do
|
|
expected_params = {
|
|
"identifier" => "testservice",
|
|
"in_use_by" => [
|
|
"test-service"
|
|
],
|
|
"clusters_in_use" => {
|
|
"production" => [
|
|
"test",
|
|
"default_dalmatian_ecs_cluster"
|
|
],
|
|
"staging" => [
|
|
"test",
|
|
"default_dalmatian_ecs_cluster"
|
|
]
|
|
},
|
|
"instance_class" => {
|
|
"production" => "db.t2.small",
|
|
"staging" => "db.t2.micro"
|
|
},
|
|
"engine" => "postgres",
|
|
"engine_version" => "11.4",
|
|
"allocated_storage" => 20,
|
|
"storage_encrypted" => true,
|
|
"storage_type" => "gp3",
|
|
"db_name" => "testapp",
|
|
"port" => 5432,
|
|
"maintenance_window" => "mon:19:00-mon:19:30",
|
|
"backup_window" => "09:00-10:00",
|
|
"backup_retention_period" => 31,
|
|
"force_ssl" => true,
|
|
"parameter_store_path_db_url_name" => "DATABASE_URL",
|
|
"sql_backup_scheduled_task_environment_variables" => [
|
|
{
|
|
"name" => "foo",
|
|
"value" => "bar"
|
|
}
|
|
],
|
|
"check_sql_backup_scheduled_task_environment_variables" => [
|
|
{
|
|
"name" => "foo",
|
|
"value" => "bar"
|
|
}
|
|
],
|
|
"sync_sql_backup_to_azure" => false,
|
|
"replication_bucket_destination_arn" => "arn:aws:s3:::dest-bucket",
|
|
"replication_kms_key_id" => "key-id",
|
|
"codebuild_access" => [
|
|
"service-name"
|
|
]
|
|
}
|
|
|
|
expect(rds.to_params).to eq(expected_params)
|
|
end
|
|
end
|
|
end
|
|
end
|