s4/asn1: Added test for ber_write_OID_String()
authorKamen Mazdrashki <kamen.mazdrashki@postpath.com>
Fri, 25 Sep 2009 20:46:07 +0000 (23:46 +0300)
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Thu, 1 Oct 2009 21:12:59 +0000 (23:12 +0200)
lib/util/tests/asn1_tests.c

index 6ad321b815b258a2436fef9fa9c43d53a589475b..a8207a5e4fc86a2385b39bab621ad4275c377614 100644 (file)
 #include "torture/torture.h"
 #include "../asn1.h"
 
+struct oid_data {
+       const char *oid;        /* String OID */
+       const char *bin_oid;    /* Binary OID represented as string */
+};
+
+/* Data for successfull OIDs conversions */
+struct oid_data oid_data_ok[] = {
+       {
+               .oid = "2.5.4.0",
+               .bin_oid = "550400"
+       },
+       {
+               .oid = "2.5.4.1",
+               .bin_oid = "550401"
+       },
+       {
+               .oid = "2.5.4.130",
+               .bin_oid = "55048102"
+       },
+       {
+               .oid = "2.5.130.4",
+               .bin_oid = "55810204"
+       },
+       {
+               .oid = "2.5.4.16387",
+               .bin_oid = "5504818003"
+       },
+       {
+               .oid = "2.5.16387.4",
+               .bin_oid = "5581800304"
+       },
+       {
+               .oid = "2.5.2097155.4",
+               .bin_oid = "558180800304"
+       },
+       {
+               .oid = "2.5.4.130.16387.2097155.268435459",
+               .bin_oid = "55048102818003818080038180808003"
+       },
+};
+
+
+
+/* Testing ber_write_OID_String() function */
+static bool test_ber_write_OID_String(struct torture_context *tctx)
+{
+       int i;
+       char *hex_str;
+       DATA_BLOB blob;
+       TALLOC_CTX *mem_ctx;
+       struct oid_data *data = oid_data_ok;
+
+       mem_ctx = talloc_new(NULL);
+
+       for (i = 0; i < ARRAY_SIZE(oid_data_ok); i++) {
+               torture_assert(tctx, ber_write_OID_String(&blob, data[i].oid),
+                               "ber_write_OID_String failed");
+
+               hex_str = hex_encode_talloc(mem_ctx, blob.data, blob.length);
+               torture_assert(tctx, hex_str, "No memory!");
+
+               torture_assert(tctx, strequal(data[i].bin_oid, hex_str),
+                               talloc_asprintf(mem_ctx,
+                                               "Failed: oid=%s, bin_oid:%s",
+                                               data[i].oid, data[i].bin_oid));
+       }
+
+       talloc_free(mem_ctx);
+
+       return true;
+}
+
 
 
 /* LOCAL-ASN1 test suite creation */
@@ -30,6 +102,8 @@ struct torture_suite *torture_local_util_asn1(TALLOC_CTX *mem_ctx)
 {
        struct torture_suite *suite = torture_suite_create(mem_ctx, "ASN1");
 
+       torture_suite_add_simple_test(suite, "ber_write_OID_String",
+                                     test_ber_write_OID_String);
 
        return suite;
 }