Update tests to deal with GSSCommand objects now taking only the 'argument' part...
[gssweb.git] / json_gssapi / test / GSSImportNameTest.cpp
index 2a57987..a7c6cad 100644 (file)
@@ -20,7 +20,8 @@
 
 #include "GSSImportNameTest.h"
 #include "GSSImportName.h"
-#include "MockImportName.h"
+#include <cache/GSSNameCache.h>
+#include "command_mocks/MockImportName.h"
 
 CPPUNIT_TEST_SUITE_REGISTRATION( GSSImportNameTest );
 
@@ -49,7 +50,7 @@ mock_import_name(
   
   // copy our output to the appropriate parameters
   *minor_status = MockImportName::minor_status;
-  *output_name = MockImportName::output_name.toGSS();
+  *output_name = MockImportName::output_name.toGss();
   
   
   /* Cleanup */
@@ -133,9 +134,8 @@ void GSSImportNameTest::testEmptyCall()
 void GSSImportNameTest::testConstructorWithJSONObject()
 {
   /* Variables */
-  const char* input = "{\"method\": \"gss_import_name\", \
-    \"arguments\": {\"input_name\": \"http@localhost\", \
-    \"input_name_type\": \"{ 1 2 840 113554 1 2 1 4 }\"}}";
+  const char* input = "{\"input_name\": \"http@localhost\", \
+    \"input_name_type\": \"{ 1 2 840 113554 1 2 1 4 }\"}";
   json_error_t jsonErr;
   JSONObject json = JSONObject::load(input, 0, &jsonErr);
   
@@ -160,49 +160,61 @@ void GSSImportNameTest::testConstructorWithJSONObject()
   /* Cleanup */
   /* Return */
 }
+
+
+/* Expected output sample:
+ * 
+ * {
+ *   "command": "gss_import_name",
+ *   "return_values":
+ *   {
+ *     "major_status": 0,
+ *     "minor_status": 0,
+ *     "gss_name": "base64_encoded_string"
+ *   }
+ * }
+ */
 void GSSImportNameTest::testJSONMarshal()
 {
   /* Variables */
   std::string name("dns@google.com");
   std::string type("{ 1 2 840 113554 1 2 1 4 }");
+  std::string key;
+  GSSName gssName;
   JSONObject *result;
-  GSSImportName cmd = GSSImportName(&mock_import_name);
+  GSSImportName cmd;
   
   /* Error checking */
   /* Setup */
   cmd.setInputName(name);
   cmd.setInputNameType(type);
-  MockImportName::minor_status = 0;
-  MockImportName::retVal = 0;
-  MockImportName::output_name.setValue(GSS_C_NO_NAME);
   
   /* Main */
   cmd.execute();
   result = cmd.toJSON();
   
-  CPPUNIT_ASSERT_EQUAL_MESSAGE(
-    "The command name is incorrect",
-    std::string("gss_import_name"),
-    std::string( (*result)["command"].string() )
-  );
+//   std::cout << "JSON Output:" << std::endl << result->dump(4) << std::endl;
   
   
   CPPUNIT_ASSERT_EQUAL_MESSAGE(
     "The return value was reported incorrectly",
     (int)MockImportName::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)MockImportName::minor_status,
-    (int)( (*result)["return_values"]["minor_status"].integer() )
+    (int)( (*result)["minor_status"].integer() )
   );
   
+  key = (*result)["gss_name"].string();
+  gssName = GSSNameCache::instance()->retrieve(key);
+  
   CPPUNIT_ASSERT_EQUAL_MESSAGE(
     "The gss_name was reported incorrectly",
-    std::string("constant for now"),
-    std::string( (*result)["return_values"]["gss_name"].string() )
+    name,
+    gssName.toString()
   );