Sistemati path API /v1, AppArmor/auth MediaMTX sul nodo e defaults nbg1 così lo smoke Cloud è ripetibile. Co-authored-by: Cursor <cursoragent@cursor.com>
36 lines
1.3 KiB
Ruby
36 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "rails_helper"
|
|
|
|
RSpec.describe Streams::DnsProviders::Hetzner do
|
|
let(:stubs) { Faraday::Adapter::Test::Stubs.new }
|
|
let(:conn) do
|
|
Faraday.new(url: Streams::DnsProviders::Hetzner::API) do |f|
|
|
f.request :json
|
|
f.response :json
|
|
f.adapter :test, stubs
|
|
end
|
|
end
|
|
let(:provider) { described_class.new(token: "test-token", zone: "mltv-stream.net", conn: conn) }
|
|
|
|
after { stubs.verify_stubbed_calls }
|
|
|
|
it "upserts an A record (delete then create)" do
|
|
stubs.delete("https://api.hetzner.cloud/v1/zones/mltv-stream.net/rrsets/ingest-01/A") { [404, {}, ""] }
|
|
stubs.post("https://api.hetzner.cloud/v1/zones/mltv-stream.net/rrsets") do |env|
|
|
body = JSON.parse(env.body)
|
|
expect(body["name"]).to eq("ingest-01")
|
|
expect(body["type"]).to eq("A")
|
|
expect(body["records"].first["value"]).to eq("49.13.1.2")
|
|
[201, { "Content-Type" => "application/json" }, { "rrset" => { "name" => "ingest-01" } }]
|
|
end
|
|
|
|
expect(provider.upsert_a("ingest-01.mltv-stream.net", "49.13.1.2")).to eq(true)
|
|
end
|
|
|
|
it "deletes an A record" do
|
|
stubs.delete("https://api.hetzner.cloud/v1/zones/mltv-stream.net/rrsets/ingest-01/A") { [204, {}, ""] }
|
|
expect(provider.delete_a("ingest-01.mltv-stream.net")).to eq(true)
|
|
end
|
|
end
|