inetmib1: Add tests for SnmpExtensionQuery.

This commit is contained in:
Juan Lang 2008-05-20 20:49:56 -07:00 committed by Alexandre Julliard
parent f451fefc6c
commit 68991faf9f
1 changed files with 103 additions and 0 deletions

View File

@ -50,8 +50,111 @@ static void testInit(void)
"Expected 1.3.6.1.2.1.1, got %s\n", SnmpUtilOidToA(&oid));
}
static void testQuery(void)
{
BOOL (WINAPI *pQuery)(BYTE, SnmpVarBindList *, AsnInteger32 *,
AsnInteger32 *);
BOOL ret, moreData;
SnmpVarBindList list;
AsnInteger32 error, index;
UINT bogus[] = { 1,2,3,4 };
UINT mib2System[] = { 1,3,6,1,2,1,1 };
UINT mib2If[] = { 1,3,6,1,2,1,2 };
UINT mib2IfTable[] = { 1,3,6,1,2,1,2,2 };
SnmpVarBind vars[3], vars2[3];
pQuery = (void *)GetProcAddress(inetmib1, "SnmpExtensionQuery");
if (!pQuery)
{
skip("couldn't find SnmpExtensionQuery\n");
return;
}
/* Crash
ret = pQuery(0, NULL, NULL, NULL);
ret = pQuery(0, NULL, &error, NULL);
ret = pQuery(0, NULL, NULL, &index);
ret = pQuery(0, &list, NULL, NULL);
ret = pQuery(0, &list, &error, NULL);
*/
/* An empty list succeeds */
list.len = 0;
error = 0xdeadbeef;
index = 0xdeadbeef;
ret = pQuery(SNMP_PDU_GET, &list, &error, &index);
todo_wine {
ok(ret, "SnmpExtensionQuery failed: %d\n", GetLastError());
ok(error == SNMP_ERRORSTATUS_NOERROR,
"expected SNMP_ERRORSTATUS_NOERROR, got %d\n", error);
ok(index == 0, "expected index 0, got %d\n", index);
}
/* Oddly enough, this "succeeds," even though the OID is clearly
* unsupported.
*/
vars[0].name.idLength = sizeof(bogus) / sizeof(bogus[0]);
vars[0].name.ids = bogus;
vars[0].value.asnType = 0;
list.len = 1;
list.list = vars;
SetLastError(0xdeadbeef);
error = 0xdeadbeef;
index = 0xdeadbeef;
ret = pQuery(SNMP_PDU_GET, &list, &error, &index);
todo_wine {
ok(ret, "SnmpExtensionQuery failed: %d\n", GetLastError());
ok(error == SNMP_ERRORSTATUS_NOERROR,
"expected SNMP_ERRORSTATUS_NOERROR, got %d\n", error);
ok(index == 0, "expected index 0, got %d\n", index);
}
/* The OID isn't changed either: */
ok(!strcmp("1.2.3.4", SnmpUtilOidToA(&vars[0].name)),
"expected 1.2.3.4, got %s\n", SnmpUtilOidToA(&vars[0].name));
/* The table is not an accessible variable, so it fails */
vars[0].name.idLength = sizeof(mib2IfTable) / sizeof(mib2IfTable[0]);
vars[0].name.ids = mib2IfTable;
SetLastError(0xdeadbeef);
error = 0xdeadbeef;
index = 0xdeadbeef;
ret = pQuery(SNMP_PDU_GET, &list, &error, &index);
todo_wine {
ok(ret, "SnmpExtensionQuery failed: %d\n", GetLastError());
ok(error == SNMP_ERRORSTATUS_NOSUCHNAME,
"expected SNMP_ERRORSTATUS_NOSUCHNAME, got %d\n", error);
/* The index is 1-based rather than 0-based */
ok(index == 1, "expected index 1, got %d\n", index);
}
/* Even though SnmpExtensionInit says this DLL supports the MIB2 system
* variables, the first variable it returns a value for is the first
* interface.
*/
vars[0].name.idLength = sizeof(mib2System) / sizeof(mib2System[0]);
vars[0].name.ids = mib2System;
SnmpUtilOidCpy(&vars2[0].name, &vars[0].name);
vars2[0].value.asnType = 0;
list.len = 1;
list.list = vars2;
moreData = TRUE;
ret = pQuery(SNMP_PDU_GETNEXT, &list, &error, &index);
todo_wine {
ok(ret, "SnmpExtensionQuery failed: %d\n", GetLastError());
ok(error == SNMP_ERRORSTATUS_NOERROR,
"expected SNMP_ERRORSTATUS_NOERROR, got %d\n", error);
ok(index == 0, "expected index 0, got %d\n", index);
}
vars[0].name.idLength = sizeof(mib2If) / sizeof(mib2If[0]);
vars[0].name.ids = mib2If;
todo_wine
ok(!SnmpUtilOidNCmp(&vars2[0].name, &vars[0].name, vars[0].name.idLength),
"expected 1.3.6.1.2.1.2, got %s\n", SnmpUtilOidToA(&vars2[0].name));
SnmpUtilVarBindFree(&vars2[0]);
}
START_TEST(main)
{
inetmib1 = LoadLibraryA("inetmib1");
testInit();
testQuery();
}