X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=json_gssapi%2Ftest%2FGSSCreateSecContextTest.cpp;h=cf3be568340178ef083b454827cde0cba4722e82;hb=ed6b9911b8d439a1587f2fe43c192c75614b471c;hp=866926772699f5e8832213ae911da400f3727ed7;hpb=9af66ea83235967dff058e0b0a395581ef84703d;p=gssweb.git diff --git a/json_gssapi/test/GSSCreateSecContextTest.cpp b/json_gssapi/test/GSSCreateSecContextTest.cpp index 8669267..cf3be56 100644 --- a/json_gssapi/test/GSSCreateSecContextTest.cpp +++ b/json_gssapi/test/GSSCreateSecContextTest.cpp @@ -7,20 +7,21 @@ #include "GSSCreateSecContextTest.h" -#include "GSSCreateSecContextCommand.h" +#include "GSSInitSecContext.h" #include "command_mocks/InitSecContextMock.h" #include #include #include -#include "util_json.h" +#include "utils/util_json.h" #include #include #include +#include // Registers the fixture into the 'registry' CPPUNIT_TEST_SUITE_REGISTRATION( GSSCreateSecContextTest ); - +using std::cout; static OM_uint32 KRB5_CALLCONV mock_init_sec( @@ -84,12 +85,12 @@ GSSCreateSecContextTest::tearDown() void GSSCreateSecContextTest::testConstructor() { - GSSCreateSecContextCommand cmd = GSSCreateSecContextCommand(); - void *cmdFn; - void *GSSFn; + GSSInitSecContext cmd = GSSInitSecContext(); + init_sec_context_type cmdFn; + init_sec_context_type GSSFn; cmdFn = cmd.getGSSFunction(); - GSSFn = (void *)&gss_init_sec_context; + GSSFn = &gss_init_sec_context; CPPUNIT_ASSERT_MESSAGE( "The default constructor for GSSCreateSecContextCommand should assign the function gss_init_sec_context", cmdFn == GSSFn); @@ -139,20 +140,19 @@ void GSSCreateSecContextTest::testConstructorWithJSONObject() source.setValue(src); std::string key = GSSNameCache::instance()->store(source); - std::string input = "{\"method\": \"gss_create_sec_context\", \ - \"arguments\": {\"req_flags\": \"1\", \ + std::string input = "{\"req_flags\": \"1\", \ \"time_req\": \"2\", \ \"mech_type\": \"{ 1 2 840 113554 1 2 1 4 }\", \ \"target_name\": \""; - input = input + key + "\"}}"; + input = input + key + "\"}"; json_error_t jsonErr; const char *in = input.c_str(); JSONObject json = JSONObject::load(in, 0, &jsonErr); - GSSCreateSecContextCommand cmd = GSSCreateSecContextCommand( + GSSInitSecContext cmd = GSSInitSecContext( &json, - (void *)&mock_init_sec + &mock_init_sec ); const char *from_cmd = cmd.getTargetDisplayName(); @@ -164,25 +164,25 @@ void GSSCreateSecContextTest::testConstructorWithJSONObject() CPPUNIT_ASSERT_EQUAL_MESSAGE( "The context_handle values differ.", - json["arguments"]["context_handle"].integer(), + json["context_handle"].integer(), (json_int_t)cmd.getContextHandle() ); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The mech_type values differ.", - std::string(json["arguments"]["mech_type"].string()), + std::string(json["mech_type"].string()), cmd.getMechType().toString() ); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The req_flags differ.", - (int)json["arguments"]["req_flags"].integer(), + (int)json["req_flags"].integer(), (int)cmd.getReqFlags() ); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The req_flags differ.", - (int)json["arguments"]["time_req"].integer(), + (int)json["time_req"].integer(), (int)cmd.getTimeReq() ); @@ -193,7 +193,7 @@ GSSCreateSecContextTest::testEmptyCall() { gss_ctx_id_t expectedResult, expectedArgument; - GSSCreateSecContextCommand cmd ((void *)&mock_init_sec); + GSSInitSecContext cmd (&mock_init_sec); /* Set expectations on what the GSS function will be called with */ cmd.time_req = rand() % 1024; @@ -309,7 +309,7 @@ GSSCreateSecContextTest::testEmptyCall() void GSSCreateSecContextTest::testJSONMarshal() { /* Variables */ - GSSCreateSecContextCommand cmd ((void *)&mock_init_sec); + GSSInitSecContext cmd (&mock_init_sec); JSONObject *result; GSSContextCache *cache = GSSContextCache::instance(); GSSContext context; @@ -340,50 +340,53 @@ void GSSCreateSecContextTest::testJSONMarshal() /* std::cout << "create sec context json: " << result->dump() << "\n";*/ - CPPUNIT_ASSERT_MESSAGE( - "The command name is incorrect", - ( strcmp("gss_init_sec_context", - (*result)["command"].string() ) == 0 ) - ); - - CPPUNIT_ASSERT_EQUAL_MESSAGE( "The return value was reported incorrectly", (int)InitSecContextMock::retVal, - (int)( (*result)["return_values"]["major_status"].integer() ) + (int)( (*result)["major_status"].integer() ) ); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The minor_status value was reported incorrectly", (int)InitSecContextMock::minor_status, - (int)( (*result)["return_values"]["minor_status"].integer() ) + (int)( (*result)["minor_status"].integer() ) ); CPPUNIT_ASSERT_MESSAGE( "The actual_mech_type value was reported incorrectly", ( strcmp("{ 1 3 6 1 5 5 13 4 }", - (*result)["return_values"]["actual_mech_type"].string() ) == 0 ) + (*result)["actual_mech_type"].string() ) == 0 ) ); + + + std::string str = (*result)["output_token"].string(); + size_t len; + void *decoded = base64Decode(str.c_str(), &len); + CPPUNIT_ASSERT_MESSAGE( + "The decoded token size is incorrect", + ( len == InitSecContextMock::output_token.length ) + ); CPPUNIT_ASSERT_MESSAGE( "The output_token value was reported incorrectly", - ( strcmp((const char *)(InitSecContextMock::output_token.value), - (*result)["return_values"]["output_token"].string() ) == 0 ) + ( memcmp(InitSecContextMock::output_token.value, + decoded, len ) == 0 ) ); + base64Free(decoded); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The minor_status value was reported incorrectly", (int)InitSecContextMock::ret_flags, - (int)( (*result)["return_values"]["ret_flags"].integer() ) + (int)( (*result)["ret_flags"].integer() ) ); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The minor_status value was reported incorrectly", (int)InitSecContextMock::time_rec, - (int)( (*result)["return_values"]["time_rec"].integer() ) + (int)( (*result)["time_rec"].integer() ) ); - context = cache->retrieve( (*result)["return_values"]["context_handle"].string() ); + context = cache->retrieve( (*result)["context_handle"].string() ); CPPUNIT_ASSERT_EQUAL_MESSAGE( "The returned context was reported incorrectly",