2 * Copyright (c) 2014 Painless Security LLC
4 * For license details, see the LICENSE file in the root of this project.
6 * GSSImportNameTest.h - Test the GSSImportName object.
9 * Testing basic object creation
10 * testConstructorWithJSONObject -
11 * Test object creation with a set of arguments
13 * Basic test of the system, with an empty call to
14 * a mocked out gss_import_name function, to test
15 * whether the object passes and records arguments
18 * test the JSON serialization of the object
21 #include "GSSImportNameTest.h"
22 #include "GSSImportName.h"
23 #include "MockImportName.h"
25 CPPUNIT_TEST_SUITE_REGISTRATION( GSSImportNameTest );
29 * a mock of the gss_import_name call
31 * Basically, just copy the arguments over to/from the
32 * MockImportName global object
34 static OM_uint32 KRB5_CALLCONV
36 OM_uint32 *minor_status,
37 gss_buffer_t input_name_buffer,
38 gss_OID input_name_type,
39 gss_name_t *output_name)
45 // Copy our input from the appropriate parameters to MockImportName
46 MockImportName::input_name_buffer = input_name_buffer;
47 MockImportName::input_name_type = input_name_type;
49 // copy our output to the appropriate parameters
50 *minor_status = MockImportName::minor_status;
51 *output_name = MockImportName::output_name;
56 return MockImportName::retVal;
59 void GSSImportNameTest::setUp()
61 CppUnit::TestFixture::setUp();
62 MockImportName::reset();
65 void GSSImportNameTest::tearDown()
67 CppUnit::TestFixture::tearDown();
70 void GSSImportNameTest::testConstructor()
73 GSSImportName cmd = GSSImportName();
78 CPPUNIT_ASSERT_EQUAL_MESSAGE(
79 "The GSSImportName object has the wrong GSS function",
80 (void *)&gss_import_name,
81 (void *)cmd.getGSSFunction()
87 void GSSImportNameTest::testEmptyCall()
90 GSSImportName cmd = GSSImportName();
99 void GSSImportNameTest::testConstructorWithJSONObject()
102 const char* input = "{\"method\": \"gss_import_name\", \
103 \"arguments\": {\"input_name\": \"http@localhost\", \
104 \"input_name_type\": \"{ 1 2 840 113554 1 2 1 4 }\"}}";
105 json_error_t jsonErr;
106 JSONObject json = JSONObject::load(input, 0, &jsonErr);
108 GSSImportName cmd = GSSImportName(&json, &mock_import_name);
114 CPPUNIT_ASSERT_EQUAL_MESSAGE(
115 "GSSImportName did not parse the input_name argument correctly",
116 std::string("http@localhost"),
117 cmd.getInputName().toString()
120 CPPUNIT_ASSERT_EQUAL_MESSAGE(
121 "GSSImportName did not parse the input_name_type argument correctly",
122 std::string("{ 1 2 840 113554 1 2 1 4 }"),
123 cmd.getInputNameType().toString()
129 void GSSImportNameTest::testJSONMarshal()
132 GSSImportName cmd = GSSImportName();