r21372: Tests, more tests! Some are still commented out, because the code they test...
authorJelmer Vernooij <jelmer@samba.org>
Thu, 15 Feb 2007 19:33:03 +0000 (19:33 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:48:21 +0000 (14:48 -0500)
(This used to be commit 8f039a25cd75e4acdaec0afce3cc159b0abe99ec)

source4/librpc/idl/winreg.idl
source4/torture/ndr/winreg.c

index a0d90ef12de908898c13f5c6c6f72ac15d263b8f..3b2c383bad9cce498c9002deb6a713a264766d2b 100644 (file)
@@ -127,7 +127,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
 
        /******************/
        /* Function: 0x07 */
-       WERROR winreg_DeleteKey(
+       [public] WERROR winreg_DeleteKey(
                [in,ref] policy_handle *handle,
                [in]     winreg_String key
        );
@@ -171,13 +171,13 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
 
        /******************/
        /* Function: 0x0b */
-       WERROR winreg_FlushKey(
+       [public] WERROR winreg_FlushKey(
                [in,ref] policy_handle *handle
        );
 
        /******************/
        /* Function: 0x0c */
-       WERROR winreg_GetKeySecurity(
+       [public] WERROR winreg_GetKeySecurity(
                [in,ref] policy_handle *handle,
                [in] security_secinfo sec_info,
                [in,out,ref] KeySecurityData *sd
@@ -193,7 +193,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
 
        /******************/
        /* Function: 0x0e */
-       WERROR winreg_NotifyChangeKeyValue(
+       [public] WERROR winreg_NotifyChangeKeyValue(
                [in,ref] policy_handle *handle,
                [in] uint8 watch_subtree,
                [in] uint32 notify_filter,
@@ -205,7 +205,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
 
        /******************/
        /* Function: 0x0f */
-       WERROR winreg_OpenKey(
+       [public] WERROR winreg_OpenKey(
                [in,ref] policy_handle *parent_handle,
                [in] winreg_String keyname,
                [in] uint32 unknown,
@@ -215,7 +215,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
 
        /******************/
        /* Function: 0x10 */
-       WERROR winreg_QueryInfoKey(
+       [public] WERROR winreg_QueryInfoKey(
                [in,ref] policy_handle *handle,
                [in,out,ref] winreg_String *class_in,
                [out,ref] uint32 *num_subkeys,
@@ -295,7 +295,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
 
        /******************/
        /* Function: 0x1a */
-       WERROR winreg_GetVersion(
+       [public] WERROR winreg_GetVersion(
                [in,ref]     policy_handle *handle,
                [out,ref]    uint32 *version
        );
index 8b47a08aac0db5e630aaa992dd0713882b36ac97..30f2dccf5f6504fd86b27511ac527f31ff7291c6 100644 (file)
@@ -279,6 +279,200 @@ static bool querymultiplevalues_out_check(struct torture_context *tctx,
        return true;
 }
 
+static const uint8_t flushkey_in_data[] = {
+  0x00, 0x00, 0x00, 0x00, 0xb2, 0x64, 0xbc, 0xb3, 0x7f, 0x90, 0x29, 0x4a,
+  0xb4, 0xb3, 0x91, 0xe7, 0xe4, 0x4a, 0x58, 0xe3
+};
+
+static bool flushkey_in_check(struct torture_context *tctx, 
+                                                          struct winreg_FlushKey *r)
+{
+       torture_assert_int_equal(tctx, r->in.handle->handle_type, 0, "handle type");
+       return true;
+}
+
+static const uint8_t flushkey_out_data[] = {
+  0x00, 0x00, 0x00, 0x00
+};
+
+static bool flushkey_out_check(struct torture_context *tctx, 
+                                                          struct winreg_FlushKey *r)
+{
+       torture_assert_werr_ok(tctx, r->out.result, "return code");
+       return true;
+}
+
+
+static const uint8_t openkey_in_data[] = {
+  0x00, 0x00, 0x00, 0x00, 0xb2, 0x64, 0xbc, 0xb3, 0x7f, 0x90, 0x29, 0x4a,
+  0xb4, 0xb3, 0x91, 0xe7, 0xe4, 0x4a, 0x58, 0xe3, 0x16, 0x00, 0x16, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x0b, 0x00, 0x00, 0x00, 0x73, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x74, 0x00,
+  0x74, 0x00, 0x79, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x74, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
+};
+
+static bool openkey_in_check(struct torture_context *tctx, struct winreg_OpenKey *r)
+{
+       torture_assert_int_equal(tctx, r->in.unknown, 0, "unknown");
+       torture_assert_int_equal(tctx, r->in.access_mask, 0x02000000, "access mask");
+       torture_assert_str_equal(tctx, r->in.keyname.name, "spottyfoot", "keyname");
+       /* FIXME: parent handle */
+       return true;
+}
+
+static const uint8_t openkey_out_data[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+};
+
+static bool openkey_out_check(struct torture_context *tctx, struct winreg_OpenKey *r)
+{
+       torture_assert(tctx, GUID_all_zero(&r->out.handle->uuid), "handle");
+       torture_assert_werr_equal(tctx, r->out.result, WERR_BADFILE, "return code");
+       return true;
+}
+
+static const uint8_t deletekey_in_data[] = {
+  0x00, 0x00, 0x00, 0x00, 0xb2, 0x64, 0xbc, 0xb3, 0x7f, 0x90, 0x29, 0x4a,
+  0xb4, 0xb3, 0x91, 0xe7, 0xe4, 0x4a, 0x58, 0xe3, 0x16, 0x00, 0x16, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x0b, 0x00, 0x00, 0x00, 0x73, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x74, 0x00,
+  0x74, 0x00, 0x79, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x74, 0x00,
+  0x00, 0x00
+};
+
+static bool deletekey_in_check(struct torture_context *tctx, struct winreg_DeleteKey *r)
+{
+       /* FIXME: Handle */
+       torture_assert_str_equal(tctx, r->in.key.name, "spottyfoot", "key name");
+       return true;
+}
+
+static const uint8_t deletekey_out_data[] = {
+  0x02, 0x00, 0x00, 0x00
+};
+
+static bool deletekey_out_check(struct torture_context *tctx, struct winreg_DeleteKey *r)
+{
+       torture_assert_werr_equal(tctx, r->out.result, WERR_BADFILE, "return code");
+       return true;
+}
+
+static const uint8_t getversion_in_data[] = {
+  0x00, 0x00, 0x00, 0x00, 0xb2, 0x64, 0xbc, 0xb3, 0x7f, 0x90, 0x29, 0x4a,
+  0xb4, 0xb3, 0x91, 0xe7, 0xe4, 0x4a, 0x58, 0xe3
+};
+
+static bool getversion_in_check(struct torture_context *tctx, struct winreg_GetVersion *r)
+{
+       /* FIXME: Handle */
+       return true;
+}
+
+static const uint8_t getversion_out_data[] = {
+  0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static bool getversion_out_check(struct torture_context *tctx, struct winreg_GetVersion *r)
+{
+       torture_assert_int_equal(tctx, *r->out.version, 5, "version");
+       torture_assert_werr_ok(tctx, r->out.result, "return code");
+       return true;
+}
+
+static const uint8_t queryinfokey_in_data[] = {
+  0x00, 0x00, 0x00, 0x00, 0xb2, 0x64, 0xbc, 0xb3, 0x7f, 0x90, 0x29, 0x4a,
+  0xb4, 0xb3, 0x91, 0xe7, 0xe4, 0x4a, 0x58, 0xe3, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00
+};
+
+static bool queryinfokey_in_check(struct torture_context *tctx, struct winreg_QueryInfoKey *r)
+{
+       /* FIXME: Handle */
+       torture_assert(tctx, r->in.class_in->name == NULL, "class in");
+       return true;
+}
+
+static const uint8_t queryinfokey_out_data[] = {
+  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00,
+  0x10, 0x48, 0x02, 0x3a, 0xcf, 0xfd, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x00
+};
+
+static bool queryinfokey_out_check(struct torture_context *tctx, struct winreg_QueryInfoKey *r)
+{
+       torture_assert(tctx, r->out.class_in != NULL, "class out");
+       torture_assert(tctx, r->out.class_in->name != NULL, "class out name");
+       torture_assert_str_equal(tctx, r->out.class_in->name, "", "class out name");
+       torture_assert_int_equal(tctx, *r->out.num_subkeys, 0, "num subkeys");
+       torture_assert_int_equal(tctx, *r->out.max_subkeylen, 0, "subkey length");
+       torture_assert_int_equal(tctx, *r->out.max_subkeysize, 140, "subkey size");
+       torture_assert_werr_ok(tctx, r->out.result, "return code");
+       return true;
+}
+
+static const uint8_t notifychangekeyvalue_in_data[] = {
+  0x00, 0x00, 0x00, 0x00, 0xb2, 0x64, 0xbc, 0xb3, 0x7f, 0x90, 0x29, 0x4a,
+  0xb4, 0xb3, 0x91, 0xe7, 0xe4, 0x4a, 0x58, 0xe3, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00
+};
+
+static bool notifychangekeyvalue_in_check(struct torture_context *tctx, struct winreg_NotifyChangeKeyValue *r)
+{
+       torture_assert_int_equal(tctx, r->in.watch_subtree, 1, "watch subtree");
+       torture_assert_int_equal(tctx, r->in.notify_filter, 0, "notify filter");
+       torture_assert_int_equal(tctx, r->in.unknown, 0, "unknown");
+       torture_assert(tctx, r->in.string1.name == NULL, "string1");
+       torture_assert(tctx, r->in.string2.name == NULL, "string2");
+       torture_assert_int_equal(tctx, r->in.unknown2, 0, "unknown2");
+       return true;
+}
+
+static const uint8_t notifychangekeyvalue_out_data[] = {
+  0x57, 0x00, 0x00, 0x00
+};
+
+static bool notifychangekeyvalue_out_check(struct torture_context *tctx, struct winreg_NotifyChangeKeyValue *r)
+{
+       torture_assert_werr_equal(tctx, r->out.result, WERR_INVALID_PARAM, "notify change key value");
+       return true;
+}
+
+static const uint8_t getkeysecurity_in_data[] = {
+  0x00, 0x00, 0x00, 0x00, 0xbd, 0xaa, 0xf6, 0x59, 0xc1, 0x82, 0x1f, 0x4d,
+  0x84, 0xa9, 0xdd, 0xae, 0x60, 0x77, 0x1e, 0x45, 0x00, 0x00, 0x00, 0x02,
+  0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static bool getkeysecurity_in_check(struct torture_context *tctx, struct winreg_GetKeySecurity *r)
+{
+       /* FIXME: Handle */
+       torture_assert_int_equal(tctx, r->in.sec_info, 2, "sec info");
+       torture_assert_int_equal(tctx, r->in.sd->size, 65536, "sd size");
+       torture_assert_int_equal(tctx, r->in.sd->len, 0, "sd len");
+       torture_assert(tctx, r->in.sd->data == NULL, "sd data");
+       return true;
+}
+
+static const uint8_t getkeysecurity_out_data[] = {
+  0x08, 0x91, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+  0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static bool getkeysecurity_out_check(struct torture_context *tctx, struct winreg_GetKeySecurity *r)
+{
+       torture_assert_int_equal(tctx, r->in.sd->size, 20, "sd size");
+       torture_assert_int_equal(tctx, r->in.sd->len, 20, "sd len");
+       torture_assert_werr_ok(tctx, r->out.result, "return code");
+       return true;
+}
+
 struct torture_suite *ndr_winreg_suite(TALLOC_CTX *ctx)
 {
        struct torture_suite *suite = torture_suite_create(ctx, "winreg");
@@ -301,6 +495,27 @@ struct torture_suite *ndr_winreg_suite(TALLOC_CTX *ctx)
        /*torture_suite_add_ndr_pull_fn_test(suite, winreg_QueryMultipleValues, querymultiplevalues_in_data, NDR_IN, querymultiplevalues_in_check );
        torture_suite_add_ndr_pull_fn_test(suite, winreg_QueryMultipleValues, querymultiplevalues_out_data, NDR_OUT, querymultiplevalues_out_check );*/
 
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_FlushKey, flushkey_in_data, NDR_IN, flushkey_in_check );
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_FlushKey, flushkey_out_data, NDR_OUT, flushkey_out_check );
+
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_OpenKey, openkey_in_data, NDR_IN, openkey_in_check );
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_OpenKey, openkey_out_data, NDR_OUT, openkey_out_check );
+
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_DeleteKey, deletekey_in_data, NDR_IN, deletekey_in_check );
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_DeleteKey, deletekey_out_data, NDR_OUT, deletekey_out_check );
+
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_GetVersion, getversion_in_data, NDR_IN, getversion_in_check );
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_GetVersion, getversion_out_data, NDR_OUT, getversion_out_check );
+
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_QueryInfoKey, queryinfokey_in_data, NDR_IN, queryinfokey_in_check );
+       /*torture_suite_add_ndr_pull_fn_test(suite, winreg_QueryInfoKey, queryinfokey_out_data, NDR_OUT, queryinfokey_out_check );*/
+
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_NotifyChangeKeyValue, notifychangekeyvalue_in_data, NDR_IN, notifychangekeyvalue_in_check );
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_NotifyChangeKeyValue, notifychangekeyvalue_out_data, NDR_OUT, notifychangekeyvalue_out_check );
+
+       /*torture_suite_add_ndr_pull_fn_test(suite, winreg_GetKeySecurity, getkeysecurity_in_data, NDR_IN, getkeysecurity_in_check );
+       torture_suite_add_ndr_pull_fn_test(suite, winreg_GetKeySecurity, getkeysecurity_out_data, NDR_OUT, getkeysecurity_out_check );*/
+
        return suite;
 }