2 * PROJECT: ReactOS API Tests
3 * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory
4 * PURPOSE: Tests for GetNetworkParams function
5 * PROGRAMMERS: Peter Hater
10 #define WIN32_NO_STATUS
14 #define ROSTESTDHCPHOST "testdhcproshost"
15 #define ROSTESTDHCPDOMAIN "testrosdomain"
19 ReadRegistryValue(PCHAR ValueName
, PCHAR Value
)
26 /* Open the database path key */
27 ErrorCode
= RegOpenKeyExA(HKEY_LOCAL_MACHINE
,
28 "System\\CurrentControlSet\\Services\\Tcpip\\Parameters",
32 if (ErrorCode
== NO_ERROR
)
34 /* Read the actual path */
35 ErrorCode
= RegQueryValueExA(ParametersKey
,
43 /* Read the actual path */
44 ErrorCode
= RegQueryValueExA(ParametersKey
,
53 RegCloseKey(ParametersKey
);
60 WriteRegistryValue(PCHAR ValueName
, PCHAR Value
)
65 /* Open the database path key */
66 ErrorCode
= RegOpenKeyExA(HKEY_LOCAL_MACHINE
,
67 "System\\CurrentControlSet\\Services\\Tcpip\\Parameters",
71 if (ErrorCode
== NO_ERROR
)
73 /* Read the actual path */
74 ErrorCode
= RegSetValueExA(ParametersKey
,
82 RegCloseKey(ParametersKey
);
89 DeleteRegistryValue(PCHAR ValueName
)
94 /* Open the database path key */
95 ErrorCode
= RegOpenKeyExA(HKEY_LOCAL_MACHINE
,
96 "System\\CurrentControlSet\\Services\\Tcpip\\Parameters",
100 if (ErrorCode
== NO_ERROR
)
102 /* Read the actual path */
103 ErrorCode
= RegDeleteValueA(ParametersKey
, ValueName
);
106 RegCloseKey(ParametersKey
);
113 test_GetNetworkParams(VOID
)
117 CHAR OrigHostname
[128];
118 CHAR OrigDomainName
[128];
119 CHAR OrigDhcpHostname
[128];
120 CHAR OrigDhcpDomainName
[128];
121 BOOL OrigHostnameExists
;
122 BOOL OrigDomainNameExists
;
123 BOOL OrigDhcpHostnameExists
;
124 BOOL OrigDhcpDomainNameExists
;
125 PFIXED_INFO FixedInfo
;
128 memset(OrigHostname
, 0, sizeof(OrigHostname
));
129 memset(OrigDomainName
, 0, sizeof(OrigDomainName
));
130 memset(OrigDhcpHostname
, 0, sizeof(OrigDhcpHostname
));
131 memset(OrigDhcpDomainName
, 0, sizeof(OrigDhcpDomainName
));
132 /* read current registry values */
133 ErrorCode
= ReadRegistryValue("Hostname", OrigHostname
);
134 ok(ErrorCode
== ERROR_SUCCESS
, "Failed to read registry key Hostname %d\n", ErrorCode
);
135 OrigHostnameExists
= ErrorCode
== NO_ERROR
;
136 ErrorCode
= ReadRegistryValue("Domain", OrigDomainName
);
137 ok(ErrorCode
== ERROR_SUCCESS
|| ErrorCode
== ERROR_FILE_NOT_FOUND
, "Failed to read registry key DomainName %d\n", ErrorCode
);
138 OrigDomainNameExists
= ErrorCode
== NO_ERROR
;
139 ErrorCode
= ReadRegistryValue("DhcpHostname", OrigDhcpHostname
);
140 ok(ErrorCode
== ERROR_SUCCESS
|| ErrorCode
== ERROR_FILE_NOT_FOUND
, "Failed to read registry key DhcpHostname %d\n", ErrorCode
);
141 OrigDhcpHostnameExists
= ErrorCode
== NO_ERROR
;
142 ErrorCode
= ReadRegistryValue("DhcpDomain", OrigDhcpDomainName
);
143 ok(ErrorCode
== ERROR_SUCCESS
|| ErrorCode
== ERROR_FILE_NOT_FOUND
, "Failed to read registry key DhcpDomainName %d\n", ErrorCode
);
144 OrigDhcpDomainNameExists
= ErrorCode
== NO_ERROR
;
146 trace("Starting values:\n");
147 trace("Hostname: %s, exists %s\n", OrigHostname
, OrigHostnameExists
? "yes" : "no");
148 trace("Domain: %s, exists %s\n", OrigDomainName
, OrigDomainNameExists
? "yes" : "no");
149 trace("DhcpHostname: %s, exists %s\n", OrigDhcpHostnameExists
? OrigDhcpHostname
: "", OrigDhcpHostnameExists
? "yes" : "no");
150 trace("DhcpDomain: %s, exists %s\n", OrigDhcpDomainNameExists
? OrigDhcpDomainName
: "", OrigDhcpDomainNameExists
? "yes" : "no");
152 ApiReturn
= GetNetworkParams(NULL
, &len
);
153 ok(ApiReturn
== ERROR_BUFFER_OVERFLOW
,
154 "GetNetworkParams returned %ld, expected ERROR_BUFFER_OVERFLOW\n",
156 if (ApiReturn
!= ERROR_BUFFER_OVERFLOW
)
157 skip("Can't determine size of FIXED_INFO. Can't proceed\n");
158 FixedInfo
= HeapAlloc(GetProcessHeap(), 0, len
);
159 if (FixedInfo
== NULL
)
160 skip("FixedInfo is NULL. Can't proceed\n");
162 ApiReturn
= GetNetworkParams(FixedInfo
, &len
);
163 ok(ApiReturn
== NO_ERROR
,
164 "GetNetworkParams(buf, &dwSize) returned %ld, expected NO_ERROR\n",
166 if (ApiReturn
!= NO_ERROR
)
168 HeapFree(GetProcessHeap(), 0, FixedInfo
);
169 skip("GetNetworkParams failed. Can't proceed\n");
171 ok(FixedInfo
->HostName
!= NULL
, "FixedInfo->HostName is NULL\n");
172 if (FixedInfo
->HostName
== NULL
)
174 HeapFree(GetProcessHeap(), 0, FixedInfo
);
175 skip("FixedInfo->HostName is NULL. Can't proceed\n");
177 if (OrigDhcpHostnameExists
)
179 /* Windows doesn't honor DHCP option 12 even if RFC requires it if it is returned by DHCP server! */
180 //ok(strcmp(FixedInfo->HostName, OrigDhcpHostname) == 0, "FixedInfo->HostName is wrong '%s' != '%s'\n", FixedInfo->HostName, OrigDhcpHostname);
183 ok(strcmp(FixedInfo
->HostName
, OrigHostname
) == 0, "FixedInfo->HostName is wrong '%s' != '%s'\n", FixedInfo
->HostName
, OrigHostname
);
184 ok(FixedInfo
->DomainName
!= NULL
, "FixedInfo->DomainName is NULL\n");
185 if (FixedInfo
->DomainName
== NULL
)
187 HeapFree(GetProcessHeap(), 0, FixedInfo
);
188 skip("FixedInfo->DomainName is NULL. Can't proceed\n");
190 if(OrigDhcpDomainNameExists
)
191 ok(strcmp(FixedInfo
->DomainName
, OrigDhcpDomainName
) == 0, "FixedInfo->DomainName is wrong '%s' != '%s'\n", FixedInfo
->DomainName
, OrigDhcpDomainName
);
193 ok(strcmp(FixedInfo
->DomainName
, OrigDomainName
) == 0, "FixedInfo->DomainName is wrong '%s' != '%s'\n", FixedInfo
->DomainName
, OrigDomainName
);
194 if (!OrigDhcpHostnameExists
)
196 ErrorCode
= WriteRegistryValue("DhcpHostname", ROSTESTDHCPHOST
);
197 ok(ErrorCode
== NO_ERROR
, "Failed to write registry key DhcpHostname %d\n", ErrorCode
);
201 ErrorCode
= DeleteRegistryValue("DhcpHostname");
202 ok(ErrorCode
== NO_ERROR
, "Failed to remove registry key DhcpHostname %d\n", ErrorCode
);
204 if (!OrigDhcpDomainNameExists
)
206 ErrorCode
= WriteRegistryValue("DhcpDomain", ROSTESTDHCPDOMAIN
);
207 ok(ErrorCode
== NO_ERROR
, "Failed to write registry key DhcpDomainName %d\n", ErrorCode
);
211 ErrorCode
= DeleteRegistryValue("DhcpDomain");
212 ok(ErrorCode
== NO_ERROR
, "Failed to remove registry key DhcpDomainName %d\n", ErrorCode
);
215 HeapFree(GetProcessHeap(), 0, FixedInfo
);
217 ApiReturn
= GetNetworkParams(NULL
, &len
);
218 ok(ApiReturn
== ERROR_BUFFER_OVERFLOW
,
219 "GetNetworkParams returned %ld, expected ERROR_BUFFER_OVERFLOW\n",
221 if (ApiReturn
!= ERROR_BUFFER_OVERFLOW
)
222 skip("Can't determine size of FIXED_INFO. Can't proceed\n");
223 FixedInfo
= HeapAlloc(GetProcessHeap(), 0, len
);
224 if (FixedInfo
== NULL
)
225 skip("FixedInfo is NULL. Can't proceed\n");
226 ApiReturn
= GetNetworkParams(FixedInfo
, &len
);
227 ok(ApiReturn
== NO_ERROR
,
228 "GetNetworkParams(buf, &dwSize) returned %ld, expected NO_ERROR\n",
230 if (ApiReturn
!= NO_ERROR
)
232 HeapFree(GetProcessHeap(), 0, FixedInfo
);
233 skip("GetNetworkParams failed. Can't proceed\n");
236 /* restore registry values */
237 if (OrigDhcpHostnameExists
)
238 ErrorCode
= WriteRegistryValue("DhcpHostname", OrigDhcpHostname
);
240 ErrorCode
= DeleteRegistryValue("DhcpHostname");
241 ok(ErrorCode
== NO_ERROR
, "Failed to restore registry key DhcpHostname %d\n", ErrorCode
);
242 if (OrigDhcpDomainNameExists
)
243 ErrorCode
= WriteRegistryValue("DhcpDomain", OrigDhcpDomainName
);
245 ErrorCode
= DeleteRegistryValue("DhcpDomain");
246 ok(ErrorCode
== NO_ERROR
, "Failed to restore registry key DhcpDomainName %d\n", ErrorCode
);
248 ok(ApiReturn
== NO_ERROR
,
249 "GetNetworkParams(buf, &dwSize) returned %ld, expected NO_ERROR\n",
251 ok(FixedInfo
->HostName
!= NULL
, "FixedInfo->HostName is NULL\n");
252 if (FixedInfo
->HostName
== NULL
)
253 skip("FixedInfo->HostName is NULL. Can't proceed\n");
254 if (!OrigDhcpHostnameExists
)
256 /* Windows doesn't honor DHCP option 12 even if RFC requires it if it is returned by DHCP server! */
257 //ok(strcmp(FixedInfo->HostName, ROSTESTDHCPHOST) == 0, "FixedInfo->HostName is wrong '%s' != '%s'\n", FixedInfo->HostName, ROSTESTDHCPHOST);
260 ok(strcmp(FixedInfo
->HostName
, OrigHostname
) == 0, "FixedInfo->HostName is wrong '%s' != '%s'\n", FixedInfo
->HostName
, OrigHostname
);
261 ok(FixedInfo
->DomainName
!= NULL
, "FixedInfo->DomainName is NULL\n");
262 if (FixedInfo
->DomainName
== NULL
)
263 skip("FixedInfo->DomainName is NULL. Can't proceed\n");
264 if (!OrigDhcpDomainNameExists
)
265 ok(strcmp(FixedInfo
->DomainName
, ROSTESTDHCPDOMAIN
) == 0, "FixedInfo->DomainName is wrong '%s' != '%s'\n", FixedInfo
->DomainName
, ROSTESTDHCPDOMAIN
);
267 ok(strcmp(FixedInfo
->DomainName
, OrigDomainName
) == 0, "FixedInfo->DomainName is wrong '%s' != '%s'\n", FixedInfo
->DomainName
, OrigDomainName
);
269 HeapFree(GetProcessHeap(), 0, FixedInfo
);
272 START_TEST(GetNetworkParams
)
274 test_GetNetworkParams();