Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 39a77adb

Von Moritz Bunkus vor mehr als 6 Jahren hinzugefügt

  • ID 39a77adbb6f19f35d25f5e26dd274f46a626e505
  • Vorgänger b08b354b
  • Nachfolger 7037ea82

Tests: Eigene Verbindungsdaten für DB-Upgrades mit Super-User-Rechten

Wenn der Benutzer, der in der Konfiguration mit `user` & `password`
angegeben ist, keine Super-User-Rechte hat, so kann ein weiterer
Account dafür mit `superuser_user` & `superuser_password` angegeben
werden. Nur diejenigen Datenbankuprade-Scripte, die über den Tag
`@superuser_privileges` signalisieren, dass sie Super-User-Rechte
benötigen, werden auch wirklich mit Super-User-Rechten ausgeführt.

Unterschiede anzeigen:

t/000setup_database.t
16 16
use SL::LxOfficeConf;
17 17
use Support::TestSetup;
18 18

  
19
our ($db_cfg, $dbh);
19
our ($db_cfg, $dbh, $superuser_dbh);
20 20

  
21 21
sub dbg {
22 22
  # diag(@_);
......
85 85

  
86 86
sub report_success {
87 87
  $dbh->disconnect;
88
  $superuser_dbh->disconnect if $superuser_dbh;
88 89
  ok(1, "Database has been setup sucessfully.");
89 90
  done_testing();
90 91
}
......
97 98

  
98 99
  dbg("Applying $file");
99 100

  
100
  my $error = $dbupdater->process_file($dbh, $file, $control);
101
  my $script_dbh = $control && $control->{superuser_privileges} ? ($superuser_dbh // $dbh) : $dbh;
102
  my $error      = $dbupdater->process_file($script_dbh, $file, $control);
101 103

  
102 104
  BAIL_OUT("Error applying $file: $error") if $error;
103 105
}
......
117 119
  my $dbupdater  = SL::DBUpgrade2->new(form => $::form, return_on_error => 1, silent => 1);
118 120
  my $coa        = 'Germany-DATEV-SKR03EU';
119 121

  
122
  if ($db_cfg->{superuser_user} && ($db_cfg->{superuser_user} ne $db_cfg->{user})) {
123
    @dbi_options = (
124
      'dbi:Pg:dbname=' . $db_cfg->{db} . ';host=' . $db_cfg->{host} . ';port=' . $db_cfg->{port},
125
      $db_cfg->{superuser_user},
126
      $db_cfg->{superuser_password},
127
      SL::DBConnect->get_options(PrintError => 0, PrintWarn => 0),
128
    );
129

  
130
    $superuser_dbh = SL::DBConnect->connect(@dbi_options) || BAIL_OUT("Database superuser connection failed: " . $DBI::errstr);
131
  }
132

  
120 133
  apply_dbupgrade($dbupdater, "sql/lx-office.sql");
121 134
  apply_dbupgrade($dbupdater, "sql/${coa}-chart.sql");
122 135

  

Auch abrufbar als: Unified diff