Add copyright comment headers to appropriate files
[gssweb.git] / json_gssapi / test / GSSCreateSecContextTest.cpp
index 8926e7b..7edc79c 100644 (file)
@@ -1,8 +1,35 @@
 /*
- * 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 );
@@ -85,11 +113,11 @@ void
 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);
@@ -151,7 +179,7 @@ void GSSCreateSecContextTest::testConstructorWithJSONObject()
   
   GSSInitSecContext cmd = GSSInitSecContext(
     &json, 
-    (void *)&mock_init_sec
+    &mock_init_sec
   );
 
   const char *from_cmd = cmd.getTargetDisplayName();
@@ -163,25 +191,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()
   );
   
@@ -192,7 +220,7 @@ GSSCreateSecContextTest::testEmptyCall()
 {
   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;
@@ -308,7 +336,7 @@ GSSCreateSecContextTest::testEmptyCall()
 void GSSCreateSecContextTest::testJSONMarshal()
 {
   /* Variables */
-  GSSInitSecContext cmd ((void *)&mock_init_sec);
+  GSSInitSecContext cmd (&mock_init_sec);
   JSONObject *result;
   GSSContextCache *cache = GSSContextCache::instance();
   GSSContext context;
@@ -356,12 +384,22 @@ void GSSCreateSecContextTest::testJSONMarshal()
     ( 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",