コード例 #1
0
 private function refreshUserRank()
 {
     $r = new Request();
     $admin = UserFactory::createAdminUser();
     $r['auth_token'] = $this->login($admin);
     UserController::apiRefreshUserRank($r);
 }
コード例 #2
0
 /**
  * Reset password via admin
  */
 public function testCreateUserPositive()
 {
     // Create an user in omegaup
     $user = UserFactory::createUser();
     // Create the admin who will change the password
     $admin = UserFactory::createAdminUser();
     $r = new Request();
     $r["auth_token"] = $this->login($admin);
     $r["username"] = $user->getUsername();
     $r["password"] = Utils::CreateRandomString();
     // Call api
     UserController::apiChangePassword($r);
     // Try to login with old password, should fail
     try {
         $this->login($user);
         $this->fail("Reset password failed");
     } catch (Exception $e) {
         // We are OK
     }
     // Set new password and try again, should succeed
     $user->setPassword($r["password"]);
     $this->login($user);
     // Sanity check, admin should be able to login fine
     $this->login($admin);
 }
コード例 #3
0
ファイル: ProblemListTest.php プロジェクト: kukogit/omegaup
 /**
  * Test List API with query param
  */
 public function testListWithAliasQuery()
 {
     $problemDataPublic = ProblemsFactory::createProblem(null, null, 1);
     $problemDataPrivate = ProblemsFactory::createProblem(null, null, 0);
     $user = UserFactory::createUser();
     $admin = UserFactory::createAdminUser();
     // Expect public problem only
     $r = new Request();
     $r["auth_token"] = $this->login($user);
     $r["query"] = substr($problemDataPublic["request"]["title"], 2, 5);
     $response = ProblemController::apiList($r);
     $this->assertArrayContainsInKey($response["results"], "alias", $problemDataPublic["request"]["alias"]);
     // Expect 0 problems, matches are private for $user
     $r = new Request();
     $r["auth_token"] = $this->login($user);
     $r["query"] = substr($problemDataPrivate["request"]["title"], 2, 5);
     $response = ProblemController::apiList($r);
     $this->assertEquals(0, count($response["results"]));
     // Expect 1 problem, admin can see private problem
     $r = new Request();
     $r["auth_token"] = $this->login($admin);
     $r["query"] = substr($problemDataPrivate["request"]["title"], 2, 5);
     $response = ProblemController::apiList($r);
     $this->assertArrayContainsInKey($response["results"], "alias", $problemDataPrivate["request"]["alias"]);
     // Expect public problem only
     $r = new Request();
     $r["auth_token"] = $this->login($user);
     $response = ProblemController::apiList($r);
     $this->assertArrayContainsInKey($response["results"], "alias", $problemDataPublic["request"]["alias"]);
 }
コード例 #4
0
 /**
  * Admin can verify users only with username
  * Testing invalid username
  *
  * @expectedException NotFoundException
  */
 public function testUsernameVerificationByAdminInvalidUsername()
 {
     // Admin will verify $user
     $admin = UserFactory::createAdminUser();
     // Call api using admin
     $response = UserController::apiVerifyEmail(new Request(array('auth_token' => $this->login($admin), 'usernameOrEmail' => Utils::CreateRandomString())));
 }
コード例 #5
0
ファイル: ContestListTest.php プロジェクト: kukogit/omegaup
 /** 
  * 
  */
 public function testPrivateContestForSystemAdmin()
 {
     $r = new Request();
     // Create new private contest
     $contestData = ContestsFactory::createContest(null, false);
     $r["auth_token"] = $this->login(UserFactory::createAdminUser());
     $response = ContestController::apiList($r);
     // Assert our contest is there
     $this->assertTitleInList($response, $contestData);
 }
コード例 #6
0
 /**
  * Test that contests with recommended flag show first in list.
  */
 public function testRecommendedShowsOnTop()
 {
     $r = new Request();
     // Create 2 contests, with the not-recommended.finish_time > recommended.finish_time
     $recommendedContestData = ContestsFactory::createContest();
     $notRecommendedContestData = ContestsFactory::createContest(null, 0, null, $recommendedContestData['request']['finish_time'] + 1);
     // Get a user for our scenario
     $contestant = UserFactory::createUser();
     // Turn recommended ON
     $r = new Request();
     $r['contest_alias'] = $recommendedContestData['request']['alias'];
     $r['auth_token'] = $this->login(UserFactory::createAdminUser());
     $r['value'] = 1;
     ContestController::apiSetRecommended($r);
     // Get list of contests
     $r['auth_token'] = $this->login($contestant);
     $response = ContestController::apiList($r);
     // Check that recommended contest is earlier in list han not-recommended
     $recommendedPosition = 0;
     $notRecommendedPosition = 0;
     foreach ($response['results'] as $contest) {
         if ($contest['title'] == $recommendedContestData['request']['title']) {
             break;
         }
         $recommendedPosition++;
     }
     foreach ($response['results'] as $contest) {
         if ($contest['title'] == $notRecommendedContestData['request']['title']) {
             break;
         }
         $notRecommendedPosition++;
     }
     $this->assertTrue($recommendedPosition < $notRecommendedPosition);
 }
コード例 #7
0
 /**
  * Set Recommended flag to a given contest
  */
 public function testSetRecommendedFlag()
 {
     // Get a contest
     $contestData = ContestsFactory::createContest();
     // Prepare request
     $r = new Request();
     $r['contest_alias'] = $contestData['request']['alias'];
     // Log in with site admin
     $r['auth_token'] = $this->login(UserFactory::createAdminUser());
     // Update value to TRUE
     $r['value'] = 1;
     // Call API
     ContestController::apiSetRecommended($r);
     // Verify setting
     $contestData['request']['recommended'] = $r['value'];
     $this->assertContest($contestData['request']);
     // Turn flag down
     $r['value'] = 0;
     // Call API again
     ContestController::apiSetRecommended($r);
     // Verify setting
     $contestData['request']['recommended'] = $r['value'];
     $this->assertContest($contestData['request']);
 }