BOOST_FIXTURE_TEST_CASE(LocalControlNextHopFaceId, AuthorizedCommandFixture<LocalControlFixture>) { shared_ptr<LocalFace> dummy = make_shared<DummyLocalFace>(); BOOST_REQUIRE(dummy->isLocal()); FaceTableFixture::m_faceTable.add(dummy); ControlParameters parameters; parameters.setLocalControlFeature(LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID); Block encodedParameters(parameters.wireEncode()); Name enable("/localhost/nfd/faces/enable-local-control"); enable.append(encodedParameters); shared_ptr<Interest> enableCommand(make_shared<Interest>(enable)); enableCommand->setIncomingFaceId(dummy->getId()); generateCommand(*enableCommand); TestFaceManagerCommon::m_face->onReceiveData += [this, enableCommand, encodedParameters] (const Data& response) { this->validateControlResponse(response, enableCommand->getName(), 200, "Success", encodedParameters); }; onValidatedFaceRequest(enableCommand); BOOST_REQUIRE(didCallbackFire()); BOOST_REQUIRE(dummy->isLocalControlHeaderEnabled(LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID)); BOOST_CHECK(!dummy->isLocalControlHeaderEnabled(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID)); TestFaceManagerCommon::m_face->onReceiveData.clear(); resetCallbackFired(); Name disable("/localhost/nfd/faces/disable-local-control"); disable.append(encodedParameters); shared_ptr<Interest> disableCommand(make_shared<Interest>(disable)); disableCommand->setIncomingFaceId(dummy->getId()); generateCommand(*disableCommand); TestFaceManagerCommon::m_face->onReceiveData += [this, disableCommand, encodedParameters] (const Data& response) { this->validateControlResponse(response, disableCommand->getName(), 200, "Success", encodedParameters); }; onValidatedFaceRequest(disableCommand); BOOST_REQUIRE(didCallbackFire()); BOOST_REQUIRE(!dummy->isLocalControlHeaderEnabled(LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID)); BOOST_CHECK(!dummy->isLocalControlHeaderEnabled(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID)); }
BOOST_FIXTURE_TEST_CASE(LocalControlNextHopFaceIdNonLocal, AuthorizedCommandFixture<LocalControlFixture>) { shared_ptr<DummyFace> dummy = make_shared<DummyFace>(); BOOST_REQUIRE(!dummy->isLocal()); FaceTableFixture::m_faceTable.add(dummy); ControlParameters parameters; parameters.setLocalControlFeature(LOCAL_CONTROL_FEATURE_NEXT_HOP_FACE_ID); Block encodedParameters(parameters.wireEncode()); Name enable("/localhost/nfd/faces/enable-local-control"); enable.append(encodedParameters); shared_ptr<Interest> enableCommand(make_shared<Interest>(enable)); enableCommand->setIncomingFaceId(dummy->getId()); generateCommand(*enableCommand); TestFaceManagerCommon::m_face->onReceiveData += bind(&LocalControlFixture::validateControlResponse, this, _1, enableCommand->getName(), 412, "Face is non-local"); onValidatedFaceRequest(enableCommand); BOOST_REQUIRE(didCallbackFire()); TestFaceManagerCommon::m_face->onReceiveData.clear(); resetCallbackFired(); Name disable("/localhost/nfd/faces/disable-local-control"); disable.append(encodedParameters); shared_ptr<Interest> disableCommand(make_shared<Interest>(disable)); disableCommand->setIncomingFaceId(dummy->getId()); generateCommand(*disableCommand); TestFaceManagerCommon::m_face->onReceiveData += bind(&LocalControlFixture::validateControlResponse, this, _1, disableCommand->getName(), 412, "Face is non-local"); onValidatedFaceRequest(disableCommand); BOOST_REQUIRE(didCallbackFire()); }
BOOST_FIXTURE_TEST_CASE(ValidatedFaceRequestDestroyFace, AuthorizedCommandFixture<ValidatedFaceRequestFixture>) { ControlParameters parameters; parameters.setUri("tcp://127.0.0.1"); Block encodedParameters(parameters.wireEncode()); Name commandName("/localhost/nfd/faces"); commandName.append("destroy"); commandName.append(encodedParameters); shared_ptr<Interest> command(make_shared<Interest>(commandName)); generateCommand(*command); onValidatedFaceRequest(command); BOOST_CHECK(didDestroyFaceFire()); }
BOOST_FIXTURE_TEST_CASE(ValidatedFaceRequestBadOptionParse, AuthorizedCommandFixture<ValidatedFaceRequestFixture>) { Name commandName("/localhost/nfd/faces"); commandName.append("create"); commandName.append("NotReallyParameters"); shared_ptr<Interest> command(make_shared<Interest>(commandName)); generateCommand(*command); getFace()->onReceiveData += bind(&ValidatedFaceRequestFixture::validateControlResponse, this, _1, command->getName(), 400, "Malformed command"); onValidatedFaceRequest(command); BOOST_REQUIRE(didCallbackFire()); }