• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

parroty / exvcr / f6cc9bc0ae05f24b374e6c1fa9b52e9d0967e032-PR-202

pending completion
f6cc9bc0ae05f24b374e6c1fa9b52e9d0967e032-PR-202

Pull #202

github

parroty
Pull Request #202: Fix name conflict for finch test case

577 of 642 relevant lines covered (89.88%)

95.8 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

76.92
/lib/exvcr/adapter/ibrowse.ex
1
defmodule ExVCR.Adapter.IBrowse do
2
  @moduledoc """
3
  Provides adapter methods to mock :ibrowse methods.
4
  """
5

6
  use ExVCR.Adapter
7
  alias ExVCR.Util
8

9
  defmacro __using__(_opts) do
10
    # do nothing
11
  end
12

13
  defdelegate convert_from_string(string), to: ExVCR.Adapter.IBrowse.Converter
58✔
14
  defdelegate convert_to_string(request, response), to: ExVCR.Adapter.IBrowse.Converter
13✔
15
  defdelegate parse_request_body(request_body), to: ExVCR.Adapter.IBrowse.Converter
87✔
16

17
  @doc """
18
  Returns the name of the mock target module.
19
  """
20
  def module_name do
21
    :ibrowse
22
  end
23

24
  @doc """
25
  Returns list of the mock target methods with function name and callback.
26
  Implementation for global mock.
27
  """
28
  def target_methods() do
29
    [ {:send_req, &ExVCR.Recorder.request([&1,&2,&3])},
17✔
30
      {:send_req, &ExVCR.Recorder.request([&1,&2,&3,&4])},
4✔
31
      {:send_req, &ExVCR.Recorder.request([&1,&2,&3,&4,&5])},
×
32
      {:send_req, &ExVCR.Recorder.request([&1,&2,&3,&4,&5,&6])} ]
66✔
33
  end
34

35
  @doc """
36
  Returns list of the mock target methods with function name and callback.
37
  """
38
  def target_methods(recorder) do
39
    [ {:send_req, &ExVCR.Recorder.request(recorder, [&1,&2,&3])},
×
40
      {:send_req, &ExVCR.Recorder.request(recorder, [&1,&2,&3,&4])},
×
41
      {:send_req, &ExVCR.Recorder.request(recorder, [&1,&2,&3,&4,&5])},
×
42
      {:send_req, &ExVCR.Recorder.request(recorder, [&1,&2,&3,&4,&5,&6])} ]
×
43
  end
44

45
  @doc """
46
  Generate key for searching response.
47
  """
48
  def generate_keys_for_request(request) do
49
    url    = Enum.fetch!(request, 0)
87✔
50
    method = Enum.fetch!(request, 2)
87✔
51
    request_body = Enum.fetch(request, 3) |> parse_request_body
87✔
52
    headers = Enum.fetch!(request, 1) |> Util.stringify_keys
87✔
53

54
    [url: url, method: method, request_body: request_body, headers: headers]
55
  end
56

57
  @doc """
58
  Callback from ExVCR.Handler when response is retrieved from the HTTP server.
59
  """
60
  def hook_response_from_server(response) do
61
    apply_filters(response)
21✔
62
  end
63

64
  @doc """
65
  Callback from ExVCR.Handler to get the response content tuple from the ExVCR.Reponse record.
66
  """
67
  def get_response_value_from_cache(response) do
68
    if response.type == "error" do
57✔
69
      {:error, response.body}
3✔
70
    else
71
      status_code = case response.status_code do
54✔
72
        integer when is_integer(integer) ->
73
          Integer.to_charlist(integer)
×
74
        char_list when is_list(char_list) ->
75
          char_list
54✔
76
      end
77

78
      {:ok, status_code, response.headers, response.body}
54✔
79
    end
80
  end
81

82
  defp apply_filters({:ok, status_code, headers, body}) do
83
    replaced_body = to_string(body) |> ExVCR.Filter.filter_sensitive_data
20✔
84
    filtered_headers = ExVCR.Filter.remove_blacklisted_headers(headers)
20✔
85
    {:ok, status_code, filtered_headers, replaced_body}
20✔
86
  end
87

88
  defp apply_filters({:error, reason}) do
89
    {:error, reason}
90
  end
91

92
  @doc """
93
  Default definitions for stub.
94
  """
95
  def default_stub_params(:headers), do: %{"Content-Type" => "text/html"}
13✔
96
  def default_stub_params(:status_code), do: 200
97
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc