summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Allbery <eagle@eyrie.org>2014-07-16 16:32:07 -0700
committerRuss Allbery <eagle@eyrie.org>2014-07-16 16:32:07 -0700
commit6b4fbafa3edd99045b8eba896dd8642aa6bd6113 (patch)
tree79124a4bccc49a0b8bf3e2b5189b0e7b18a635ee
parente4adb8cde42b91110c2d283aa3712f89afc78ead (diff)
parent27f4e81ddb42440345e6dd01a4943cb57ee5da39 (diff)
Merge tag 'upstream/1.1' into debian
Upstream version 1.1
-rw-r--r--Makefile.in8
-rw-r--r--NEWS5
-rw-r--r--perl/lib/Wallet/Admin.pm18
-rw-r--r--perl/lib/Wallet/Object/Duo.pm4
-rwxr-xr-xperl/t/general/admin.t1
-rwxr-xr-xperl/t/general/server.t18
-rwxr-xr-xperl/t/object/duo.t2
7 files changed, 25 insertions, 31 deletions
diff --git a/Makefile.in b/Makefile.in
index c2357f9..0633f5e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -104,13 +104,13 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/tests/client/full-t.in \
$(top_srcdir)/tests/client/prompt-t.in \
$(top_srcdir)/tests/client/rekey-t.in \
- $(top_srcdir)/portable/reallocarray.c \
- $(top_srcdir)/portable/asprintf.c \
$(top_srcdir)/portable/snprintf.c \
- $(top_srcdir)/portable/setenv.c \
$(top_srcdir)/portable/strlcpy.c \
+ $(top_srcdir)/portable/asprintf.c \
+ $(top_srcdir)/portable/strlcat.c \
+ $(top_srcdir)/portable/reallocarray.c \
$(top_srcdir)/portable/mkstemp.c \
- $(top_srcdir)/portable/strlcat.c $(dist_sbin_SCRIPTS) \
+ $(top_srcdir)/portable/setenv.c $(dist_sbin_SCRIPTS) \
$(top_srcdir)/build-aux/depcomp $(dist_man_MANS) \
$(dist_pkgdata_DATA) NEWS README TODO build-aux/ar-lib \
build-aux/compile build-aux/depcomp build-aux/install-sh \
diff --git a/NEWS b/NEWS
index 5764ffc..039494e 100644
--- a/NEWS
+++ b/NEWS
@@ -67,11 +67,6 @@ wallet 1.1 (2014-07-16)
are referencing. Should fix destroy in MySQL and other database
engines that enforce referential integrity.
- The initial creation and membership of the ADMIN ACL during database
- initialization or reinitialization is no longer recorded in the
- acl_history table. (This is fallout from making a specific type of
- upgrade testable, and may be fixed in the future.)
-
The wallet server now requires Perl 5.8 or later (instead of 5.006 in
previous versions) and is now built with Module::Build instead of
ExtUtils::MakeMaker. This should be transparent to anyone not working
diff --git a/perl/lib/Wallet/Admin.pm b/perl/lib/Wallet/Admin.pm
index 8481979..33e2a7d 100644
--- a/perl/lib/Wallet/Admin.pm
+++ b/perl/lib/Wallet/Admin.pm
@@ -98,20 +98,10 @@ sub initialize {
$self->default_data;
# Create a default admin ACL.
- eval {
- my $guard = $self->{schema}->txn_scope_guard;
- $self->{schema}->resultset ('Acl')->populate ([
- [ qw/ac_id ac_name/ ],
- [ 1, 'ADMIN' ],
- ]);
- $self->{schema}->resultset ('AclEntry')->populate ([
- [ qw/ae_id ae_scheme ae_identifier/ ],
- [ 1, 'krb5', $user ],
- ]);
- $guard->commit;
- };
- if ($@) {
- $self->error ("cannot add ADMIN ACL: $@");
+ my $schema = $self->{schema};
+ my $acl = Wallet::ACL->create ('ADMIN', $schema, $user, 'localhost');
+ unless ($acl->add ('krb5', $user, $user, 'localhost')) {
+ $self->error ($acl->error);
return;
}
return 1;
diff --git a/perl/lib/Wallet/Object/Duo.pm b/perl/lib/Wallet/Object/Duo.pm
index e3fe2da..6edc4fa 100644
--- a/perl/lib/Wallet/Object/Duo.pm
+++ b/perl/lib/Wallet/Object/Duo.pm
@@ -105,7 +105,7 @@ sub create {
# Create the object in Duo.
require Net::Duo::Admin::Integration;
my %data = (
- name => $name,
+ name => "$name ($Wallet::Config::DUO_TYPE)",
notes => 'Managed by wallet',
type => $Wallet::Config::DUO_TYPE,
);
@@ -190,7 +190,7 @@ sub get {
# We also need the admin server name, which we can get from the Duo object
# configuration with a bit of JSON decoding.
- my $json = JSON->new->utf8 (1);
+ my $json = JSON->new->utf8 (1)->relaxed (1);
my $config = $json->decode (scalar slurp $Wallet::Config::DUO_KEY_FILE);
# Construct the returned file.
diff --git a/perl/t/general/admin.t b/perl/t/general/admin.t
index 7c62932..47396c6 100755
--- a/perl/t/general/admin.t
+++ b/perl/t/general/admin.t
@@ -61,7 +61,6 @@ is ($server->acl_add ('ADMIN', 'base', 'foo'), 1,
' and adding a base ACL now works');
# Test re-initialization of the database.
-$Wallet::Schema::VERSION = '0.07';
is ($admin->reinitialize ('admin@EXAMPLE.COM'), 1,
' and re-initialization succeeds');
diff --git a/perl/t/general/server.t b/perl/t/general/server.t
index b270733..0a527a5 100755
--- a/perl/t/general/server.t
+++ b/perl/t/general/server.t
@@ -54,8 +54,18 @@ is ($server->acl_show ('ADMIN'),
is ($server->acl_show (1),
"Members of ACL ADMIN (id: 1) are:\n krb5 $admin\n",
' including by number');
-is ($server->acl_history ('ADMIN'), '', ' and initial history is empty');
-is ($server->acl_history (1), '', ' including by number');
+my $history = <<"EOO";
+DATE create
+ by $admin from $host
+DATE add krb5 $admin
+ by $admin from $host
+EOO
+my $result = $server->acl_history ('ADMIN');
+$result =~ s/^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d/DATE/gm;
+is ($result, $history, ' and displaying history works');
+$result = $server->acl_history (1);
+$result =~ s/^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d/DATE/gm;
+is ($result, $history, ' including by number');
is ($server->acl_create (3), undef, 'Cannot create ACL with a numeric name');
is ($server->error, 'ACL name may not be all numbers',
' and returns the right error');
@@ -107,7 +117,7 @@ is ($server->acl_add ('both', 'krb5', $user2), 1,
is ($server->acl_show ('both'),
"Members of ACL both (id: 4) are:\n krb5 $user1\n krb5 $user2\n",
' and show returns the correct result');
-my $history = <<"EOO";
+$history = <<"EOO";
DATE create
by $admin from $host
DATE add krb5 $user1
@@ -115,7 +125,7 @@ DATE add krb5 $user1
DATE add krb5 $user2
by $admin from $host
EOO
-my $result = $server->acl_history ('both');
+$result = $server->acl_history ('both');
$result =~ s/^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d/DATE/gm;
is ($result, $history, ' as does history');
is ($server->acl_add ('empty', 'krb5', $user1), 1, ' and another to empty');
diff --git a/perl/t/object/duo.t b/perl/t/object/duo.t
index 4229afe..f73fe7e 100755
--- a/perl/t/object/duo.t
+++ b/perl/t/object/duo.t
@@ -70,7 +70,7 @@ $Wallet::Config::DUO_KEY_FILE = 't/data/duo/keys.json';
# Test creating an integration.
note ('Test creating an integration');
my $expected = {
- name => 'test',
+ name => 'test (unix)',
notes => 'Managed by wallet',
type => 'unix',
};