// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef REMOTING_SIGNALING_SERVER_LOG_ENTRY_UNITTEST_H_
#define REMOTING_SIGNALING_SERVER_LOG_ENTRY_UNITTEST_H_

#include <map>
#include <set>
#include <string>

namespace jingle_xmpp {
class XmlElement;
}  // namespace jingle_xmpp

namespace remoting {

extern const char kJabberClientNamespace[];
extern const char kChromotingNamespace[];

// Verifies that |stanza| contains a <log> element and returns it. Otherwise
// returns nullptr and records a test failure.
jingle_xmpp::XmlElement* GetLogElementFromStanza(jingle_xmpp::XmlElement* stanza);

// Verifies that |stanza| contains only 1 log entry, and returns the <entry>
// element. Otherwise returns nullptr and records a test failure.
jingle_xmpp::XmlElement* GetSingleLogEntryFromStanza(jingle_xmpp::XmlElement* stanza);

// Verifies a logging stanza.
// |keyValuePairs| lists the keys that must have specified values, and |keys|
// lists the keys that must be present, but may have arbitrary values.
// There must be no other keys.
bool VerifyStanza(
    const std::map<std::string, std::string>& key_value_pairs,
    const std::set<std::string> keys,
    const jingle_xmpp::XmlElement* elem,
    std::string* error);

}  // namespace remoting

#endif  // REMOTING_SIGNALING_SERVER_LOG_ENTRY_UNITTEST_H_
