1// Copyright 2004 Google, Inc. All Rights Reserved.
2// Author: Joe Beda
3
4#include <iostream>
5#include <sstream>
6#include <string>
7#include "webrtc/libjingle/xmllite/xmlelement.h"
8#include "talk/xmpp/util_unittest.h"
9#include "talk/xmpp/xmppengine.h"
10#include "webrtc/base/gunit.h"
11
12namespace buzz {
13
14void XmppTestHandler::WriteOutput(const char * bytes, size_t len) {
15  output_ << std::string(bytes, len);
16}
17
18void XmppTestHandler::StartTls(const std::string & cname) {
19  output_ << "[START-TLS " << cname << "]";
20}
21
22void XmppTestHandler::CloseConnection() {
23  output_ << "[CLOSED]";
24}
25
26void XmppTestHandler::OnStateChange(int state) {
27  switch (static_cast<XmppEngine::State>(state)) {
28  case XmppEngine::STATE_START:
29    session_ << "[START]";
30    break;
31  case XmppEngine::STATE_OPENING:
32    session_ << "[OPENING]";
33    break;
34  case XmppEngine::STATE_OPEN:
35    session_ << "[OPEN]";
36    break;
37  case XmppEngine::STATE_CLOSED:
38    session_ << "[CLOSED]";
39    switch (engine_->GetError(NULL)) {
40    case XmppEngine::ERROR_NONE:
41      // do nothing
42      break;
43    case XmppEngine::ERROR_XML:
44      session_ << "[ERROR-XML]";
45      break;
46    case XmppEngine::ERROR_STREAM:
47      session_ << "[ERROR-STREAM]";
48      break;
49    case XmppEngine::ERROR_VERSION:
50      session_ << "[ERROR-VERSION]";
51      break;
52    case XmppEngine::ERROR_UNAUTHORIZED:
53      session_ << "[ERROR-UNAUTHORIZED]";
54      break;
55    case XmppEngine::ERROR_TLS:
56      session_ << "[ERROR-TLS]";
57      break;
58    case XmppEngine::ERROR_AUTH:
59      session_ << "[ERROR-AUTH]";
60      break;
61    case XmppEngine::ERROR_BIND:
62      session_ << "[ERROR-BIND]";
63      break;
64    case XmppEngine::ERROR_CONNECTION_CLOSED:
65      session_ << "[ERROR-CONNECTION-CLOSED]";
66      break;
67    case XmppEngine::ERROR_DOCUMENT_CLOSED:
68      session_ << "[ERROR-DOCUMENT-CLOSED]";
69      break;
70    default:
71      break;
72    }
73    break;
74  default:
75    break;
76  }
77}
78
79bool XmppTestHandler::HandleStanza(const XmlElement * stanza) {
80  stanza_ << stanza->Str();
81  return true;
82}
83
84std::string XmppTestHandler::OutputActivity() {
85  std::string result = output_.str();
86  output_.str("");
87  return result;
88}
89
90std::string XmppTestHandler::SessionActivity() {
91  std::string result = session_.str();
92  session_.str("");
93  return result;
94}
95
96std::string XmppTestHandler::StanzaActivity() {
97  std::string result = stanza_.str();
98  stanza_.str("");
99  return result;
100}
101
102}  // namespace buzz
103