"""
    Slixmpp: The Slick XMPP Library
    Copyright (C) 2017 Emmanuel Gil Peyrot
    This file is part of Slixmpp.

    See the file LICENSE for copying permission.
"""

import unittest
from slixmpp import Iq
from slixmpp.test import SlixTest
from slixmpp.plugins.xep_0300 import Hash
from slixmpp.xmlstream import register_stanza_plugin


class TestHash(SlixTest):

    def setUp(self):
        register_stanza_plugin(Iq, Hash)

    def testSimpleElement(self):
        """Test that the element is created correctly."""
        iq = Iq()
        iq['type'] = 'set'
        iq['hash']['algo'] = 'sha-256'
        iq['hash']['value'] = 'EQgS9n+h4fARf289cCQcGkKnsHcRqTwkd8xRbZBC+ds='

        self.check(iq, """
          <iq type="set">
            <hash xmlns="urn:xmpp:hashes:2" algo="sha-256">EQgS9n+h4fARf289cCQcGkKnsHcRqTwkd8xRbZBC+ds=</hash>
          </iq>
        """)

    def testInvalidAlgo(self):
        """Test that invalid algos raise an exception."""
        iq = Iq()
        iq['type'] = 'set'
        try:
            iq['hash']['algo'] = 'coucou'
        except ValueError:
            pass
        else:
            raise self.failureException

    #def testDisabledAlgo(self):
    #    """Test that disabled algos aren’t used."""
    #    iq = Iq()
    #    iq['type'] = 'set'
    #    try:
    #        iq['hash']['algo'] = 'sha-1'
    #    except ValueError:
    #        pass
    #    else:
    #        raise self.failureException


suite = unittest.TestLoader().loadTestsFromTestCase(TestHash)