1# Copyright 2016 Google Inc. All Rights Reserved.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15from __future__ import absolute_import
16
17import hashlib
18
19import unittest2
20from expects import equal, expect
21
22from google.api.control import signing
23
24
25class TestAddDictToHash(unittest2.TestCase):
26    NOTHING_ADDED = hashlib.md5().digest()
27
28    def test_should_add_nothing_when_dict_is_none(self):
29        md5 = hashlib.md5()
30        signing.add_dict_to_hash(md5, None)
31        expect(md5.digest()).to(equal(self.NOTHING_ADDED))
32
33    def test_should_add_matching_hashes_for_matching_dicts(self):
34        a_dict = {'test': 'dict'}
35        same_dict = dict(a_dict)
36        want_hash = hashlib.md5()
37        signing.add_dict_to_hash(want_hash, a_dict)
38        want = want_hash.digest()
39        got_hash = hashlib.md5()
40        signing.add_dict_to_hash(got_hash, same_dict)
41        got = got_hash.digest()
42        expect(got).to(equal(want))
43