From 3b458e4db1acf5a7f200f38d629bed9f38632abd Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Mon, 23 Apr 2012 17:34:55 +0200 Subject: [PATCH] mkbasepath now correctly creates paths with uid --- lib/CloudStore/API.pm | 9 ++++++++- t/API.t | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/CloudStore/API.pm b/lib/CloudStore/API.pm index 5dea04e..1b2625d 100644 --- a/lib/CloudStore/API.pm +++ b/lib/CloudStore/API.pm @@ -111,8 +111,15 @@ sub create_user { sub mkbasepath { my ($self,$path,$opts) = @_; + cluck "ERROR: mkbasepath called without opts, so user is root!" unless $opts; + if ( $ENV{DEBUG} ) { + warn "# mkbasepath $path ",dump($opts); + $opts->{verbose} ||= 1; + } $path =~ s{/[^/]+$}{}; - make_path $path unless -d $path; + if ( ! -d $path ) { + make_path $path, $opts; + } } sub user_dir { diff --git a/t/API.t b/t/API.t index 99d1831..4f81d1f 100755 --- a/t/API.t +++ b/t/API.t @@ -2,8 +2,9 @@ use strict; use warnings; -use Test::More tests => 26; +use Test::More tests => 29; use Data::Dump qw(dump); +use File::Path; use lib 'lib'; @@ -11,6 +12,8 @@ use_ok 'CloudStore::API'; ok my $o = CloudStore::API->new('s1'), 'new'; +die 'You need to run this test as root' unless $> == 0; + cmp_ok $o->create_user('md5@example.com','md5sum',0), 'eq', 'u2000', 'create_user md5'; ok my $info = $o->user_info( 'md5' ), 'user_info'; @@ -60,3 +63,15 @@ usage $uid2; ok $o->delete( $uid, 'bar.txt' ); usage $uid; +my $path = "/tmp/test.$$/base/dir/path"; +ok $o->mkbasepath( $path, { uid => $info->{uid} } ), "mkbasepath $path"; + +ok ! $o->mkbasepath( $path, { uid => $info->{uid} } ), "exists $path"; + +$path =~ s{/path}{}; # strip file +my $uid = (stat($path))[4]; +diag "uid $path = $uid"; +cmp_ok $uid, '==', $info->{uid}, "owner $info->{uid}"; + +File::Path::remove_tree("/tmp/test.$$"); # cleanup + -- 2.20.1