Просмотр исходного кода

fix(bridge_v2): downgrade bridge type for GET api results

Zaiming (Stone) Shi 2 лет назад
Родитель
Сommit
350e8433ab

+ 4 - 1
apps/emqx_bridge/src/emqx_bridge_api.erl

@@ -902,7 +902,7 @@ format_resource(
     redact(
         maps:merge(
             RawConfFull#{
-                type => Type,
+                type => downgrade_type(Type),
                 name => maps:get(<<"name">>, RawConf, BridgeName),
                 node => Node
             },
@@ -1156,3 +1156,6 @@ non_compat_bridge_msg() ->
 
 upgrade_type(Type) ->
     emqx_bridge_lib:upgrade_type(Type).
+
+downgrade_type(Type) ->
+    emqx_bridge_lib:downgrade_type(Type).

+ 20 - 18
apps/emqx_bridge_kafka/test/emqx_bridge_kafka_impl_producer_SUITE.erl

@@ -255,6 +255,18 @@ pre_create_atoms() ->
         kafka__probe_
     ].
 
+http_get_bridges(UrlPath, Name0) ->
+    Name = iolist_to_binary(Name0),
+    {ok, _Code, BridgesData} = http_get(UrlPath),
+    Bridges = json(BridgesData),
+    lists:filter(
+        fun
+            (#{<<"name">> := N}) when N =:= Name -> true;
+            (_) -> false
+        end,
+        Bridges
+    ).
+
 kafka_bridge_rest_api_helper(Config) ->
     BridgeType = ?BRIDGE_TYPE,
     BridgeName = "my_kafka_bridge",
@@ -274,27 +286,16 @@ kafka_bridge_rest_api_helper(Config) ->
     BridgesPartsOpRestart = OpUrlFun("restart"),
     BridgesPartsOpStop = OpUrlFun("stop"),
     %% List bridges
-    MyKafkaBridgeExists = fun() ->
-        {ok, _Code, BridgesData} = http_get(BridgesParts),
-        Bridges = json(BridgesData),
-        lists:any(
-            fun
-                (#{<<"name">> := <<"my_kafka_bridge">>}) -> true;
-                (_) -> false
-            end,
-            Bridges
-        )
-    end,
     %% Delete if my_kafka_bridge exists
-    case MyKafkaBridgeExists() of
-        true ->
+    case http_get_bridges(BridgesParts, BridgeName) of
+        [_] ->
             %% Delete the bridge my_kafka_bridge
             {ok, 204, <<>>} = http_delete(BridgesPartsIdDeleteAlsoActions);
-        false ->
+        [] ->
             ok
     end,
     try
-        false = MyKafkaBridgeExists(),
+        ?assertEqual([], http_get_bridges(BridgesParts, BridgeName)),
         %% Create new Kafka bridge
         KafkaTopic = test_topic_one_partition(),
         CreateBodyTmp = #{
@@ -316,7 +317,7 @@ kafka_bridge_rest_api_helper(Config) ->
         CreateBody = CreateBodyTmp#{<<"ssl">> => maps:get(<<"ssl">>, Config)},
         {ok, 201, _Data} = http_post(BridgesParts, CreateBody),
         %% Check that the new bridge is in the list of bridges
-        true = MyKafkaBridgeExists(),
+        ?assertMatch([#{<<"type">> := <<"kafka">>}], http_get_bridges(BridgesParts, BridgeName)),
         %% Probe should work
         %% no extra atoms should be created when probing
         %% See pre_create_atoms() above
@@ -416,8 +417,9 @@ kafka_bridge_rest_api_helper(Config) ->
         % this delete should not be necessary beause of the also_delete_dep_actions flag
         % {ok, 204, _} = http_delete(["rules", RuleId]),
         {ok, 204, _} = http_delete(BridgesPartsIdDeleteAlsoActions),
-        false = MyKafkaBridgeExists(),
-        delete_all_bridges()
+        Remain = http_get_bridges(BridgesParts, BridgeName),
+        delete_all_bridges(),
+        ?assertEqual([], Remain)
     end,
     ok.