12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- # frozen_string_literal: true
- require 'rails_helper'
- RSpec.describe 'The /.well-known/host-meta request' do
- context 'without extension format or accept header' do
- it 'returns http success with expected XML' do
- get '/.well-known/host-meta'
- expect(response)
- .to have_http_status(200)
- .and have_attributes(
- media_type: 'application/xrd+xml'
- )
- expect(xrd_link_template_value)
- .to eq 'https://cb6e6126.ngrok.io/.well-known/webfinger?resource={uri}'
- end
- def xrd_link_template_value
- response
- .parsed_body
- .at_xpath('/xrd:XRD/xrd:Link[@rel="lrdd"]/@template', 'xrd' => 'http://docs.oasis-open.org/ns/xri/xrd-1.0')
- .value
- end
- end
- context 'with a .json format extension' do
- it 'returns http success with expected JSON' do
- get '/.well-known/host-meta.json'
- expect(response)
- .to have_http_status(200)
- .and have_attributes(
- media_type: 'application/json'
- )
- expect(response.parsed_body)
- .to include(expected_json_template)
- end
- end
- context 'with a JSON `Accept` header' do
- it 'returns http success with expected JSON' do
- get '/.well-known/host-meta', headers: { 'Accept' => 'application/json' }
- expect(response)
- .to have_http_status(200)
- .and have_attributes(
- media_type: 'application/json'
- )
- expect(response.parsed_body)
- .to include(expected_json_template)
- end
- end
- def expected_json_template
- {
- links: [
- 'rel' => 'lrdd',
- 'template' => 'https://cb6e6126.ngrok.io/.well-known/webfinger?resource={uri}',
- ],
- }
- end
- end
|