Files
manyfold/spec/requests/api/nodeinfo_spec.rb

84 lines
2.5 KiB
Ruby

# spec/requests/blogs_spec.rb
require "swagger_helper"
describe "NodeInfo" do # rubocop:disable RSpec/EmptyExampleGroup
path "/.well-known/nodeinfo" do
get "Discovery URL for NodeInfo protocol" do
tags "NodeInfo"
produces "application/json; profile=\"http://nodeinfo.diaspora.software/ns/schema/2.0#\""
response "200", "Success" do
schema type: :object,
properties: {
links: {
type: :array,
items: {
type: :object,
properties: {
rel: {type: :string, example: "https://nodeinfo.diaspora.software/ns/schema/2.0"},
href: {type: :string, example: "/nodeinfo/2.0", description: "The URL to the full NodeInfo document"}
}
}
}
},
required: ["links"]
run_test!
end
end
end
path "/nodeinfo/2.0" do
get "Get server metadata in NodeInfo 2.0 format" do
tags "NodeInfo"
produces "application/json; profile=\"http://nodeinfo.diaspora.software/ns/schema/2.0#\""
response "200", "Success" do
schema type: :object,
properties: {
version: {type: :string, example: "2.0"},
software: {
type: :object,
properties: {
name: {type: :string, example: "Manyfold"},
version: {type: :string, example: "v0.103.0"}
}
},
protocols: {
type: :array,
items: {
type: :string,
example: "activitypub"
}
},
services: {
type: :object,
properties: {
inbound: {type: :array, items: {type: :string}, example: []},
outbound: {type: :array, items: {type: :string}, example: []}
}
},
openRegistrations: {type: :boolean},
usage: {
type: :object,
properties: {
users: {
type: :object,
properties: {
total: {type: :integer},
activeMonth: {type: :integer},
activeHalfyear: {type: :integer}
}
}
}
},
metadata: {type: :object}
},
required: ["version", "software", "protocols", "openRegistrations"]
run_test!
end
end
end
end