// Testing route with good ACLs. TEST_F(TeardownTest, TeardownEndpointGoodACLs) { // Setup ACLs so that the default principal can teardown the // framework. ACLs acls; mesos::ACL::TeardownFramework* acl = acls.add_teardown_frameworks(); acl->mutable_principals()->add_values(DEFAULT_CREDENTIAL.principal()); acl->mutable_framework_principals()->add_values( DEFAULT_CREDENTIAL.principal()); master::Flags flags = CreateMasterFlags(); flags.acls = acls; Try<PID<Master> > master = StartMaster(flags); ASSERT_SOME(master); MockScheduler sched; MesosSchedulerDriver driver( &sched, DEFAULT_FRAMEWORK_INFO, master.get(), DEFAULT_CREDENTIAL); Future<FrameworkID> frameworkId; EXPECT_CALL(sched, registered(&driver, _, _)) .WillOnce(FutureArg<1>(&frameworkId)); ASSERT_EQ(DRIVER_RUNNING, driver.start()); AWAIT_READY(frameworkId); process::http::Headers headers; headers["Authorization"] = "Basic " + base64::encode(DEFAULT_CREDENTIAL.principal() + ":" + DEFAULT_CREDENTIAL.secret()); Future<Response> response = process::http::post( master.get(), "teardown", headers, "frameworkId=" + frameworkId.get().value()); AWAIT_READY(response); AWAIT_EXPECT_RESPONSE_STATUS_EQ(OK().status, response); driver.stop(); driver.join(); Shutdown(); }
// Testing route with bad ACLs. TEST_F(TeardownTest, BadACLs) { // Setup ACLs so that no principal can teardown the framework. ACLs acls; mesos::ACL::TeardownFramework* acl = acls.add_teardown_frameworks(); acl->mutable_principals()->set_type(mesos::ACL::Entity::NONE); acl->mutable_framework_principals()->add_values( DEFAULT_CREDENTIAL.principal()); master::Flags flags = CreateMasterFlags(); flags.acls = acls; Try<Owned<cluster::Master>> master = StartMaster(flags); ASSERT_SOME(master); MockScheduler sched; MesosSchedulerDriver driver( &sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL); Future<FrameworkID> frameworkId; EXPECT_CALL(sched, registered(&driver, _, _)) .WillOnce(FutureArg<1>(&frameworkId)); ASSERT_EQ(DRIVER_RUNNING, driver.start()); AWAIT_READY(frameworkId); Future<Response> response = process::http::post( master.get()->pid, "teardown", createBasicAuthHeaders(DEFAULT_CREDENTIAL), "frameworkId=" + frameworkId.get().value()); AWAIT_READY(response); AWAIT_EXPECT_RESPONSE_STATUS_EQ(Forbidden().status, response); driver.stop(); driver.join(); }