aboutsummaryrefslogtreecommitdiffstats
path: root/src/resource_handler_tests.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/resource_handler_tests.erl')
-rw-r--r--src/resource_handler_tests.erl63
1 files changed, 45 insertions, 18 deletions
diff --git a/src/resource_handler_tests.erl b/src/resource_handler_tests.erl
index cab9558..75e5302 100644
--- a/src/resource_handler_tests.erl
+++ b/src/resource_handler_tests.erl
@@ -24,7 +24,8 @@
-import(resource_handler, [
parse_put_body/1,
parse_reconfiguration_put_body/1,
- handle_reconfigure_put/6
+ handle_reconfigure_put/5,
+ handle_put/6
]).
parse_put_body_test() ->
@@ -58,7 +59,7 @@ parse_put_body_test() ->
[{<<"Greeting">>,<<"greet">>,<<"GET">>}],
[#program{type = <<"flows">>, id = <<"WhoFlow">>}, #program{type = <<"services">>, id = <<"Greeting">>}],
[{<<"flows">>,<<"WhoFlow">>,#{<<"foopprog">>=><<"barpprog">>}}]},
- Expected = {pf, <<"program-flowlet">>, ExpectedL},
+ Expected = {<<"program-flowlet">>, ExpectedL},
?assert(parse_put_body(jiffy:encode(Valid)) == Expected),
ValidHydrator1 =
@@ -68,7 +69,7 @@ parse_put_body_test() ->
{<<"streamname">>, <<"sn">>},
{<<"pipeline_config_json_url">>, "www.foo.com"}
]},
- ExpectedHy1 = {hp,<<"hydrator-pipeline">>,{<<"ns">>,<<"sn">>,"www.foo.com",[]}},
+ ExpectedHy1 = {<<"hydrator-pipeline">>, {<<"ns">>,<<"sn">>,"www.foo.com",[]}},
?assert(parse_put_body(jiffy:encode(ValidHydrator1)) == ExpectedHy1),
ValidHydrator2 =
@@ -88,42 +89,65 @@ parse_put_body_test() ->
]}
]},
%{hp, <<"hydrator-pipeline">>, {Namespace, Streamname, PipelineConfigJsonURL, ParsedDependencies}}
- ExpectedHy2 = {hp,<<"hydrator-pipeline">>,{<<"ns">>,<<"sn">>,"www.foo.com",[{"system:cdap-data-pipeline[4.1.0,5.0.0)",<<"art carney">>,"1.0.0-SNAPSHOT",<<"www.foo.com/sup/baphomet.jar">>,<<"www.foo2.com/sup/baphomet.jar">>}]}},
+ ExpectedHy2 = {<<"hydrator-pipeline">>, {<<"ns">>,<<"sn">>,"www.foo.com",[{"system:cdap-data-pipeline[4.1.0,5.0.0)",<<"art carney">>,"1.0.0-SNAPSHOT",<<"www.foo.com/sup/baphomet.jar">>,<<"www.foo2.com/sup/baphomet.jar">>}]}},
?assert(parse_put_body(jiffy:encode(ValidHydrator2)) == ExpectedHy2),
- InvalidType = {[{<<"cdap_application_type">>, <<"NOT TODAY">>}]},
- erlang:display(parse_put_body(jiffy:encode(InvalidType))),
- ?assert(parse_put_body(jiffy:encode(InvalidType)) == unsupported),
+ %Test the unexpected cases
+ EmptyD = dict:new(),
+ try meck:new(resource_handler, [passthrough]) catch _:_ -> ok end,
+ meck:expect(resource_handler, appname_to_field_vals, fun(X, [<<"appname">>]) ->
+ case X of
+ <<"notexist">> -> none;
+ <<"exist">> -> [<<"exist">>]
+ end
+ end),
+
+
+ %check already exists
+ ?assert(handle_put("", EmptyD, "textxer", <<"exist">>, Valid, "www.validurl.com") == {400, "Put recieved on /application/:appname but appname is already registered. Call /application/:appname/reconfigure if trying to reconfigure or delete first", EmptyD}),
+
+ InvalidType = jiffy:encode({[{<<"cdap_application_type">>, <<"NOT TODAY">>}]}),
+ ?assert(parse_put_body(InvalidType) == unsupported),
+ ?assert(handle_put("", EmptyD, "textxer", <<"notexist">>, InvalidType, "www.validurl.com") == {400,"Unsupported CDAP Application Type", EmptyD}),
InvalidMissing = {[
{<<"cdap_application_type">>, <<"program-flowlet">>},
{<<"namespace">>, <<"ns">>}
]},
- ?assert(parse_put_body(jiffy:encode(InvalidMissing)) == invalid).
+ ?assert(parse_put_body(jiffy:encode(InvalidMissing)) == invalid),
+ ?assert(handle_put("", EmptyD, "textxer", <<"notexist">>, InvalidMissing, "www.validurl.com") == {400, "Invalid PUT Body or unparseable URL", EmptyD}),
+
+ InvalidMissing2 = {[{<<"malformed">>, <<"i am">>}]},
+ ?assert(parse_put_body(jiffy:encode(InvalidMissing2)) == invalid),
+ ?assert(handle_put("", EmptyD, "textxer", <<"notexist">>, InvalidMissing2, "www.validurl.com") == {400, "Invalid PUT Body or unparseable URL", EmptyD}),
+
+ meck:unload(resource_handler).
+
reconfiguration_put_test() ->
%test reconfiguring with an invalid PUT body (missing "reconfiguration_type")
- AppnameToNS = fun(X) ->
- case X of
- <<"notexist">> -> none;
- <<"exist">> -> <<"ns">>
- end
- end,
EmptyD = dict:new(),
+ try meck:new(resource_handler, [passthrough]) catch _:_ -> ok end,
+ meck:expect(resource_handler, appname_to_field_vals, fun(X, _) ->
+ case X of
+ <<"notexist">> -> none;
+ <<"exist">> -> [<<"ns">>]
+ end
+ end),
I1 = jiffy:encode({[{<<"config">>, <<"bar">>}]}),
?assert(parse_reconfiguration_put_body(I1) == invalid),
- ?assert(handle_reconfigure_put("", EmptyD, "testXER", <<"exist">>, I1, AppnameToNS) == {400,"Invalid PUT Reconfigure Body",EmptyD}),
+ ?assert(handle_reconfigure_put("", EmptyD, "testXER", <<"exist">>, I1) == {400,"Invalid PUT Reconfigure Body",EmptyD}),
%test reconfiguring with an invalid PUT body (missing app_config)
I2 = jiffy:encode({[{<<"reconfiguration_type">>, <<"program-flowlet-app-config">>}, {<<"foo">>, <<"bar">>}]}),
?assert(parse_reconfiguration_put_body(I2) == invalid),
- ?assert(handle_reconfigure_put("", EmptyD, "testXER", <<"exist">>, I2, AppnameToNS) == {400,"Invalid PUT Reconfigure Body",EmptyD}),
+ ?assert(handle_reconfigure_put("", EmptyD, "testXER", <<"exist">>, I2) == {400,"Invalid PUT Reconfigure Body",EmptyD}),
%test reconfiguring an invalid (unimplemented) type
I3 = jiffy:encode({[{<<"config">>, <<"bar">>}, {<<"reconfiguration_type">>, <<"EMPTINESS">>}]}),
?assert(parse_reconfiguration_put_body(I3) == notimplemented),
- ?assert(handle_reconfigure_put("", EmptyD, "testXER", <<"exist">>, I3, AppnameToNS) == {501,"This type of reconfiguration is not implemented",EmptyD}),
+ ?assert(handle_reconfigure_put("", EmptyD, "testXER", <<"exist">>, I3) == {501,"This type of reconfiguration is not implemented",EmptyD}),
Valid = jiffy:encode({[{<<"config">>, {[{<<"foo">>, <<"bar">>}]}}, {<<"reconfiguration_type">>,<<"program-flowlet-app-config">>}]}),
?assert(parse_reconfiguration_put_body(Valid) == {<<"program-flowlet-app-config">>,#{<<"foo">>=><<"bar">>}}),
@@ -132,5 +156,8 @@ reconfiguration_put_test() ->
%test for valid but missing
%?assert(handle_reconfigure_put("", EmptyD, "testXER", <<"exist">>, I3, AppnameToNS) == {501,"This type of reconfiguration is not implemented",EmptyD}),
- ?assert(handle_reconfigure_put("", EmptyD, "testXER", <<"notexist">>, Valid, AppnameToNS) == {404,"Reconfigure recieved but the app is not registered", EmptyD}).
+ ?assert(handle_reconfigure_put("", EmptyD, "testXER", <<"notexist">>, Valid) == {404,"Reconfigure recieved but the app is not registered", EmptyD}),
+
+ meck:unload(resource_handler).
+