File: url_safe_base64_test.rb

package info (click to toggle)
ruby-url-safe-base64 0.2.2-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 108 kB
  • sloc: ruby: 55; makefile: 4
file content (48 lines) | stat: -rw-r--r-- 1,566 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
require 'test/unit'
require 'url_safe_base64'

class UrlSafeBase64Test < Test::Unit::TestCase
  
  TEST_STRING = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 !@#$%^&*()-=_+/?.:;[]{}\|"
  TEST_STRING_ENCODED_BASE64 = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogQUJDREVGR0hJSktMTU5PUFFS\nU1RVVldYWVogMTIzNDU2Nzg5MCAhQCMkJV4mKigpLT1fKy8/Ljo7W117fXw=\n"
  TEST_STRING_ENCODED_BASE64_URL = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogMTIzNDU2Nzg5MCAhQCMkJV4mKigpLT1fKy8_Ljo7W117fXw"

  MOD_GROUPS = {
    "2" => [TEST_STRING+'AB', TEST_STRING+'ABCDE'],
    "3" => [TEST_STRING, TEST_STRING+'ABC'],
    "0" => [TEST_STRING+'A', TEST_STRING+'ABCD']
  }
  
  def test_the_test
    result = Base64.encode64(TEST_STRING)
    assert_equal TEST_STRING_ENCODED_BASE64, result
    result = Base64.decode64(result)
    assert_equal TEST_STRING, result
  end

  def test_url_safe_base64_on_png
    result = UrlSafeBase64.encode64(TEST_STRING)
    assert_equal TEST_STRING_ENCODED_BASE64_URL, result
    result = UrlSafeBase64.decode64(result)
    assert_equal TEST_STRING, result
  end

  def test_mod_groups
    MOD_GROUPS.keys.each do |key|
      MOD_GROUPS[key].each do |str|
        result = UrlSafeBase64.encode64(str)
        result = UrlSafeBase64.decode64(result)
        assert_equal str, result
      end
    end
  end

  def test_for_correct_mod_values
    MOD_GROUPS.keys.each do |key|
      MOD_GROUPS[key].each do |str|
        assert_equal key.to_i, UrlSafeBase64.encode64(str).length.modulo(4)
      end
    end
  end

end