require 'rails_helper' RSpec.describe "WebFinger", type: :request do describe "remoteStorage link relation" do context "user exists" do before do create :user, cn: 'tony', ou: 'kosmos.org' end context "remoteStorage service enabled" do it "includes the remoteStorage link for the user" do get "/.well-known/webfinger?resource=acct%3Atony%40kosmos.org" expect(response).to have_http_status(:ok) res = JSON.parse(response.body) rs_link = res["links"].find {|l| l["rel"] == "http://tools.ietf.org/id/draft-dejong-remotestorage"} expect(rs_link["href"]).to eql("https://storage.kosmos.org/tony@kosmos.org") oauth_url = rs_link["properties"]["http://tools.ietf.org/html/rfc6749#section-4.2"] expect(oauth_url).to eql("https://example.com/rs/oauth") end end context "remoteStorage service disabled" do before do Setting.remotestorage_enabled = false end it "does not include the remoteStorage link" do get "/.well-known/webfinger?resource=acct%3Atony%40kosmos.org" expect(response).to have_http_status(:ok) res = JSON.parse(response.body) rs_link = res["links"].find {|l| l["rel"] == "http://tools.ietf.org/id/draft-dejong-remotestorage"} expect(rs_link).to be_nil end end end context "user does not exist" do it "does return a 404 status" do get "/.well-known/webfinger?resource=acct%3Ajane.doe%40kosmos.org" expect(response).to have_http_status(:not_found) end end end end