root/lib/util/tests/genrand.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. dummy_reseed
  2. test_reseed_callback
  3. test_check_password_quality
  4. test_generate_random_str
  5. torture_local_genrand

   1 /* 
   2    Unix SMB/CIFS implementation.
   3 
   4    local testing of random data routines.
   5 
   6    Copyright (C) Jelmer Vernooij <jelmer@samba.org>
   7    
   8    This program is free software; you can redistribute it and/or modify
   9    it under the terms of the GNU General Public License as published by
  10    the Free Software Foundation; either version 3 of the License, or
  11    (at your option) any later version.
  12    
  13    This program is distributed in the hope that it will be useful,
  14    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16    GNU General Public License for more details.
  17    
  18    You should have received a copy of the GNU General Public License
  19    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  20 */
  21 
  22 #include "includes.h"
  23 #include "torture/torture.h"
  24 
  25 static void dummy_reseed(void *userdata, int *d)
     /* [<][>][^][v][top][bottom][index][help] */
  26 {
  27         *d = 42;
  28 }
  29 
  30 static bool test_reseed_callback(struct torture_context *tctx)
     /* [<][>][^][v][top][bottom][index][help] */
  31 {
  32         set_rand_reseed_callback(dummy_reseed, NULL);
  33         return true;
  34 }
  35 
  36 static bool test_check_password_quality(struct torture_context *tctx)
     /* [<][>][^][v][top][bottom][index][help] */
  37 {
  38         torture_assert(tctx, !check_password_quality(""), "empty password");
  39         torture_assert(tctx, !check_password_quality("a"), "one char password");
  40         torture_assert(tctx, !check_password_quality("aaaaaaaaaaaa"), "same char password");
  41         torture_assert(tctx, !check_password_quality("BLA"), "multiple upcases password");
  42         torture_assert(tctx, !check_password_quality("123"), "digits only");
  43         torture_assert(tctx, check_password_quality("A2e"), "valid");
  44         torture_assert(tctx, check_password_quality("BA2eLi443"), "valid");
  45         return true;
  46 }
  47 
  48 static bool test_generate_random_str(struct torture_context *tctx)
     /* [<][>][^][v][top][bottom][index][help] */
  49 {
  50         TALLOC_CTX *mem_ctx = talloc_init(__FUNCTION__);
  51         char *r = generate_random_str(mem_ctx, 10);
  52         torture_assert_int_equal(tctx, strlen(r), 10, "right length generated");
  53         r = generate_random_str(mem_ctx, 5);
  54         torture_assert_int_equal(tctx, strlen(r), 5, "right length generated");
  55         return true;
  56 }
  57 
  58 struct torture_suite *torture_local_genrand(TALLOC_CTX *mem_ctx)
     /* [<][>][^][v][top][bottom][index][help] */
  59 {
  60         struct torture_suite *suite = torture_suite_create(mem_ctx, "GENRAND");
  61         torture_suite_add_simple_test(suite, "reseed_callback", test_reseed_callback);
  62         torture_suite_add_simple_test(suite, "check_password_quality", test_check_password_quality);
  63         torture_suite_add_simple_test(suite, "generate_random_str", test_generate_random_str);
  64         return suite;
  65 }

/* [<][>][^][v][top][bottom][index][help] */