| 
9 | 9 | #include <MicroOcpp/Core/Operation.h>  | 
10 | 10 | #include <MicroOcpp/Core/Configuration.h>  | 
11 | 11 | #include <MicroOcpp/Core/FilesystemUtils.h>  | 
 | 12 | +#include <MicroOcpp/Core/Request.h>  | 
 | 13 | +#include <MicroOcpp/Operations/CustomOperation.h>  | 
12 | 14 | #include <MicroOcpp/Debug.h>  | 
13 | 15 | #include <MicroOcpp/Version.h>  | 
14 | 16 | #include <catch2/catch.hpp>  | 
@@ -63,10 +65,10 @@ TEST_CASE( "Configuration Behavior" ) {  | 
63 | 65 |     LoopbackConnection loopback;  | 
64 | 66 |     mocpp_initialize(loopback, ChargerCredentials("test-runner1234"));  | 
65 | 67 | 
 
  | 
66 |  | -    auto engine = getOcppContext();  | 
67 |  | -    auto& checkMsg = engine->getOperationRegistry();  | 
 | 68 | +    auto context = getOcppContext();  | 
 | 69 | +    auto& checkMsg = context->getOperationRegistry();  | 
68 | 70 | 
 
  | 
69 |  | -    auto connector = engine->getModel().getConnector(1);  | 
 | 71 | +    auto connector = context->getModel().getConnector(1);  | 
70 | 72 | 
 
  | 
71 | 73 |     mocpp_set_timer(custom_timer_cb);  | 
72 | 74 | 
 
  | 
@@ -224,5 +226,63 @@ TEST_CASE( "Configuration Behavior" ) {  | 
224 | 226 |     }  | 
225 | 227 | #endif //MO_ENABLE_LOCAL_AUTH  | 
226 | 228 | 
 
  | 
 | 229 | +    SECTION("AuthorizeRemoteTxRequests") {  | 
 | 230 | +        auto configBool = declareConfiguration<bool>("AuthorizeRemoteTxRequests", false);  | 
 | 231 | + | 
 | 232 | +        bool receivedAuthorize = false;  | 
 | 233 | + | 
 | 234 | +        setOnReceiveRequest("Authorize", [&receivedAuthorize] (JsonObject payload) {  | 
 | 235 | +            receivedAuthorize = true;  | 
 | 236 | +            REQUIRE( !strcmp(payload["idTag"] | "_Undefined", "mIdTag") );  | 
 | 237 | +        });  | 
 | 238 | + | 
 | 239 | +        SECTION("set true") {  | 
 | 240 | +            configBool->setBool(true);  | 
 | 241 | + | 
 | 242 | +            context->initiateRequest(makeRequest(new Ocpp16::CustomOperation(  | 
 | 243 | +                    "RemoteStartTransaction",  | 
 | 244 | +                    [] () {  | 
 | 245 | +                        //create req  | 
 | 246 | +                        auto doc = makeJsonDoc("UnitTests", JSON_OBJECT_SIZE(1));  | 
 | 247 | +                        auto payload = doc->to<JsonObject>();  | 
 | 248 | +                        payload["idTag"] = "mIdTag";  | 
 | 249 | +                        return doc;},  | 
 | 250 | +                    [] (JsonObject) {  | 
 | 251 | +                        //ignore conf  | 
 | 252 | +                    }  | 
 | 253 | +            )));  | 
 | 254 | + | 
 | 255 | +            loop();  | 
 | 256 | + | 
 | 257 | +            REQUIRE(receivedAuthorize);  | 
 | 258 | +            REQUIRE(connector->getStatus() == ChargePointStatus_Charging);  | 
 | 259 | +        }  | 
 | 260 | + | 
 | 261 | +        SECTION("set false") {  | 
 | 262 | +            configBool->setBool(false);  | 
 | 263 | + | 
 | 264 | +            context->initiateRequest(makeRequest(new Ocpp16::CustomOperation(  | 
 | 265 | +                    "RemoteStartTransaction",  | 
 | 266 | +                    [] () {  | 
 | 267 | +                        //create req  | 
 | 268 | +                        auto doc = makeJsonDoc("UnitTests", JSON_OBJECT_SIZE(1));  | 
 | 269 | +                        auto payload = doc->to<JsonObject>();  | 
 | 270 | +                        payload["idTag"] = "mIdTag";  | 
 | 271 | +                        return doc;},  | 
 | 272 | +                    [] (JsonObject) {  | 
 | 273 | +                        //ignore conf  | 
 | 274 | +                    }  | 
 | 275 | +            )));  | 
 | 276 | + | 
 | 277 | +            loop();  | 
 | 278 | + | 
 | 279 | +            REQUIRE(!receivedAuthorize);  | 
 | 280 | +            REQUIRE(connector->getStatus() == ChargePointStatus_Charging);  | 
 | 281 | +        }  | 
 | 282 | + | 
 | 283 | +        endTransaction();  | 
 | 284 | +        loop();  | 
 | 285 | +    }  | 
 | 286 | + | 
227 | 287 |     mocpp_deinitialize();  | 
228 | 288 | }  | 
0 commit comments