1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-03 01:18:10 +03:00

s4:torture: Add new LSA test_query_forest_trust_info()

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>

Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Thu Jul 18 12:36:25 UTC 2024 on atb-devel-224
This commit is contained in:
Andreas Schneider 2024-03-19 10:24:44 +01:00 committed by Andreas Schneider
parent 14a5d9e626
commit f7229d61ed

View File

@ -30,6 +30,7 @@
#include "libcli/auth/libcli_auth.h"
#include "torture/rpc/torture_rpc.h"
#include "param/param.h"
#include "source3/rpc_client/init_lsa.h"
#include <gnutls/gnutls.h>
#include <gnutls/crypto.h>
@ -164,6 +165,61 @@ static bool test_set_forest_trust_info(struct dcerpc_pipe *p,
return true;
}
static bool test_query_forest_trust_info(struct dcerpc_pipe *p,
struct torture_context *tctx,
struct policy_handle *handle,
const char *trust_name_dns)
{
struct lsa_String trusted_domain_name = {
.size = 0,
};
struct lsa_ForestTrustInformation *fti = NULL;
struct lsa_lsaRQueryForestTrustInformation r = {
.in = {
.handle = handle,
.highest_record_type = 2,
.trusted_domain_name = &trusted_domain_name,
},
.out = {
.forest_trust_info = &fti,
}
};
struct lsa_ForestTrustRecord *rec = NULL;
init_lsa_String(&trusted_domain_name, trust_name_dns);
torture_comment(tctx, "\nTesting lsaRQueryForestTrustInformation\n");
torture_assert_ntstatus_ok(tctx,
dcerpc_lsa_lsaRQueryForestTrustInformation_r(
p->binding_handle, tctx, &r),
"lsaRQueryForestTrustInformation failed");
torture_assert_ntstatus_ok(tctx,
r.out.result,
"lsaRQueryForestTrustInformation failed");
torture_assert_not_null(tctx,
r.out.forest_trust_info,
"forest_trust_info is not set");
torture_assert_int_equal(tctx,
fti->count,
2,
"Unexpected forest_trust_info count");
rec = fti->entries[0];
torture_assert_int_equal(tctx,
rec->type,
LSA_FOREST_TRUST_TOP_LEVEL_NAME,
"Unexpedted type");
torture_assert_str_equal(tctx,
rec->forest_trust_data.top_level_name.string,
trust_name_dns,
"Unexpected top level name");
return true;
}
static bool test_create_trust_and_set_info(struct dcerpc_pipe *p,
struct torture_context *tctx,
const char *trust_name,
@ -249,6 +305,11 @@ static bool test_create_trust_and_set_info(struct dcerpc_pipe *p,
return false;
}
ok = test_query_forest_trust_info(p, tctx, handle, trust_name_dns);
if (!ok) {
return false;
}
cr.in.handle = handle;
cr.out.handle = &closed_handle;
torture_assert_ntstatus_ok(tctx,