Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions lib/paystack/base_resource.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,13 @@ def self.new(transport)
instance.instance_variable_set(:@transport, transport)
instance
end

def inspect
@transport.inspect
end

def to_s
@transport.to_s
end
end
end
8 changes: 8 additions & 0 deletions lib/paystack/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,13 @@ def virtual_terminal
@virtual_terminal ||= Resources::VirtualTerminal.new(@transport)
end


def inspect
@transport.inspect
end

def to_s
@transport.to_s
end
end
end
18 changes: 18 additions & 0 deletions lib/paystack/transport.rb
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,23 @@ def ssl_options
read_timeout: 30
}
end

def masked_api_key
visible_prefix = 8
visible_suffix = 4
return "[key too short to mask]" if @api_key.nil? || @api_key.length <= visible_prefix + visible_suffix

"#{@api_key[0, visible_prefix]}#{"*" * 8}#{@api_key[-visible_suffix, visible_suffix]}"
end

public

def inspect
"#<#{self.class.name} api_key=#{masked_api_key.inspect}>"
end

def to_s
inspect
end
end
end
16 changes: 16 additions & 0 deletions test/paystack/client_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -251,4 +251,20 @@ def test_memoizes_virtual_terminal_resource
assert_same @client.virtual_terminal, @client.virtual_terminal
end


def test_inspect_masks_the_api_key
key = "sk_test_abcdefghijklmnopqrstuvwxyz"
client = Paystack::Client.new(key)

refute_includes client.inspect, key
assert_includes client.inspect, key[0, 8]
assert_includes client.inspect, key[-4, 4]
end

def test_to_s_masks_the_api_key
key = "sk_test_abcdefghijklmnopqrstuvwxyz"
client = Paystack::Client.new(key)

refute_includes client.to_s, key
end
end
Loading