Files
redux-scraper/spec/lib/scraper/fa_http_client_config_spec.rb
2025-02-25 05:47:44 +00:00

117 lines
3.3 KiB
Ruby

# typed: false
require "rails_helper"
RSpec.describe Scraper::FaHttpClientConfig do
describe "#cookies" do
let(:config) { described_class.new }
context "when all cookies are valid" do
before do
allow(GlobalState).to receive(:get).with(
"furaffinity-cookie-a",
).and_return("12345678-1234-1234-1234-123456789abc")
allow(GlobalState).to receive(:get).with(
"furaffinity-cookie-b",
).and_return("abcdef12-3456-7890-1234-567890abcdef")
allow(GlobalState).to receive(:get).with(
"furaffinity-cookie-oaid",
).and_return("0123456789abcdef0123456789abcdef")
end
it "returns the correct cookie structure" do
cookies = config.cookies
expect(cookies).to match(
[
{
domain: ".furaffinity.net",
cookies: [
{
name: "a",
value: "12345678-1234-1234-1234-123456789abc",
path: "/",
},
{
name: "b",
value: "abcdef12-3456-7890-1234-567890abcdef",
path: "/",
},
],
},
{
domain: "rv.furaffinity.net",
cookies: [
{
name: "OAID",
value: "0123456789abcdef0123456789abcdef",
path: "/",
},
],
},
],
)
end
end
context "when cookies are missing" do
before do
allow(GlobalState).to receive(:get).with(
"furaffinity-cookie-a",
).and_return(nil)
allow(GlobalState).to receive(:get).with(
"furaffinity-cookie-b",
).and_return("abcdef12-3456-7890-1234-567890abcdef")
allow(GlobalState).to receive(:get).with(
"furaffinity-cookie-oaid",
).and_return("0123456789abcdef0123456789abcdef")
end
it "raises an error" do
expect { config.cookies }.to raise_error("a cookie is not set")
end
end
context "when cookies have invalid format" do
before do
allow(GlobalState).to receive(:get).with(
"furaffinity-cookie-a",
).and_return("12345678-1234-1234-1234-123456789abc")
allow(GlobalState).to receive(:get).with(
"furaffinity-cookie-b",
).and_return("invalid-uuid-format")
allow(GlobalState).to receive(:get).with(
"furaffinity-cookie-oaid",
).and_return("0123456789abcdef0123456789abcdef")
end
it "raises an error" do
expect { config.cookies }.to raise_error("b cookie has invalid format")
end
end
end
describe "#allowed_domains" do
it "returns the default allowed domains" do
config = described_class.new
expect(config.allowed_domains).to eq(
%w[*.furaffinity.net *.facdn.net ipinfo.io],
)
end
end
describe "#redirect_limit" do
it "returns the configured redirect limit" do
config = described_class.new
expect(config.redirect_limit).to eq(4)
end
end
describe "#ratelimit" do
it "returns the configured rate limits" do
config = described_class.new
expect(config.ratelimit).to eq(
[["d.furaffinity.net", :none], ["*.facdn.net", :none], ["*", 1]],
)
end
end
end