예제 #1
0
 public function testIsContestAdminCheck()
 {
     // Get a contest
     $contestData = ContestsFactory::createContest();
     // Get a user
     $user = UserFactory::createUser();
     // Prepare request
     $r = new Request();
     $r["auth_token"] = $this->login($contestData["director"]);
     $r["usernameOrEmail"] = $user->getUsername();
     $r["contest_alias"] = $contestData["request"]["alias"];
     // Call api
     ContestController::apiAddAdmin($r);
     // Prepare request for an update
     $r = new Request();
     $r["contest_alias"] = $contestData["request"]["alias"];
     // Log in with contest director
     $r["auth_token"] = $this->login($user);
     // Update title
     $r["title"] = Utils::CreateRandomString();
     // Call API
     $response = ContestController::apiUpdate($r);
     // To validate, we update the title to the original request and send
     // the entire original request to assertContest. Any other parameter
     // should not be modified by Update api
     $contestData["request"]["title"] = $r["title"];
     $this->assertContest($contestData["request"]);
 }
예제 #2
0
 public function testSimpleRegistrationActions()
 {
     self::log("Started");
     //create a contest and its admin
     $contestData = ContestsFactory::createContest(null, 1);
     $contestAdmin = UserFactory::createUser();
     ContestsFactory::addAdminUser($contestData, $contestAdmin);
     //make it "registrable"
     self::log("Udate contest to make it registrable");
     $r1 = new Request();
     $r1["contest_alias"] = $contestData["request"]["alias"];
     $r1["contestant_must_register"] = true;
     $r1["auth_token"] = $this->login($contestAdmin);
     ContestController::apiUpdate($r1);
     //some user asks for contest
     $contestant = UserFactory::createUser();
     $r2 = new Request();
     $r2["contest_alias"] = $contestData["request"]["alias"];
     $r2["auth_token"] = $this->login($contestant);
     try {
         $response = ContestController::apiDetails($r2);
         $this->AssertFalse(true, "User gained access to contest even though its registration needed.");
     } catch (ForbiddenAccessException $fae) {
         // Expected. Continue.
     }
     self::log("user registers, into contest");
     ContestController::apiRegisterForContest($r2);
     //admin lists registrations
     $r3 = new Request();
     $r3["contest_alias"] = $contestData["request"]["alias"];
     $r3["auth_token"] = $this->login($contestAdmin);
     $result = ContestController::apiRequests($r3);
     $this->assertEquals(sizeof($result["users"]), 1);
     self::log("amin rejects registration");
     $r3["username"] = $contestant->username;
     $r3["resolution"] = false;
     ContestController::apiArbitrateRequest($r3);
     //ask for details again, this should fail again
     $r2 = new Request();
     $r2["contest_alias"] = $contestData["request"]["alias"];
     $r2["auth_token"] = $this->login($contestant);
     try {
         $response = ContestController::apiDetails($r2);
         $this->AssertFalse(true);
     } catch (ForbiddenAccessException $fae) {
         // Expected. Continue.
     }
     //admin admits user
     $r3["username"] = $contestant->username;
     $r3["resolution"] = true;
     ContestController::apiArbitrateRequest($r3);
     //user can now submit to contest
     $r2 = new Request();
     $r2["contest_alias"] = $contestData["request"]["alias"];
     $r2["auth_token"] = $this->login($contestant);
     // Explicitly join contest
     ContestController::apiOpen($r2);
     ContestController::apiDetails($r2);
 }
예제 #3
0
 /**
  * Update from private to public with problems added
  * 
  */
 public function testUpdatePrivateContestToPublicWithProblems()
 {
     // Get a contest
     $contestData = ContestsFactory::createContest(null, 0);
     // Get a problem
     $problemData = ProblemsFactory::createProblem();
     // Add the problem to the contest
     ContestsFactory::addProblemToContest($problemData, $contestData);
     // Prepare request
     $r = new Request();
     $r["contest_alias"] = $contestData["request"]["alias"];
     // Log in with contest director
     $r["auth_token"] = $this->login($contestData["director"]);
     // Update public
     $r["public"] = 1;
     // Call API
     $response = ContestController::apiUpdate($r);
     $contestData["request"]["public"] = $r["public"];
     $this->assertContest($contestData["request"]);
 }
 public function testIsContestGroupAdminCheck()
 {
     // Get a contest
     $contestData = ContestsFactory::createContest();
     // Get a user
     $user = UserFactory::createUser();
     // Get a group
     $groupData = GroupsFactory::createGroup();
     GroupsFactory::addUserToGroup($groupData, $user);
     // Prepare request
     $r = new Request();
     $r['auth_token'] = $this->login($contestData['director']);
     $r['group'] = $groupData['request']['alias'];
     $r['contest_alias'] = $contestData['request']['alias'];
     // Call api
     ContestController::apiAddGroupAdmin($r);
     // Prepare request for an update
     $r = new Request();
     $r['contest_alias'] = $contestData['request']['alias'];
     // Log in with contest director
     $r['auth_token'] = $this->login($user);
     // Update title
     $r['title'] = Utils::CreateRandomString();
     // Call API
     $response = ContestController::apiUpdate($r);
     // To validate, we update the title to the original request and send
     // the entire original request to assertContest. Any other parameter
     // should not be modified by Update api
     $contestData['request']['title'] = $r['title'];
     $this->assertContest($contestData['request']);
 }