diff options
author | Paul Yang <yang.yang@baishancloud.com> | 2018-02-13 13:15:34 +0100 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2018-02-28 18:44:56 +0100 |
commit | c7702e077da512ba47f25424f24c11bd0c394bc0 (patch) | |
tree | 4a4c6a39c8684a4bd3e5a0e2f356755e9922bc81 /test/recipes/15-test_out_option.t | |
parent | Check directory is able to create files for various -out option (diff) | |
download | openssl-c7702e077da512ba47f25424f24c11bd0c394bc0.tar.xz openssl-c7702e077da512ba47f25424f24c11bd0c394bc0.zip |
Add test cases for this -out option check
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3709)
Diffstat (limited to 'test/recipes/15-test_out_option.t')
-rw-r--r-- | test/recipes/15-test_out_option.t | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/test/recipes/15-test_out_option.t b/test/recipes/15-test_out_option.t new file mode 100644 index 0000000000..1b9c40d282 --- /dev/null +++ b/test/recipes/15-test_out_option.t @@ -0,0 +1,60 @@ +#! /usr/bin/env perl +# Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the OpenSSL license (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + + +use strict; +use warnings; + +use File::Spec; +use OpenSSL::Test qw/:DEFAULT srctop_file/; +use OpenSSL::Test::Utils; + +setup("test_out_option"); + +plan skip_all => "'-out' option tests are not available on Windows or VMS" + if $^O =~ /^(VMS|MSWin32)$/; + +plan tests => 11; + +# The following patterns should be tested: +# +# path dirname +# /usr/ / +# / / +# . . +# .. . + +test_illegal_path('/usr/'); +test_illegal_path('/'); +test_illegal_path('.'); +test_illegal_path('..'); + +# Test for trying to create a file in a non-exist directory +my @chars = ("A".."Z", "a".."z", "0".."9"); +my $rand_path = $chars[rand @chars] for 1..32; +$rand_path .= "/test.pem"; + +test_illegal_path($rand_path); +test_legal_path('test.pem'); +unlink 'test.pem'; + +sub test_illegal_path { + my ($path) = @_; + + my $start = time(); + ok(!run(app([ 'openssl', 'genrsa', '-out', $path, '16384'])), "invalid output path: $path"); + my $end = time(); + # The above process should exit in 2 seconds if the path is not valid + ok($end - $start < 2, "check time consumed"); +} + +sub test_legal_path { + my ($path) = @_; + + ok(run(app([ 'openssl', 'genrsa', '-out', $path, '2048'])), "valid output path: $path"); +} |