Merge branch 'master' of ssh://git.samba.org/data/git/abartlet/samba into extended...
[abartlet/samba.git/.git] / source4 / torture / ldb / ldb.c
index 39f37e375de39da40fa1d44651c7b8543fbd137b..c2977bcb70217cef0e2d7d61ab4bacf5009264e4 100644 (file)
@@ -130,8 +130,8 @@ static bool torture_ldb_attrs(struct torture_context *torture)
        
        torture_assert_int_equal(torture, 
                                 attr->syntax->ldif_read_fn(ldb, mem_ctx, 
-                                                           &guid_blob, &binary_guid_blob), -1,
-                                "Should have failed to parse binary SID");
+                                                           &guid_blob, &binary_guid_blob), 0,
+                                "Failed to parse binary GUID");
        
        torture_assert_data_blob_equal(torture, binary_guid_blob, guid_blob, 
                                       "Read GUID into blob form failed");
@@ -288,9 +288,7 @@ static bool torture_ldb_dn_extended(struct torture_context *torture)
 {
        TALLOC_CTX *mem_ctx = talloc_new(torture);
        struct ldb_context *ldb;
-       struct ldb_dn *dn;
-       struct ldb_val string_sid_blob = data_blob_string_const(sid);
-       struct ldb_val string_guid_blob = data_blob_string_const(guid);
+       struct ldb_dn *dn, *dn2;
 
        DATA_BLOB sid_blob = strhex_to_data_blob(mem_ctx, hex_sid);
        DATA_BLOB guid_blob = strhex_to_data_blob(mem_ctx, hex_guid);
@@ -334,6 +332,12 @@ static bool torture_ldb_dn_extended(struct torture_context *torture)
                                           guid, sid, dn_str), 
                       "Failed to create an 'extended' DN");
 
+       torture_assert(torture, 
+                      dn2 = ldb_dn_copy(mem_ctx, dn), 
+                      "Failed to copy the 'extended' DN");
+       talloc_free(dn);
+       dn = dn2;
+
        torture_assert(torture, 
                       ldb_dn_validate(dn),
                       "Failed to validate 'extended' DN");
@@ -356,12 +360,21 @@ static bool torture_ldb_dn_extended(struct torture_context *torture)
        torture_assert_str_equal(torture, ldb_dn_get_linearized(dn), dn_str, 
                                 "linearized DN incorrect");
 
-       torture_assert_str_equal(torture, ldb_dn_extended_linearized(mem_ctx, dn, 1),
+       torture_assert_str_equal(torture, ldb_dn_get_casefold(dn), strupper_talloc(mem_ctx, dn_str), 
+                                "casefolded DN incorrect");
+
+       torture_assert_str_equal(torture, ldb_dn_get_component_name(dn, 0), "cn", 
+                                "componet zero incorrect");
+
+       torture_assert_data_blob_equal(torture, *ldb_dn_get_component_val(dn, 0), data_blob_string_const("admin"), 
+                                "componet zero incorrect");
+
+       torture_assert_str_equal(torture, ldb_dn_get_extended_linearized(mem_ctx, dn, 1),
                                 talloc_asprintf(mem_ctx, "<GUID=%s>;<SID=%s>;%s", 
                                                 guid, sid, dn_str),
                                 "Clear extended linearized DN incorrect");
 
-       torture_assert_str_equal(torture, ldb_dn_extended_linearized(mem_ctx, dn, 0),
+       torture_assert_str_equal(torture, ldb_dn_get_extended_linearized(mem_ctx, dn, 0),
                                 talloc_asprintf(mem_ctx, "<GUID=%s>;<SID=%s>;%s", 
                                                 hex_guid, hex_sid, dn_str),
                                 "HEX extended linearized DN incorrect");
@@ -379,12 +392,13 @@ static bool torture_ldb_dn_extended(struct torture_context *torture)
                       "Should not find an GUID on DN");
 
 
-       torture_assert_int_equal(torture, ldb_dn_set_extended_component(dn, "SID", &sid_blob), 0, 
-                      "Failed to set a SID on DN");
-
+       /* TODO:  test setting these in the other order, and ensure it still comes out 'GUID first' */
        torture_assert_int_equal(torture, ldb_dn_set_extended_component(dn, "GUID", &guid_blob), 0, 
                       "Failed to set a GUID on DN");
        
+       torture_assert_int_equal(torture, ldb_dn_set_extended_component(dn, "SID", &sid_blob), 0, 
+                      "Failed to set a SID on DN");
+
        torture_assert_data_blob_equal(torture, *ldb_dn_get_extended_component(dn, "SID"), sid_blob, 
                                       "Extended DN SID incorect");
 
@@ -394,6 +408,16 @@ static bool torture_ldb_dn_extended(struct torture_context *torture)
        torture_assert_str_equal(torture, ldb_dn_get_linearized(dn), "cn=users,dc=samba,dc=org", 
                                 "linearized DN incorrect");
 
+       torture_assert_str_equal(torture, ldb_dn_get_extended_linearized(mem_ctx, dn, 1),
+                                talloc_asprintf(mem_ctx, "<GUID=%s>;<SID=%s>;%s", 
+                                                guid, sid, "cn=users,dc=samba,dc=org"),
+                                "Clear extended linearized DN incorrect");
+
+       torture_assert_str_equal(torture, ldb_dn_get_extended_linearized(mem_ctx, dn, 0),
+                                talloc_asprintf(mem_ctx, "<GUID=%s>;<SID=%s>;%s", 
+                                                hex_guid, hex_sid, "cn=users,dc=samba,dc=org"),
+                                "HEX extended linearized DN incorrect");
+
        /* Now check a 'just GUID' DN (clear format) */
        torture_assert(torture, 
                       dn = ldb_dn_new_fmt(mem_ctx, ldb, "<GUID=%s>",
@@ -410,6 +434,9 @@ static bool torture_ldb_dn_extended(struct torture_context *torture)
        torture_assert(torture, ldb_dn_get_extended_component(dn, "SID") == NULL, 
                       "Should not find an SID on this DN");
 
+       torture_assert_int_equal(torture, ldb_dn_get_comp_num(dn), 0, 
+                      "Should not find an 'normal' componet on this DN");
+
        torture_assert(torture, ldb_dn_get_extended_component(dn, "GUID") != NULL, 
                       "Should find an GUID on this DN");
        
@@ -419,12 +446,12 @@ static bool torture_ldb_dn_extended(struct torture_context *torture)
        torture_assert_str_equal(torture, ldb_dn_get_linearized(dn), "", 
                                 "linearized DN incorrect");
 
-       torture_assert_str_equal(torture, ldb_dn_extended_linearized(mem_ctx, dn, 1),
+       torture_assert_str_equal(torture, ldb_dn_get_extended_linearized(mem_ctx, dn, 1),
                                 talloc_asprintf(mem_ctx, "<GUID=%s>", 
                                                 guid),
                                 "Clear extended linearized DN incorrect");
 
-       torture_assert_str_equal(torture, ldb_dn_extended_linearized(mem_ctx, dn, 0),
+       torture_assert_str_equal(torture, ldb_dn_get_extended_linearized(mem_ctx, dn, 0),
                                 talloc_asprintf(mem_ctx, "<GUID=%s>", 
                                                 hex_guid),
                                 "HEX extended linearized DN incorrect");
@@ -479,12 +506,12 @@ static bool torture_ldb_dn_extended(struct torture_context *torture)
        torture_assert_str_equal(torture, ldb_dn_get_linearized(dn), "", 
                                 "linearized DN incorrect");
 
-       torture_assert_str_equal(torture, ldb_dn_extended_linearized(mem_ctx, dn, 1),
+       torture_assert_str_equal(torture, ldb_dn_get_extended_linearized(mem_ctx, dn, 1),
                                 talloc_asprintf(mem_ctx, "<SID=%s>", 
                                                 sid),
                                 "Clear extended linearized DN incorrect");
 
-       torture_assert_str_equal(torture, ldb_dn_extended_linearized(mem_ctx, dn, 0),
+       torture_assert_str_equal(torture, ldb_dn_get_extended_linearized(mem_ctx, dn, 0),
                                 talloc_asprintf(mem_ctx, "<SID=%s>", 
                                                 hex_sid),
                                 "HEX extended linearized DN incorrect");
@@ -557,7 +584,7 @@ static bool torture_ldb_dn(struct torture_context *torture)
        torture_assert_str_equal(torture, ldb_dn_get_linearized(dn), "dc=samba,dc=org", 
                                 "linearized DN incorrect");
 
-       torture_assert_str_equal(torture, ldb_dn_extended_linearized(mem_ctx, dn, 0), "dc=samba,dc=org", 
+       torture_assert_str_equal(torture, ldb_dn_get_extended_linearized(mem_ctx, dn, 0), "dc=samba,dc=org", 
                                 "extended linearized DN incorrect");
 
        /* Check child DN comparisons */