selftest: Add new AD DC testenv with NTLM disabled
authorTim Beale <timbeale@catalyst.net.nz>
Wed, 5 Jul 2017 02:03:17 +0000 (14:03 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 25 Sep 2017 22:41:16 +0000 (00:41 +0200)
This is so that we test the source4 case as well. Currently the only
testenv with NTLM disabled is ktest, and that only exercises the source3
code.

I've tried to support the new test environment with minimal changes to the
Samba4.pm setup code.

Signed-off-by: Tim Beale <timbeale@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
selftest/knownfail
selftest/target/Samba.pm
selftest/target/Samba4.pm
source4/selftest/tests.py

index 953b1812c18e6b163d7b7b877ca6c74c4e75e470..80de242b14db40492c6390dcee8971d9628a2488 100644 (file)
 ^samba.tests.netlogonsvc.python\(fileserver\)
 # NTLM authentication is (intentionally) disabled in ktest
 ^samba.tests.ntlmauth.python\(ktest\).ntlmauth.NtlmAuthTests.test_ntlm_connection\(ktest\)
+^samba.tests.ntlmauth.python\(ad_dc_no_ntlm\).ntlmauth.NtlmAuthTests.test_samr_change_password\(ad_dc_no_ntlm\)
 # Disabling NTLM means you can't use samr to change the password
 ^samba.tests.ntlmauth.python\(ktest\).ntlmauth.NtlmAuthTests.test_samr_change_password\(ktest\)
+^samba.tests.ntlmauth.python\(ad_dc_no_ntlm\).ntlmauth.NtlmAuthTests.test_ntlm_connection\(ad_dc_no_ntlm\)
index 596877226172c80f5e1287c02b38072c591dcb71..dc6b3d518bf850927b73f82a210d35b51e03a347 100644 (file)
@@ -346,6 +346,7 @@ sub get_interface($)
 
     # 11-16 used by selftest.pl for client interfaces
 
+    $interfaces{"addc_no_ntlm"} = 18;
     $interfaces{"idmapadmember"} = 19;
     $interfaces{"idmapridmember"} = 20;
     $interfaces{"localdc"} = 21;
index 7930a4ec8a8cf81bd6553371c5b51ea6290e83c3..be43bae83cfefa1b5d82d9be090cc743be959f02 100755 (executable)
@@ -1757,9 +1757,9 @@ sub read_config_h($)
        return \%ret;
 }
 
-sub provision_ad_dc($$)
+sub provision_ad_dc($$$$$$)
 {
-       my ($self, $prefix) = @_;
+       my ($self, $prefix, $hostname, $domain, $realm, $smbconf_args) = @_;
 
        my $prefix_abs = abs_path($prefix);
 
@@ -1823,6 +1823,7 @@ sub provision_ad_dc($$)
        print notify backchannel = yes
 
         auth event notification = true
+        $smbconf_args
 ";
 
        my $extra_smbconf_shares = "
@@ -1867,9 +1868,9 @@ sub provision_ad_dc($$)
        print "PROVISIONING AD DC...\n";
        my $ret = $self->provision($prefix,
                                   "domain controller",
-                                  "addc",
-                                  "ADDOMAIN",
-                                  "addom.samba.example.com",
+                                  $hostname,
+                                  $domain,
+                                  $realm,
                                   "2008",
                                   "locDCpass1",
                                   undef,
@@ -2127,6 +2128,8 @@ sub setup_env($$$)
                return $self->setup_ad_dc("$path/ad_dc");
        } elsif ($envname eq "ad_dc_no_nss") {
                return $self->setup_ad_dc("$path/ad_dc_no_nss", "no_nss");
+       } elsif ($envname eq "ad_dc_no_ntlm") {
+               return $self->setup_ad_dc_no_ntlm("$path/ad_dc_no_ntlm");
        } elsif ($envname eq "ad_member_rfc2307") {
                if (not defined($self->{vars}->{ad_dc_ntvfs})) {
                        $self->setup_ad_dc_ntvfs("$path/ad_dc_ntvfs");
@@ -2506,7 +2509,8 @@ sub setup_ad_dc($$)
               return "UNKNOWN";
        }
 
-       my $env = $self->provision_ad_dc($path);
+       my $env = $self->provision_ad_dc($path, "addc", "ADDOMAIN",
+                                        "addom.samba.example.com", "");
        unless ($env) {
                return undef;
        }
@@ -2529,6 +2533,35 @@ sub setup_ad_dc($$)
        return $env;
 }
 
+sub setup_ad_dc_no_ntlm($$)
+{
+       my ($self, $path) = @_;
+
+       # If we didn't build with ADS, pretend this env was never available
+       if (not $self->{target3}->have_ads()) {
+              return "UNKNOWN";
+       }
+
+       my $env = $self->provision_ad_dc($path, "addc_no_ntlm", "ADNONTLMDOMAIN",
+                                        "adnontlmdom.samba.example.com",
+                                        "ntlm auth = disabled");
+       unless ($env) {
+               return undef;
+       }
+
+       if (not defined($self->check_or_start($env, "single"))) {
+           return undef;
+       }
+
+       my $upn_array = ["$env->{REALM}.upn"];
+       my $spn_array = ["$env->{REALM}.spn"];
+
+       $self->setup_namespaces($env, $upn_array, $spn_array);
+
+       $self->{vars}->{ad_dc_no_ntlm} = $env;
+       return $env;
+}
+
 sub setup_none($$)
 {
        my ($self, $path) = @_;
index f8d2229aab232e067c4182232f00e71694711c97..c7150d05c1456a407055de292d9b2831f1658366 100755 (executable)
@@ -964,7 +964,7 @@ for env in [ "simpleserver", "fileserver", "nt4_dc", "ad_dc", "ad_dc_ntvfs", "ad
                            extra_path=[os.path.join(srcdir(), 'python/samba/tests')],
                            name="samba.tests.netlogonsvc.python(%s)" % env)
 
-for env in [ "ktest", "ad_member"]:
+for env in [ "ktest", "ad_member", "ad_dc_no_ntlm" ]:
     planoldpythontestsuite(env, "ntlmauth",
                            extra_path=[os.path.join(srcdir(), 'python/samba/tests')],
                            name="samba.tests.ntlmauth.python(%s)" % env)