require 'test_helper' class Alipay::Wap::NotifyTest < Minitest::Test def setup @notify_id = 'notify_id_test' @notify_params = { service: 'alipay.wap.trade.create.direct', v: '1.0', sec_id: 'MD5', notify_data: "#{@notify_id}other_value" } query = [ :service, :v, :sec_id, :notify_data ].map {|key| "#{key}=#{@notify_params[key]}"}.join('&') @sign_params = @notify_params.merge(sign: Digest::MD5.hexdigest("#{query}#{Alipay.key}")) end def test_unsign_notify stub_request( :get, "https://mapi.alipay.com/gateway.do?service=notify_verify&partner=#{Alipay.pid}¬ify_id=#{@notify_id}" ).to_return(body: "true") assert !Alipay::Wap::Notify.verify?(@notify_params) end def test_verify_notify_when_true stub_request( :get, "https://mapi.alipay.com/gateway.do?service=notify_verify&partner=#{Alipay.pid}¬ify_id=#{@notify_id}" ).to_return(body: "true") assert Alipay::Wap::Notify.verify?(@sign_params) end def test_verify_notify_when_false stub_request( :get, "https://mapi.alipay.com/gateway.do?service=notify_verify&partner=#{Alipay.pid}¬ify_id=#{@notify_id}" ).to_return(body: "false") assert !Alipay::Wap::Notify.verify?(@sign_params) end end