|
|
- -module(elli_middleware_tests).
- -include_lib("eunit/include/eunit.hrl").
- -include("elli_test.hrl").
-
- elli_test_() ->
- {setup,
- fun setup/0, fun teardown/1,
- [
- ?_test(hello_world()),
- ?_test(short_circuit()),
- ?_test(compress()),
- ?_test(no_callbacks())
- ]}.
-
-
- %%
- %% TESTS
- %%
-
- short_circuit() ->
- URL = "http://localhost:3002/middleware/short-circuit",
- Response = hackney:get(URL),
- ?assertMatch(<<"short circuit!">>, body(Response)).
-
- hello_world() ->
- URL = "http://localhost:3002/hello/world",
- Response = hackney:get(URL),
- ?assertMatch(<<"Hello World!">>, body(Response)).
-
- compress() ->
- Url = "http://localhost:3002/compressed",
- Headers = [{<<"Accept-Encoding">>, <<"gzip">>}],
- Response = hackney:get(Url, Headers),
- ?assertHeadersEqual([{<<"Connection">>, <<"Keep-Alive">>},
- {<<"Content-Encoding">>, <<"gzip">>},
- {<<"Content-Length">>, <<"41">>}],
- headers(Response)),
- ?assertEqual(binary:copy(<<"Hello World!">>, 86),
- zlib:gunzip(body(Response))),
- Response1 = hackney:get("http://localhost:3002/compressed"),
- ?assertHeadersEqual([{<<"Connection">>, <<"Keep-Alive">>},
- {<<"Content-Length">>, <<"1032">>}],
- headers(Response1)),
- ?assertEqual(iolist_to_binary(lists:duplicate(86, "Hello World!")),
- body(Response1)),
- Url2 = "http://localhost:3002/compressed-io_list",
- Headers2 = [{<<"Accept-Encoding">>, <<"gzip">>}],
- Response2 = hackney:get(Url2, Headers2),
- ?assertMatch(200, status(Response2)),
- ?assertHeadersEqual([{<<"Connection">>, <<"Keep-Alive">>},
- {<<"Content-Encoding">>, <<"gzip">>},
- {<<"Content-Length">>, <<"41">>}],
- headers(Response2)),
- ?assertEqual(binary:copy(<<"Hello World!">>, 86),
- zlib:gunzip(body(Response2))),
- Response3 = hackney:request("http://localhost:3002/compressed-io_list"),
- ?assertMatch(200, status(Response3)),
- ?assertHeadersEqual([{<<"Connection">>, <<"Keep-Alive">>},
- {<<"Content-Length">>, <<"1032">>}],
- headers(Response3)),
- ?assertEqual(iolist_to_binary(lists:duplicate(86, "Hello World!")),
- body(Response3)).
-
- no_callbacks() ->
- Response = hackney:get("http://localhost:3004/whatever"),
- ?assertMatch(404, status(Response)),
- ?assertMatch(<<"Not Found">>, body(Response)).
-
-
- %%
- %% HELPERS
- %%
-
- setup() ->
- application:start(crypto),
- application:start(public_key),
- application:start(ssl),
- {ok, _} = application:ensure_all_started(hackney),
-
- Config = [
- {mods, [
- {elli_access_log, [{name, elli_syslog},
- {ip, "127.0.0.1"},
- {port, 514}]},
- {elli_example_middleware, []},
- {elli_middleware_compress, []},
- {elli_example_callback, []}
- ]}
- ],
-
- {ok, P1} = elli:start_link([{callback, elli_middleware},
- {callback_args, Config},
- {port, 3002}]),
- unlink(P1),
- {ok, P2} = elli:start_link([{callback, elli_middleware},
- {callback_args, [{mods, []}]},
- {port, 3004}]),
- unlink(P2),
- [P1, P2].
-
- teardown(Pids) ->
- [elli:stop(P) || P <- Pids].
|