SanitizeOrderby.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. /**
  3. * @group sanitize_sql_orderby
  4. */
  5. class Tests_Formatting_SanitizeOrderby extends WP_UnitTestCase {
  6. /**
  7. * @covers ::sanitize_sql_orderby
  8. * @dataProvider valid_orderbys
  9. */
  10. function test_valid( $orderby ) {
  11. $this->assertSame( $orderby, sanitize_sql_orderby( $orderby ) );
  12. }
  13. function valid_orderbys() {
  14. return array(
  15. array( '1' ),
  16. array( '1 ASC' ),
  17. array( '1 ASC, 2' ),
  18. array( '1 ASC, 2 DESC' ),
  19. array( '1 ASC, 2 DESC, 3' ),
  20. array( ' 1 DESC' ),
  21. array( 'field ASC' ),
  22. array( 'field1 ASC, field2' ),
  23. array( 'field_1 ASC, field_2 DESC' ),
  24. array( 'field1, field2 ASC' ),
  25. array( '`field1`' ),
  26. array( '`field1` ASC' ),
  27. array( '`field` ASC, `field2`' ),
  28. array( 'RAND()' ),
  29. array( ' RAND( ) ' ),
  30. );
  31. }
  32. /**
  33. * @covers ::sanitize_sql_orderby
  34. * @dataProvider invalid_orderbys
  35. */
  36. function test_invalid( $orderby ) {
  37. $this->assertFalse( sanitize_sql_orderby( $orderby ) );
  38. }
  39. function invalid_orderbys() {
  40. return array(
  41. array( '' ),
  42. array( '1 2' ),
  43. array( '1, 2 3' ),
  44. array( '1 DESC, ' ),
  45. array( 'field-1' ),
  46. array( 'field DESC,' ),
  47. array( 'field1 field2' ),
  48. array( 'field RAND()' ),
  49. array( 'RAND() ASC' ),
  50. array( '`field1` ASC, `field2' ),
  51. array( 'field, !@#$%^' ),
  52. );
  53. }
  54. }