//------------------------------------------------------------------------------------
//
// Copyright 2011 Stephen Jennings. Licensed under the Apache License, Version 2.0.
//
//------------------------------------------------------------------------------------
namespace OathNet.Test
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
public class KeyTests
{
[Test]
public void Key_created_with_binary_returns_correct_binary_1()
{
var keyData = new byte[]
{
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30
};
var key = new Key(keyData);
var actual = key.Binary;
Assert.AreEqual(keyData, actual);
}
[Test]
public void Key_created_with_binary_returns_correct_binary_2()
{
var keyData = new byte[]
{
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30,
0x31, 0x32
};
var key = new Key(keyData);
var actual = key.Binary;
Assert.AreEqual(keyData, actual);
}
[Test]
public void Key_created_with_binary_returns_correct_base32_1()
{
var keyData = new byte[]
{
0xDE, 0xAD, 0xBE, 0xEF, 0x48,
0x65, 0x6C, 0x6C, 0x6F, 0x21
};
var key = new Key(keyData);
var actual = key.Base32;
var expected = "32W3532IMVWGY3ZB";
Assert.AreEqual(expected, actual);
}
[Test]
public void Key_created_with_binary_returns_correct_base32_2()
{
var keyData = new byte[]
{
0x48, 0x65, 0x6C, 0x6C, 0x6F,
0x21, 0xDE, 0xAD, 0xBE, 0xEF
};
var key = new Key(keyData);
var actual = key.Base32;
var expected = "JBSWY3DPEHPK3PXP";
Assert.AreEqual(expected, actual);
}
[Test]
public void Key_created_with_base32_returns_correct_base32_1()
{
var base32 = "32W3532IMVWGY3ZB";
var key = new Key(base32);
var actual = key.Base32;
Assert.AreEqual(base32, actual);
}
[Test]
public void Key_created_with_base32_returns_correct_base32_2()
{
var base32 = "JBSWY3DPEHPK3PXP";
var key = new Key(base32);
var actual = key.Base32;
Assert.AreEqual(base32, actual);
}
[Test]
public void Key_created_with_base32_returns_correct_binary_1()
{
var base32 = "32W3532IMVWGY3ZB";
var key = new Key(base32);
var actual = key.Binary;
var expected = new byte[]
{
0xDE, 0xAD, 0xBE, 0xEF, 0x48,
0x65, 0x6C, 0x6C, 0x6F, 0x21
};
Assert.AreEqual(expected, actual);
}
[Test]
public void Key_created_with_base32_returns_correct_binary_2()
{
var base32 = "JBSWY3DPEHPK3PXP";
var key = new Key(base32);
var actual = key.Binary;
var expected = new byte[]
{
0x48, 0x65, 0x6C, 0x6C, 0x6F,
0x21, 0xDE, 0xAD, 0xBE, 0xEF
};
Assert.AreEqual(expected, actual);
}
[Test]
public void Key_created_with_invalid_string_throws_ArgumentException()
{
var invalidChars = new List()
{
"1", "8", "9", "0",
"`", "~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "_", "+",
"[", "]", "{", "}", "|", "\\",
";", ":", "'", "\"",
",", ".", "<", ">", "/", "?"
};
foreach (var s in invalidChars)
{
Assert.Throws(() => new Key("ABCD" + s + "EFG"), "'" + s + "' is not part of the alphabet");
}
}
[Test]
public void Key_created_with_parameterless_constructor_is_20_bytes()
{
var key = new Key();
Assert.AreEqual(20, key.Binary.Length);
Assert.False(key.Binary.All(b => b == 0), "The key was not generated");
}
}
}