10e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org// Copyright 2004 Google, Inc. All Rights Reserved.
20e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org// Author: Joe Beda
30e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
40e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org#include <iostream>
5cf81adffe15fa8ea0f333432e41f6d504148f18abuildbot@webrtc.org#include <sstream>
6cf81adffe15fa8ea0f333432e41f6d504148f18abuildbot@webrtc.org#include <string>
713b2d035e2e7f2f18e3a4d3377bc1a09f43a4ff9buildbot@webrtc.org#include "webrtc/libjingle/xmllite/xmlelement.h"
80e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org#include "talk/xmpp/util_unittest.h"
9cf81adffe15fa8ea0f333432e41f6d504148f18abuildbot@webrtc.org#include "talk/xmpp/xmppengine.h"
10cf81adffe15fa8ea0f333432e41f6d504148f18abuildbot@webrtc.org#include "webrtc/base/gunit.h"
110e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
120e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgnamespace buzz {
130e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
140e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgvoid XmppTestHandler::WriteOutput(const char * bytes, size_t len) {
150e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  output_ << std::string(bytes, len);
160e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}
170e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
180e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgvoid XmppTestHandler::StartTls(const std::string & cname) {
190e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  output_ << "[START-TLS " << cname << "]";
200e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}
210e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
220e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgvoid XmppTestHandler::CloseConnection() {
230e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  output_ << "[CLOSED]";
240e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}
250e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
260e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgvoid XmppTestHandler::OnStateChange(int state) {
270e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  switch (static_cast<XmppEngine::State>(state)) {
280e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  case XmppEngine::STATE_START:
290e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    session_ << "[START]";
300e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    break;
310e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  case XmppEngine::STATE_OPENING:
320e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    session_ << "[OPENING]";
330e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    break;
340e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  case XmppEngine::STATE_OPEN:
350e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    session_ << "[OPEN]";
360e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    break;
370e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  case XmppEngine::STATE_CLOSED:
380e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    session_ << "[CLOSED]";
390e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    switch (engine_->GetError(NULL)) {
400e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    case XmppEngine::ERROR_NONE:
410e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      // do nothing
420e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      break;
430e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    case XmppEngine::ERROR_XML:
440e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      session_ << "[ERROR-XML]";
450e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      break;
460e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    case XmppEngine::ERROR_STREAM:
470e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      session_ << "[ERROR-STREAM]";
480e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      break;
490e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    case XmppEngine::ERROR_VERSION:
500e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      session_ << "[ERROR-VERSION]";
510e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      break;
520e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    case XmppEngine::ERROR_UNAUTHORIZED:
530e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      session_ << "[ERROR-UNAUTHORIZED]";
540e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      break;
550e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    case XmppEngine::ERROR_TLS:
560e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      session_ << "[ERROR-TLS]";
570e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      break;
580e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    case XmppEngine::ERROR_AUTH:
590e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      session_ << "[ERROR-AUTH]";
600e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      break;
610e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    case XmppEngine::ERROR_BIND:
620e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      session_ << "[ERROR-BIND]";
630e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      break;
640e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    case XmppEngine::ERROR_CONNECTION_CLOSED:
650e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      session_ << "[ERROR-CONNECTION-CLOSED]";
660e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      break;
670e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    case XmppEngine::ERROR_DOCUMENT_CLOSED:
680e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      session_ << "[ERROR-DOCUMENT-CLOSED]";
690e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      break;
700e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    default:
710e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      break;
720e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    }
730e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    break;
740e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  default:
750e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    break;
760e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  }
770e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}
780e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
790e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgbool XmppTestHandler::HandleStanza(const XmlElement * stanza) {
800e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  stanza_ << stanza->Str();
810e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  return true;
820e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}
830e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
840e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgstd::string XmppTestHandler::OutputActivity() {
850e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  std::string result = output_.str();
860e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  output_.str("");
870e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  return result;
880e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}
890e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
900e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgstd::string XmppTestHandler::SessionActivity() {
910e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  std::string result = session_.str();
920e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  session_.str("");
930e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  return result;
940e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}
950e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
960e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgstd::string XmppTestHandler::StanzaActivity() {
970e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  std::string result = stanza_.str();
980e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  stanza_.str("");
990e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  return result;
1000e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}
1010e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
1020e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}  // namespace buzz
103