Project

General

Profile

Bug #3745

ding_user_provider_id uden argumenter får ikke global variabel $user tildelt til lokal variabel $account som forventet, men NULL. (HVORDAN SKAL DENNE TESTES?)

Added by Ulrich Christensen almost 2 years ago. Updated over 1 year ago.

Status:
Resolved (tag version)
Priority:
High
Estimated time:
URL med eksempel:
Kategorier:
Min konto - Brugerprofil, Min konto - Huskeliste og Gemte søgninger, Integration - Openlist (Personalisering)

Description

https://github.com/ding2/ding2/blob/master/modules/ding_user/ding_user.module#L1117:

function ding_user_provider_id($account = NULL) {
  global $user;

  if ($account === NULL) {
    $accout = $user;
  }

  if (ding_provider_implements('user', 'get_provider_id')) {
    return ding_provider_invoke('user', 'get_provider_id', $account);
  }

  return NULL;
}

Linjen indeholder en stavefejl, skal rettes til:

$account = $user;

 

Midlertidigt fiks er at sørge for altid at kalde funktionen med et gyldig bruger-account-objekt og ikke uden argumenter.

 

History

#1 Updated by Rolf Madsen almost 2 years ago

  • Status changed from New to Ready for development
  • Assignee set to Rolf Madsen
  • Priority changed from None to High
  • Target version changed from Release 29-1 - Lister (7.x-4.4.0) to Release 29-2 - Bugfixes (7.x-4.5.0)

#3 Updated by Rolf Madsen almost 2 years ago

  • Status changed from Ready for development to Needs code review
  • Assignee changed from Rolf Madsen to Gitte Barlach

#4 Updated by Gitte Barlach almost 2 years ago

  • Assignee changed from Gitte Barlach to Kasper Garnæs

#5 Updated by Kasper Garnæs almost 2 years ago

  • Status changed from Needs code review to Reviewed

Godkendt. Afventer reviewed.

#6 Updated by Kasper Garnæs over 1 year ago

  • Status changed from Reviewed to Technical test
  • Assignee changed from Kasper Garnæs to Gitte Barlach

#7 Updated by Gitte Barlach over 1 year ago

Hvordan skal jeg teste denne??

#8 Updated by Gitte Barlach over 1 year ago

  • Assignee changed from Gitte Barlach to Ulrich Christensen

Hej Ulrich
Kan du beskrive hvordan jeg kan teste denne? 

#9 Updated by Gitte Barlach over 1 year ago

  • Subject changed from ding_user_provider_id uden argumenter får ikke global variabel $user tildelt til lokal variabel $account som forventet, men NULL. to ding_user_provider_id uden argumenter får ikke global variabel $user tildelt til lokal variabel $account som forventet, men NULL. (HVORDAN SKAL DENNE TESTES?)

#10 Updated by Simon Holt over 1 year ago

Så vidt jeg kan se, bliver denne fejl aldrig udløst i det nuværende DDB CMS kode. Så der er vel ikke noget at teste.

Det er vel mere end rettelse for at sikre imod potentielle fejl i fremtiden.

 

#11 Updated by Gitte Barlach over 1 year ago

  • Status changed from Technical test to Resolved (tag version)

okay; så må godkendelsen alene bero på at rettelsen er godkendt af core efter code review. 

#12 Updated by Ulrich Christensen over 1 year ago

Gitte Barlach skrev:

Hej Ulrich
Kan du beskrive hvordan jeg kan teste denne? 

Nu ved jeg ikke, hvordan I skriver testcases, men det skal testes for funktionen ding_user_provider_id er, om ding_user_provider_id() uden parametre og ding_user_provider_id($user) med den globale variabel $user returnerer det samme.

 

Hvis jeg hovedet under armen skal formulere nogle test cases, så burde følgende række:

/* Test whether calling with and without parameters return the same. */
function ding2_issue_3745_testcase1() {
  global $user;

  $test_passed = false;

  $case_without_parameter = ding_user_provider_id();
  $case_with_parameter = ding_user_provider_id($user);

  if ($case_with_parameter != NULL &&
      $case_without_parameter != NULL &&
      $case_with_parameter == $case_without_parameter) {
          $test_passed = true;
  }

  return $test_passed;
}

/* Test whether invoking the function without parameters and executing the body of the function with $user returns the same. */
function ding2_issue_3745_testcase2() {
  global $user;

  $test_passed = false;

  $case_without_parameter = ding_user_provider_id();
  $direct_body_invoke = ding_provider_invoke('user', 'get_provider_id', $user);

  if ($case_without_parameter != NULL &&
      $direct_body_invoke != NULL &&
      $case_without_parameter == $direct_body_invoke) {
          $test_passed = true;
  }

  return $test_passed;  
}

Global variabel $user kan også skrives $GLOBALS['user'] for at tydeliggøre hvad der foregår.

I det ovenstående har jeg ikke lavet separate tests for om ding_user_provider_id uanset parametre returnerer NULL, så disse overlades til læser.

 

Test for, om fejl som den oprindelige (variabel der er stavet forkert) forekommer, kan gøres med et værktøj, der tjekker om variable der erklæres og/eller tildeles i lokal scope bliver brugt.

 

Er det svar nok, Gitte?

Also available in: Atom PDF