summaryrefslogtreecommitdiff
path: root/tests/Network/BitTorrent/Core/FingerprintSpec.hs
blob: df62442a99c4a664da4ef4c785ce13700ed87bef (plain)
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
-- | see <http://bittorrent.org/beps/bep_0020.html>
module Network.BitTorrent.Core.FingerprintSpec (spec) where
import Test.Hspec
import Network.BitTorrent.Core.PeerId

spec :: Spec
spec = do
  describe "client info" $ do
    it "decode mainline encoded peer id" $ do
      fingerprint "M4-3-6--xxxxxxxxxxxx" `shouldBe` "Mainline-4.3.6"
      fingerprint "M4-20-8-xxxxxxxxxxxx" `shouldBe` "Mainline-4.20.8"

    it "decode azureus encoded peer id" $ do
      fingerprint "-AZ2060-xxxxxxxxxxxx" `shouldBe` "Azureus-2060"
      fingerprint "-BS0000-xxxxxxxxxxxx" `shouldBe` "BTSlave-0"

    it "decode Shad0w style peer id" $ do
      fingerprint "S58B-----xxxxxxxxxxx" `shouldBe` "Shadow-5.8.11"
      fingerprint "T58B-----xxxxxxxxxxx" `shouldBe` "BitTornado-5.8.11"

    it "decode bitcomet style peer id" $ do
      fingerprint "exbc01xxxxxxxxxxxxxx" `shouldBe` "BitComet-48.49"
      fingerprint "FUTB01xxxxxxxxxxxxxx" `shouldBe` "BitComet-48.49"
      fingerprint "exbc01LORDxxxxxxxxxx" `shouldBe` "BitLord-48.49"

    it "decode opera style peer id" $ do
      fingerprint "OP0123xxxxxxxxxxxxxx" `shouldBe` "Opera-123"

    it "decode ML donkey style peer id" $ do
      fingerprint "-ML2.7.2-xxxxxxxxxxx" `shouldBe` "MLdonkey-0"

-- TODO XBT, Bits on Wheels, Queen Bee, BitTyrant, TorrenTopia,
-- BitSpirit, Rufus, G3 Torrent, FlashGet