-
Notifications
You must be signed in to change notification settings - Fork 12
/
url_store_spec.rb
52 lines (42 loc) · 1.46 KB
/
url_store_spec.rb
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
49
50
51
52
require File.dirname(__FILE__) + '/spec_helper'
require 'cgi'
describe UrlStore do
before do
UrlStore.secret = 'not the standart sssecrettt1231231áßðáïíœï©óáßïáöððííïö'
@data = {:x => 11212, :y => 'asdasda sdasdasdASDJKSAJDLSKDLKDS', 'asdasd' => 12312312, 12.12 => 123123212312123, :asdasdasd => '2134 adasdasóáößðóöáåöäóðᜩöóöfóöåäfóöéåfó'}
end
it "generates same code for same data" do
UrlStore.encode(@data).should == UrlStore.encode(@data)
end
it "can decode / encode" do
UrlStore.decode(UrlStore.encode(@data)).should == @data
end
it "cannot decode altered data" do
encoded = UrlStore.encode(@data)
UrlStore.decode(encoded+'x').should == nil
end
it "uses a lot of different chars" do
UrlStore.encode(@data).split('').uniq.size.should >= 62
end
it "uses url-save characters" do
encoded = UrlStore.encode(@data)
CGI.escape(encoded).gsub('%3B',';').gsub('%7C','|').should == encoded
end
it "cannot decode with wrong secret" do
encoded = UrlStore.encode(@data)
UrlStore.secret = 'xxx'
UrlStore.decode(encoded).should == nil
end
it "warns when default secret is used" do
UrlStore.secret = UrlStore::SECRET
UrlStore.should_receive(:warn)
UrlStore.encode(1)
end
it "can compress" do
x = 'a'*100
UrlStore.encode(x).size.should <= x.size
end
it "has a VERSION" do
UrlStore::VERSION.should =~ /^\d+\.\d+\.\d+$/
end
end