1 // Licensed to the .NET Foundation under one or more agreements. 2 // The .NET Foundation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using Xunit; 6 7 namespace System.DirectoryServices.Protocols.Tests 8 { 9 public class LdapDirectoryIdentifierTests 10 { 11 [Theory] 12 [InlineData(null, new string[0])] 13 [InlineData("", new string[] { "" })] 14 [InlineData("server", new string[] { "server" })] Ctor_Server(string server, string[] expectedServers)15 public void Ctor_Server(string server, string[] expectedServers) 16 { 17 var identifier = new LdapDirectoryIdentifier(server); 18 Assert.False(identifier.Connectionless); 19 Assert.False(identifier.FullyQualifiedDnsHostName); 20 Assert.Equal(389, identifier.PortNumber); 21 Assert.Equal(expectedServers, identifier.Servers); 22 } 23 24 [Theory] 25 [InlineData(null, 389, new string[0])] 26 [InlineData("", -1, new string[] { "" })] 27 [InlineData("server", int.MaxValue, new string[] { "server" })] Ctor_Server_PortNumber(string server, int portNumber, string[] expectedServers)28 public void Ctor_Server_PortNumber(string server, int portNumber, string[] expectedServers) 29 { 30 var identifier = new LdapDirectoryIdentifier(server, portNumber); 31 Assert.False(identifier.Connectionless); 32 Assert.False(identifier.FullyQualifiedDnsHostName); 33 Assert.Equal(portNumber, identifier.PortNumber); 34 Assert.Equal(expectedServers, identifier.Servers); 35 } 36 37 [Theory] 38 [InlineData(null, true, false, new string[0])] 39 [InlineData("", false, true, new string[] { "" })] 40 [InlineData("server", true, true, new string[] { "server" })] Ctor_Server_FullQualifiedDnsHostName_Conectionless(string server, bool fullyQualifiedDnsHostName, bool connectionless, string[] expectedServers)41 public void Ctor_Server_FullQualifiedDnsHostName_Conectionless(string server, bool fullyQualifiedDnsHostName, bool connectionless, string[] expectedServers) 42 { 43 var identifier = new LdapDirectoryIdentifier(server, fullyQualifiedDnsHostName, connectionless); 44 Assert.Equal(connectionless, identifier.Connectionless); 45 Assert.Equal(fullyQualifiedDnsHostName, identifier.FullyQualifiedDnsHostName); 46 Assert.Equal(389, identifier.PortNumber); 47 Assert.Equal(expectedServers, identifier.Servers); 48 } 49 50 [Theory] 51 [InlineData(null, -1, true, false, new string[0])] 52 [InlineData("", 389, false, true, new string[] { "" })] 53 [InlineData("server", int.MaxValue, true, true, new string[] { "server" })] Ctor_PortNumber_Server_FullQualifiedDnsHostName_Conectionless(string server, int portNumber, bool fullyQualifiedDnsHostName, bool connectionless, string[] expectedServers)54 public void Ctor_PortNumber_Server_FullQualifiedDnsHostName_Conectionless(string server, int portNumber, bool fullyQualifiedDnsHostName, bool connectionless, string[] expectedServers) 55 { 56 var identifier = new LdapDirectoryIdentifier(server, portNumber, fullyQualifiedDnsHostName, connectionless); 57 Assert.Equal(connectionless, identifier.Connectionless); 58 Assert.Equal(fullyQualifiedDnsHostName, identifier.FullyQualifiedDnsHostName); 59 Assert.Equal(portNumber, identifier.PortNumber); 60 Assert.Equal(expectedServers, identifier.Servers); 61 } 62 63 [Theory] 64 [InlineData(null, false, true)] 65 [InlineData(new string[0], true, false)] 66 [InlineData(new string[] { "server" }, true, true)] 67 [InlineData(new string[] { "server", null }, false, false)] Ctor_Servers_FullQualifiedDnsHostName_Conectionless(string[] servers, bool fullyQualifiedDnsHostName, bool connectionless)68 public void Ctor_Servers_FullQualifiedDnsHostName_Conectionless(string[] servers, bool fullyQualifiedDnsHostName, bool connectionless) 69 { 70 var identifier = new LdapDirectoryIdentifier(servers, fullyQualifiedDnsHostName, connectionless); 71 Assert.Equal(connectionless, identifier.Connectionless); 72 Assert.Equal(fullyQualifiedDnsHostName, identifier.FullyQualifiedDnsHostName); 73 Assert.Equal(389, identifier.PortNumber); 74 Assert.NotSame(servers, identifier.Servers); 75 Assert.Equal(servers ?? Array.Empty<string>(), identifier.Servers); 76 } 77 78 [Fact] Ctor_ServerHasSpaceInName_ThrowsArgumentException()79 public void Ctor_ServerHasSpaceInName_ThrowsArgumentException() 80 { 81 AssertExtensions.Throws<ArgumentException>(null, () => new LdapDirectoryIdentifier("se rver")); 82 AssertExtensions.Throws<ArgumentException>(null, () => new LdapDirectoryIdentifier("se rver", 0)); 83 AssertExtensions.Throws<ArgumentException>(null, () => new LdapDirectoryIdentifier("se rver", false, false)); 84 AssertExtensions.Throws<ArgumentException>(null, () => new LdapDirectoryIdentifier("se rver", 0, false, false)); 85 AssertExtensions.Throws<ArgumentException>(null, () => new LdapDirectoryIdentifier(new string[] { "se rver" }, false, false)); 86 AssertExtensions.Throws<ArgumentException>(null, () => new LdapDirectoryIdentifier(new string[] { "se rver" }, 0, false, false)); 87 } 88 } 89 } 90