/*
- * Copyright (c) 2014 <copyright holder> <email>
- *
- * For license details, see the LICENSE file in the root of this project.
- *
+ * Copyright (c) 2014, 2015 JANET(UK)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of JANET(UK) nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
*/
#include <iostream>
#include <string.h>
#include <exception>
-#include "util_json.h"
+#include "utils/util_json.h"
#include <cache/GSSContextCache.h>
#include <cache/GSSNameCache.h>
#include <datamodel/GSSContext.h>
+#include <utils/util_base64.h>
// Registers the fixture into the 'registry'
CPPUNIT_TEST_SUITE_REGISTRATION( GSSCreateSecContextTest );
GSSCreateSecContextTest::testConstructor()
{
GSSInitSecContext cmd = GSSInitSecContext();
- void *cmdFn;
- void *GSSFn;
+ 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);
GSSInitSecContext cmd = GSSInitSecContext(
&json,
- (void *)&mock_init_sec
+ &mock_init_sec
);
const char *from_cmd = cmd.getTargetDisplayName();
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()
);
{
gss_ctx_id_t expectedResult, expectedArgument;
- GSSInitSecContext 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;
void GSSCreateSecContextTest::testJSONMarshal()
{
/* Variables */
- GSSInitSecContext cmd ((void *)&mock_init_sec);
+ GSSInitSecContext cmd (&mock_init_sec);
JSONObject *result;
GSSContextCache *cache = GSSContextCache::instance();
GSSContext context;
( strcmp("{ 1 3 6 1 5 5 13 4 }",
(*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)["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",