diff --git a/app/controllers/lnurlpay_controller.rb b/app/controllers/lnurlpay_controller.rb index d600287..5763262 100644 --- a/app/controllers/lnurlpay_controller.rb +++ b/app/controllers/lnurlpay_controller.rb @@ -18,8 +18,8 @@ class LnurlpayController < ApplicationController commentAllowed: MAX_COMMENT_CHARS } - if Setting.nostr_enabled? && Setting.nostr_private_key.present? - res[:allows_nostr] = true + if Setting.nostr_enabled? + res[:allowsNostr] = true res[:nostrPubkey] = Setting.nostr_public_key end @@ -52,7 +52,7 @@ class LnurlpayController < ApplicationController return end - if params[:nostr].present?# TODO && Setting.nostr_enabled? + if params[:nostr].present? && Setting.nostr_enabled? handle_zap_request amount, params[:nostr], params[:lnurl] else handle_pay_request address, amount, comment diff --git a/app/models/setting.rb b/app/models/setting.rb index 1ffddc1..c0aa001 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -160,7 +160,8 @@ class Setting < RailsSettings::Base # Nostr # - field :nostr_enabled, type: :boolean, default: false + field :nostr_enabled, type: :boolean, + default: ENV["NOSTR_PRIVATE_KEY"].present? field :nostr_private_key, type: :string, default: ENV["NOSTR_PRIVATE_KEY"].presence diff --git a/spec/requests/lnurlpay_spec.rb b/spec/requests/lnurlpay_spec.rb index 33ef90c..5e3b900 100644 --- a/spec/requests/lnurlpay_spec.rb +++ b/spec/requests/lnurlpay_spec.rb @@ -29,6 +29,7 @@ RSpec.describe "/lnurlpay", type: :request do before do login_as user, :scope => :user + Setting.nostr_enabled = false end describe "GET /.well-known/lnurlp/:username" do @@ -44,6 +45,21 @@ RSpec.describe "/lnurlpay", type: :request do expect(res["minSendable"]).to be_a(Integer) expect(res["maxSendable"]).to be_a(Integer) expect(res["commentAllowed"]).to be_a(Integer) + expect(res["allowsNostr"]).to be_nil + end + + context "with support for nostr zaps" do + before do + Setting.nostr_enabled = true + end + + it "returns NIP-57 properties" do + get lightning_address_path(username: "satoshi") + + res = JSON.parse(response.body) + expect(res["allowsNostr"]).to be(true) + expect(res["nostrPubkey"]).to eq(Setting.nostr_public_key) + end end end @@ -104,6 +120,10 @@ RSpec.describe "/lnurlpay", type: :request do end context "zap request" do + before do + Setting.nostr_enabled = true + end + describe "with invalid request event" do it "returns an error" do get lnurlpay_invoice_path(username: "satoshi", params: {