entp-astrotrain 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +26 -0
 - data/LICENSE +20 -0
 - data/README +47 -0
 - data/Rakefile +145 -0
 - data/VERSION +1 -0
 - data/astrotrain.gemspec +96 -0
 - data/config/sample.rb +12 -0
 - data/lib/astrotrain/api.rb +53 -0
 - data/lib/astrotrain/logged_mail.rb +41 -0
 - data/lib/astrotrain/mapping/http_post.rb +18 -0
 - data/lib/astrotrain/mapping/jabber.rb +23 -0
 - data/lib/astrotrain/mapping/transport.rb +55 -0
 - data/lib/astrotrain/mapping.rb +157 -0
 - data/lib/astrotrain/message.rb +313 -0
 - data/lib/astrotrain/tmail.rb +48 -0
 - data/lib/astrotrain.rb +55 -0
 - data/lib/vendor/rest-client/README.rdoc +104 -0
 - data/lib/vendor/rest-client/Rakefile +84 -0
 - data/lib/vendor/rest-client/bin/restclient +65 -0
 - data/lib/vendor/rest-client/foo.diff +66 -0
 - data/lib/vendor/rest-client/lib/rest_client/net_http_ext.rb +21 -0
 - data/lib/vendor/rest-client/lib/rest_client/payload.rb +185 -0
 - data/lib/vendor/rest-client/lib/rest_client/request_errors.rb +75 -0
 - data/lib/vendor/rest-client/lib/rest_client/resource.rb +103 -0
 - data/lib/vendor/rest-client/lib/rest_client.rb +189 -0
 - data/lib/vendor/rest-client/rest-client.gemspec +18 -0
 - data/lib/vendor/rest-client/spec/base.rb +5 -0
 - data/lib/vendor/rest-client/spec/master_shake.jpg +0 -0
 - data/lib/vendor/rest-client/spec/payload_spec.rb +71 -0
 - data/lib/vendor/rest-client/spec/request_errors_spec.rb +44 -0
 - data/lib/vendor/rest-client/spec/resource_spec.rb +52 -0
 - data/lib/vendor/rest-client/spec/rest_client_spec.rb +219 -0
 - data/tasks/doc.thor +149 -0
 - data/tasks/merb.thor +2020 -0
 - data/test/api_test.rb +28 -0
 - data/test/fixtures/apple_multipart.txt +100 -0
 - data/test/fixtures/basic.txt +14 -0
 - data/test/fixtures/custom.txt +15 -0
 - data/test/fixtures/fwd.txt +0 -0
 - data/test/fixtures/gb2312_encoding.txt +16 -0
 - data/test/fixtures/gb2312_encoding_invalid.txt +15 -0
 - data/test/fixtures/html.txt +16 -0
 - data/test/fixtures/iso-8859-1.txt +13 -0
 - data/test/fixtures/mapped.txt +13 -0
 - data/test/fixtures/multipart.txt +213 -0
 - data/test/fixtures/multipart2.txt +213 -0
 - data/test/fixtures/multiple.txt +13 -0
 - data/test/fixtures/multiple_delivered_to.txt +14 -0
 - data/test/fixtures/multiple_with_body_recipients.txt +15 -0
 - data/test/fixtures/reply.txt +16 -0
 - data/test/fixtures/utf-8.txt +13 -0
 - data/test/logged_mail_test.rb +63 -0
 - data/test/mapping_test.rb +129 -0
 - data/test/message_test.rb +424 -0
 - data/test/test_helper.rb +54 -0
 - data/test/transport_test.rb +111 -0
 - metadata +115 -0
 
| 
         @@ -0,0 +1,213 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Delivered-To: foo@example.com
         
     | 
| 
      
 2 
     | 
    
         
            +
            Received: by ewy14 with SMTP id 14so339326ewy.0
         
     | 
| 
      
 3 
     | 
    
         
            +
                    for <foo@example.com>; Tue, 09 Dec 2008 15:03:18 -0800 (PST)
         
     | 
| 
      
 4 
     | 
    
         
            +
            Message-ID: <ddf0a08f0812091503x4696425eid0fa5910ad39bce1@mail.examle.com>
         
     | 
| 
      
 5 
     | 
    
         
            +
            Date: Tue, 9 Dec 2008 15:03:18 -0800
         
     | 
| 
      
 6 
     | 
    
         
            +
            From: "Rick Olson" <rick@example.com>
         
     | 
| 
      
 7 
     | 
    
         
            +
            To: foo@example.com
         
     | 
| 
      
 8 
     | 
    
         
            +
            Subject: testing
         
     | 
| 
      
 9 
     | 
    
         
            +
            MIME-Version: 1.0
         
     | 
| 
      
 10 
     | 
    
         
            +
            Content-Type: multipart/mixed; 
         
     | 
| 
      
 11 
     | 
    
         
            +
            	boundary="----=_Part_98510_7267541.1228863798546"
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ------=_Part_98510_7267541.1228863798546
         
     | 
| 
      
 14 
     | 
    
         
            +
            Content-Type: multipart/alternative; 
         
     | 
| 
      
 15 
     | 
    
         
            +
            	boundary="----=_Part_98511_30821043.1228863798546"
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            ------=_Part_98511_30821043.1228863798546
         
     | 
| 
      
 18 
     | 
    
         
            +
            Content-Type: text/plain; charset=ISO-8859-1
         
     | 
| 
      
 19 
     | 
    
         
            +
            Content-Transfer-Encoding: 7bit
         
     | 
| 
      
 20 
     | 
    
         
            +
            Content-Disposition: inline
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            Testing out rich emails with attachments!
         
     | 
| 
      
 23 
     | 
    
         
            +
            This one has NO name property on Content-Type.
         
     | 
| 
      
 24 
     | 
    
         
            +
            [state:hold responsible:rick]
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            ------=_Part_98511_30821043.1228863798546
         
     | 
| 
      
 27 
     | 
    
         
            +
            Content-Type: text/html; charset=ISO-8859-1
         
     | 
| 
      
 28 
     | 
    
         
            +
            Content-Transfer-Encoding: 7bit
         
     | 
| 
      
 29 
     | 
    
         
            +
            Content-Disposition: inline
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            Testing out <span class="Apple-style-span" style="font-weight: bold;">rich</span> emails with attachments!<div><br></div><div>[state:hold responsible:rick]</div>
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            ------=_Part_98511_30821043.1228863798546--
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            ------=_Part_98510_7267541.1228863798546
         
     | 
| 
      
 36 
     | 
    
         
            +
            Content-Type: image/jpeg
         
     | 
| 
      
 37 
     | 
    
         
            +
            Content-Transfer-Encoding: base64
         
     | 
| 
      
 38 
     | 
    
         
            +
            X-Attachment-Id: f_foj5r58f0
         
     | 
| 
      
 39 
     | 
    
         
            +
            Content-Disposition: attachment; filename=bandit.jpg
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            /9j/4AAQSkZJRgABAQAAAQABAAD/4hEsSUNDX1BST0ZJTEUAAQEAABEcYXBwbAIAAABtbnRyUkdC
         
     | 
| 
      
 42 
     | 
    
         
            +
            IFhZWiAH2AAKAB4ADgAsABlhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAA
         
     | 
| 
      
 43 
     | 
    
         
            +
            AADTLWFwcGzyFHiLXl6eOdbNyU72rSSJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5y
         
     | 
| 
      
 44 
     | 
    
         
            +
            WFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3dHB0AAABaAAAABRjaGFkAAABfAAA
         
     | 
| 
      
 45 
     | 
    
         
            +
            ACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAAAA52Y2d0AAAB2AAABhJuZGluAAAH
         
     | 
| 
      
 46 
     | 
    
         
            +
            7AAABj5kZXNjAAAOLAAAAGRkc2NtAAAOkAAAAj5tbW9kAAAQ0AAAAChjcHJ0AAAQ+AAAACRYWVog
         
     | 
| 
      
 47 
     | 
    
         
            +
            AAAAAAAAX3kAADZCAAAG6VhZWiAAAAAAAABvXQAAswsAABt5WFlaIAAAAAAAACgAAAAWzQAAsMNY
         
     | 
| 
      
 48 
     | 
    
         
            +
            WVogAAAAAAAA81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAA
         
     | 
| 
      
 49 
     | 
    
         
            +
            A9wAAMBsY3VydgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNn
         
     | 
| 
      
 50 
     | 
    
         
            +
            dAAAAAAAAAAAAAMBAAACAAAAEQA6AHkAygEfAWsBwwInApgDFgOpBEkE+AW7BokHZwhTCUoKVAtu
         
     | 
| 
      
 51 
     | 
    
         
            +
            DJANtQ7ZEAQRNBJnE6EU3RYfF2wYuRoLG2EcwB4dH38g5iJFI7wlOSayKC8ppysgLJQuBy92MOMy
         
     | 
| 
      
 52 
     | 
    
         
            +
            TTOwNQ42aTe+ORI6YjutPPU+OT+JQNxCLEN1RL1F/0dASHpJtUroTBVNQU5oT4pQqlHHUuJT/VUV
         
     | 
| 
      
 53 
     | 
    
         
            +
            Vi1XQ1haWXFagluXXKlduV7JX9dg5GHzYv5kCGUTZiBnKmg2aT5qRWsybBRs823VbrpvoHCGcXBy
         
     | 
| 
      
 54 
     | 
    
         
            +
            XnNPdD91MnYndx54FXkOegl7BHv+fPR94X7Nf7qApYGPgneDYIRLhTOGG4cDh+uI1Im8iqWLjox2
         
     | 
| 
      
 55 
     | 
    
         
            +
            jV+OVY92kOKSTZOwlRCWbJe7mP2aOpttnJidtZ7Jn9ig3aHgotyj06TKpcOm1KfsqQaqH6s3rE2t
         
     | 
| 
      
 56 
     | 
    
         
            +
            Ya5wr3+wjrGXsp+zpbSrtay2r7exuKy5rLqlu4u8a71Mvi6/D7/twMzBr8KRw3PEWMU/xifHEsgA
         
     | 
| 
      
 57 
     | 
    
         
            +
            yPDJ4crVy8nMss2KzmDPNNAG0NjRpdJw0zvUB9TU1Z/WbNc62ArY3tmy2ojbYdwi3MTdSt3L3lHe
         
     | 
| 
      
 58 
     | 
    
         
            +
            2d9p3/rgkuEt4cribeMT47zkZuUT5cDmbOcY58Xoa+kM6aLqNurI61vr7uyK7Svt1e6P71jwNfEv
         
     | 
| 
      
 59 
     | 
    
         
            +
            8k7zmfUY9vb5if0Q//8AAAALACYAUACGAMgBFAFlAcACKQKkAy8DzQR7BTkGBAbiB88IxQnICtcL
         
     | 
| 
      
 60 
     | 
    
         
            +
            6gz9DhUPMRBQEXISnRPLFPsWNxd0GLIZ+RtHHJId4x82IIkh6SNVJLwmJieMKPIqVSu1LRYuby/I
         
     | 
| 
      
 61 
     | 
    
         
            +
            MRwyazO1NPo2Pzd+OLo58TspPGs9sD7wQC5BZ0KcQ85E/0YtR1JIdEmTSq9LxUzZTetO+1ALURhS
         
     | 
| 
      
 62 
     | 
    
         
            +
            JFMuVDdVQVZIV1JYWFldWmVbaVxsXXRedl93YHxhgmKDY4hkiGWIZnNnU2gwaQ9p8mrWa7tso22O
         
     | 
| 
      
 63 
     | 
    
         
            +
            bnxvaXBZcUtyP3MzdCp1InYadxF4BXj0eeJ60Xu+fKp9lH5+f2yAVoE+giaDD4P5hOGFyYayh5qI
         
     | 
| 
      
 64 
     | 
    
         
            +
            golxioiL4I00joCPzJESkk+ThJS1lduW+5gTmSSaMJs3nDqdOZ41nzCgNaFOonSjn6TEpeynEKgx
         
     | 
| 
      
 65 
     | 
    
         
            +
            qU2qaauFrJutsK7Br9Kw4bHwsv20B7UStiG3NrhMuWO6e7uRvKO9tb7Kv9rA5sH0wv3EBcUKxg/H
         
     | 
| 
      
 66 
     | 
    
         
            +
            EsgTyRHKDcsBy+rMz82xzpHPbtBH0R/R9dLJ06DUdNVJ1iDW99fV2LDZj9pw20/cJtz53cremd9p
         
     | 
| 
      
 67 
     | 
    
         
            +
            4DrhC+Hc4q3jfuRP5SLl9ubL56Hod+lO6ibq/+vV7J7tXu4Z7srvefAn8NPxg/I38vHzt/SM9XP2
         
     | 
| 
      
 68 
     | 
    
         
            +
            cveQ+Nb6YPwz/mP//wAAAAoAJABLAH0AuwEDATkBdQG4AgECWwK8AyYDnwQgBLAFSAXoBpYHTQgJ
         
     | 
| 
      
 69 
     | 
    
         
            +
            CMQJgwpFCwkLzwyaDWkOOw8TD+0QyBGoEo0TcxRbFUUWLRclGCUZIBohGxwcGR0RHgwfBR/5IPAh
         
     | 
| 
      
 70 
     | 
    
         
            +
            4SLQI70kpyWQJnYnWyg+KR4qDisBK/Es4C3MLrcvnzCGMWwyUDMvNA006DXCNpo3cjhHOR458TrD
         
     | 
| 
      
 71 
     | 
    
         
            +
            O5Q8ZT02PgU+1j+mQHVBRUIUQuNDskSARUxGGUbnR7NIf0lJShJK0EuJTEBM+U21TnJPL0/vULJR
         
     | 
| 
      
 72 
     | 
    
         
            +
            d1I6Uv9TxlSNVVRWHVblV61YdVk9Wgda01uhXG5dOl4FXtFfnmBrYTViAGLMY5hkYmUtZfhmwmeM
         
     | 
| 
      
 73 
     | 
    
         
            +
            aFhpH2njaqZrZ2wqbOxtrG5obyNv3HCScUJx73KZcz5z4HSAdRt1tnZUdw531XijeXJ6Rnsbe/B8
         
     | 
| 
      
 74 
     | 
    
         
            +
            x32ifoB/XYA7gRuB+4Lbg7yEnYV4hliHQohHiVSKYYtzjIKNjo6ej7GQw5HVkuqT/5UVliyXRJhe
         
     | 
| 
      
 75 
     | 
    
         
            +
            mXeakJupnLmdvJ69n76gvaG9orujt6S4pbmmwKfHqNKp5Kr3rBGtLq5Or3SwmbHAsum0FLU/tm63
         
     | 
| 
      
 76 
     | 
    
         
            +
            n7jVugy7RryCvb6/AMBEwYrCz8QYxV3GpsfvyULKpcwCzVTOpc/00VDSttQq1a/XVtkj2xXdRN+/
         
     | 
| 
      
 77 
     | 
    
         
            +
            4pnl6Ooa75j33P//AABuZGluAAAAAAAABjYAAJh/AABX2wAAVCwAAJANAAAoXwAAFWAAAFANAABU
         
     | 
| 
      
 78 
     | 
    
         
            +
            OQAB+uEAAePXAAEeuAADAQAAAgAAAC8AdwC8APsBOAFyAawB5AIdAlQCigLAAvcDMANrA6YD4gQf
         
     | 
| 
      
 79 
     | 
    
         
            +
            BF0EmwTbBRsFWgWbBd0GHwZiBqQG6ActB3IHuAf+CEgIjgjUCRoJYgmrCfQKPwqLCtgLJwt3C8gM
         
     | 
| 
      
 80 
     | 
    
         
            +
            GwxvDMUNHA12DdEOLw6ODvAPUw+4EB8QiBD0EWER0RI+EqsTGROKE/4UchTqFWUV4BZgFt8XYxfr
         
     | 
| 
      
 81 
     | 
    
         
            +
            GHYZAhmSGiYavBtVG/Ecjh0uHdEedR8cH8QgbSEcIckieiMuI+QkmyVXJhIm0CeSKFYpGinfKqgr
         
     | 
| 
      
 82 
     | 
    
         
            +
            cSw/LQ8t/C71L/Ew6THiMt0z1jTNNcI2ujexOKg5nzqYO488hz2CPn8/iECbQatCwEPYRPZGE0cw
         
     | 
| 
      
 83 
     | 
    
         
            +
            SFRJekqhS8lM9U4hT09QgFGyUtJTwlSGVU1WF1bnV7hYi1liWkFbKFwUXQVd/17/YAthImI+Y2dk
         
     | 
| 
      
 84 
     | 
    
         
            +
            lGXKZwpoTGmRarlr22z6bhxvQHBmcZByvnP0dSh2X3efeOF6J3tvfL5+DH9dgLmCEYNzhPiGhogT
         
     | 
| 
      
 85 
     | 
    
         
            +
            iaGLOYzQjmOP+pGRkySUt5ZIl9SZXprnnG+d95+UoVajHqTspsCooaqIrHGuWrBIsjO0HrX/t+O5
         
     | 
| 
      
 86 
     | 
    
         
            +
            wbucvh3BSMRQxzDJ78yXzynRrNQo1qHZIduj3knhM+Q25znqE+y27xXxN/MV9Lv2L/d9+K35p/qa
         
     | 
| 
      
 87 
     | 
    
         
            +
            +1P8Dfyo/Sf9pv4l/sH/YP//AAAARwCVANoBGQFVAZAByQIBAjoCcgKqAuQDIANdA5sD2gQbBFwE
         
     | 
| 
      
 88 
     | 
    
         
            +
            nQTgBSQFZwWrBfEGNwZ9BsMHCwdUB50H5wgzCH4IyAkRCV0JqQn2CkUKlQrmCzkLjgvjDDoMlAzu
         
     | 
| 
      
 89 
     | 
    
         
            +
            DUsNqg4LDm4O1A88D6UQERB/EPARYxHXEkkSuhMuE6UUHRSYFRYVlhYZFp0XJBewGD8Y0RllGf4a
         
     | 
| 
      
 90 
     | 
    
         
            +
            mhs5G9scfx0kHc4eeh8oH9kgiyFBIfYisCNsJCgk6CWrJmwnMyf9KMYpjypeKysr/yzRLbsusy+x
         
     | 
| 
      
 91 
     | 
    
         
            +
            MK0xpzKkM6A0mjWSNo03hziBOXs6djtwPGs9aT5pP3BAgEGOQqBDtUTQRexHBkgnSUxKckuZTMNN
         
     | 
| 
      
 92 
     | 
    
         
            +
            8E8eUE9Rg1KuU61Uf1VUVixXC1foWMpZsVqfW5Ncil2LXpFfn2C2YdNi+GQkZVNmjGfIaQVqMWtH
         
     | 
| 
      
 93 
     | 
    
         
            +
            bFltaG5/b5NwrXHJcut0EnU5dmJ3k3jGef57N3x2fbV+9oA+gYeC0IQQhU6GkIfQiRCKVouijO2O
         
     | 
| 
      
 94 
     | 
    
         
            +
            N4+IkOCSNZOUlPSWWpfCmS2anpwTnY2fEaCuolWkA6W5p3epQasPrOSut7CSsmi0QrYPt+G5rrt1
         
     | 
| 
      
 95 
     | 
    
         
            +
            vVC/P8E0wzDFKcclySPLI80nzyjRKNMn1SfXJtkn2yTdK99c4a7kKOax6Ujrze438H7ykPRv9iD3
         
     | 
| 
      
 96 
     | 
    
         
            +
            o/j++i77PPw3/Qf9zf7K//8AAABMAMEBKAGGAd4CNQKIAtwDNAOOA+sESgSqBQwFbgXSBjgGngcF
         
     | 
| 
      
 97 
     | 
    
         
            +
            B28H2QhICLIJGgmHCfMKZArWC00LxAw/DL4NPg3EDk0O2g9rEAAQmBE1EdYSbhMHE6QURRTpFZIW
         
     | 
| 
      
 98 
     | 
    
         
            +
            PhbtF6EYWxkYGdsaohttHD0dDh3mHsIfoSCDIWoiUSM+JCwlHiYTJwsoCSkIKgorECwcLS0uVi+I
         
     | 
| 
      
 99 
     | 
    
         
            +
            MLgx5zMZNEc1czakN9Q5BTo5O2w8pD3fPx1AWkGUQtJEFEVbRqBH6Uk5SopL200zTotP6FFJUqhU
         
     | 
| 
      
 100 
     | 
    
         
            +
            FFWIVwVYf1oAW45dIl7CYHViN2QQZfpn+2n3a5ZtIm6tcDBxs3M4dLh2M3eyeS96rXwtfa1/L4C9
         
     | 
| 
      
 101 
     | 
    
         
            +
            gkaDuYUBhk2HmYjhii6LgIzPjhqPaZC6kgeTV5SnlfeXSJiXmeebOZyMneGfP6Czoiyjp6UlpqSo
         
     | 
| 
      
 102 
     | 
    
         
            +
            KKmwqzKst64zr7GxLLKdtBG1e7bjuEq5rbsKvGy9zb8swIrB6sNIxKLF/cdUyKvKAMtUzKnN/c9N
         
     | 
| 
      
 103 
     | 
    
         
            +
            0JzR69M51IrV1tcn2HrZydsa3Gjdp97d4B7haeK35AblWeah5+PpH+pT637sou207rnvsfCe8Yjy
         
     | 
| 
      
 104 
     | 
    
         
            +
            XvMv8+/0pfVY9fn2mvc09734RvjP+T75rPoa+on64fs2+4v74Pw1/H38tPzr/SL9Wf2R/cj9//43
         
     | 
| 
      
 105 
     | 
    
         
            +
            /nD+qf7i/xv/VP+N/8b//wAAZGVzYwAAAAAAAAAKQ29sb3IgTENEAAAAAAAAAAAAAAAAAAAAAAAA
         
     | 
| 
      
 106 
     | 
    
         
            +
            AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
         
     | 
| 
      
 107 
     | 
    
         
            +
            AAAAAG1sdWMAAAAAAAAAEgAAAAxuYk5PAAAAEgAAAOhwdFBUAAAAFgAAAPpzdlNFAAAAEAAAARBm
         
     | 
| 
      
 108 
     | 
    
         
            +
            aUZJAAAAEAAAASBkYURLAAAAHAAAATB6aENOAAAADAAAAUxmckZSAAAAEgAAAVhqYUpQAAAADgAA
         
     | 
| 
      
 109 
     | 
    
         
            +
            AWplblVTAAAAEgAAAXhwbFBMAAAAEgAAAYpwdEJSAAAAGAAAAZxlc0VTAAAAEgAAAbR6aFRXAAAA
         
     | 
| 
      
 110 
     | 
    
         
            +
            DgAAAcZydVJVAAAAJAAAAdRrb0tSAAAADAAAAfhkZURFAAAAEAAAAgRubE5MAAAAFgAAAhRpdElU
         
     | 
| 
      
 111 
     | 
    
         
            +
            AAAAFAAAAioARgBhAHIAZwBlAC0ATABDAEQATABDAEQAIABhACAAQwBvAHIAZQBzAEYA5AByAGcA
         
     | 
| 
      
 112 
     | 
    
         
            +
            LQBMAEMARABWAOQAcgBpAC0ATABDAEQATABDAEQALQBmAGEAcgB2AGUAcwBrAOYAcgBtX2mCcgAg
         
     | 
| 
      
 113 
     | 
    
         
            +
            AEwAQwBEAMkAYwByAGEAbgAgAEwAQwBEMKsw6TD8ACAATABDAEQAQwBvAGwAbwByACAATABDAEQA
         
     | 
| 
      
 114 
     | 
    
         
            +
            SwBvAGwAbwByACAATABDAEQATABDAEQAIABDAG8AbABvAHIAaQBkAG8ATABDAEQAIABjAG8AbABv
         
     | 
| 
      
 115 
     | 
    
         
            +
            AHJfaYJybbJmdphveTpWaAQmBDIENQRCBD0EPgQ5ACAEFgQaAC0ENAQ4BEEEPwQ7BDUEOc7st+wA
         
     | 
| 
      
 116 
     | 
    
         
            +
            IABMAEMARABGAGEAcgBiAC0ATABDAEQASwBsAGUAdQByAGUAbgAtAEwAQwBEAEwAQwBEACAAYwBv
         
     | 
| 
      
 117 
     | 
    
         
            +
            AGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnIUAAAAAxHyvAAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAA
         
     | 
| 
      
 118 
     | 
    
         
            +
            AENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAwOAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAAQAAAAB
         
     | 
| 
      
 119 
     | 
    
         
            +
            AAAAGgAAAAAAAqACAAQAAAABAAAAS6ADAAQAAAABAAAASwAAAAD/2wBDAAIBAQEBAQIBAQECAgIC
         
     | 
| 
      
 120 
     | 
    
         
            +
            AgQDAgICAgUDBAMEBgUGBgYFBQUGBwkIBgcIBwUFCAsICAkJCgoKBgcLDAsKDAkKCgr/2wBDAQIC
         
     | 
| 
      
 121 
     | 
    
         
            +
            AgICAgUDAwUKBgUGCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
         
     | 
| 
      
 122 
     | 
    
         
            +
            CgoKCgr/wAARCABLAEsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL
         
     | 
| 
      
 123 
     | 
    
         
            +
            /8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2Jy
         
     | 
| 
      
 124 
     | 
    
         
            +
            ggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
         
     | 
| 
      
 125 
     | 
    
         
            +
            h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo
         
     | 
| 
      
 126 
     | 
    
         
            +
            6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQD
         
     | 
| 
      
 127 
     | 
    
         
            +
            BAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom
         
     | 
| 
      
 128 
     | 
    
         
            +
            JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaX
         
     | 
| 
      
 129 
     | 
    
         
            +
            mJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6
         
     | 
| 
      
 130 
     | 
    
         
            +
            /9oADAMBAAIRAxEAPwBf2p/+Dhn4o/tYfs5+NP2btc/Yr0vw3ZeN/D1xo9/q0Pjv+1mtIZRh3SIw
         
     | 
| 
      
 131 
     | 
    
         
            +
            xhzjgDcuOua+Q/2RIZbb4ja6zH5l8KWMWVXhsXEq5/SvXdS/Zk/Z/XP2bwTMNvRRrV1gf+RKZ4X+
         
     | 
| 
      
 132 
     | 
    
         
            +
            FfgT4c3F1f8Agzw1JbTXkaJPO9xNcM0aklVy7HaASThfWvxXOuK45xg3Skne2miXVPXV9j++uAfC
         
     | 
| 
      
 133 
     | 
    
         
            +
            SjwTmscTh5e42nK8m3opJW91L7Xc253Ynd0/2agaVXORgt60y4kmjHzQuPm7oVrT8CfD34rfFnVb
         
     | 
| 
      
 134 
     | 
    
         
            +
            /RPhP8M9U8QS6VCkmrT2zwWtrZbsmNJrmd0jSRgCQmWfHJABBr4qjhataVoK7P37G53l2VYX2+Lq
         
     | 
| 
      
 135 
     | 
    
         
            +
            xhT2u3bV9PXy3MxpMZPeqev+I9G8K6VJrPiHUorO1QqrTTPgFmOFVfUkkAAckmuz1D9kH9uK51aS
         
     | 
| 
      
 136 
     | 
    
         
            +
            aL4eeFvBul6Vbx3d5rPxB8SWpsLkbj5sTtayPJHtjXeJAvU87QOanxk/4Jw+PPH/AIW8OfEr4ZeI
         
     | 
| 
      
 137 
     | 
    
         
            +
            PBfj3UrXTvtJfw34mnsTdXssgKy2lxM72/2aBVHlphSSm9zISFHq0clkmp15JQfZq/pvZfM/PMx8
         
     | 
| 
      
 138 
     | 
    
         
            +
            W8ojipYXARdSa+201Bd3om5W7JavS63MrT7/AEPVvBUNxJpGoWOrvduXiuWXZ9n/AICyj7jHrjPH
         
     | 
| 
      
 139 
     | 
    
         
            +
            fmoobdp7qCwjwbi6mEVvETgyueiAdz7V5x4H8Mftdal4buPAnj/4ZeNtN8RaPG5mvIPCl1cSatEJ
         
     | 
| 
      
 140 
     | 
    
         
            +
            tvnW6xwA/J9wgAbvlcMU69B8L/CXhC18KWHjfwb4mm8RrGZNniTULo3F8j+Yd6yFwGgYMpQqAgGz
         
     | 
| 
      
 141 
     | 
    
         
            +
            BBqsyyWWWUFWqzjaTslF36XV+1+ier100Ozh7xFyvPsX9SwTbmlzN1LLVtJpJXvZ+i7N3udbfafe
         
     | 
| 
      
 142 
     | 
    
         
            +
            6VfyabqkDwXELFZYnPMbjsaaGQjPH5VXmvLi7na6u7iSWWQ5eR33E+7N3NLub/npXgON9j9JpSk6
         
     | 
| 
      
 143 
     | 
    
         
            +
            a5mubrba5S+JXjHXtI8JXt/4b0bUdRv1Cpa2Oj2IurqUlwCIYCQJZNrMQnT5ea+RvgZ8ZPjh+2/4
         
     | 
| 
      
 144 
     | 
    
         
            +
            vk+D3wS/Yy8P6hqhuXmvPFSeINWtbyG2z8smoX73nlq3y43KiK5+VI+i19e+C/Ht/wCAfjH4E8ZW
         
     | 
| 
      
 145 
     | 
    
         
            +
            zwiCx8WwreGdiAiywTQRuNvQrLLDj3KntXqPwg8cfDL4dXGur8L9D0mxefW7m51+DSII4XF40rmT
         
     | 
| 
      
 146 
     | 
    
         
            +
            7QIxlWzvVQfujpX2mV5lQynLJtUVUqTe/a3R2187Jo/mPxGyTNOJeKKMKeMdChRj8P8AM23qk9Nl
         
     | 
| 
      
 147 
     | 
    
         
            +
            a7TtbQ9a/Z5/YW/Z+h+DWgS/FX4CtofiyTSgPEWn6X4+1S9hSf50O2V7p8hhtfhuGOMnbmu8+Gf7
         
     | 
| 
      
 148 
     | 
    
         
            +
            If7MnwYhey+FHwpi0qGbUm1CaJtXvLtZrogDzZVmmcSH5V++D0HpXnnhv9pFmiRb2WD57lHPnSFk
         
     | 
| 
      
 149 
     | 
    
         
            +
            B3jGP7pxtx716t4V+Kml+I4nKM0TI+P3mMP8ucj27fVTXkPNqlWUteRvf+up4+M4bxlGjCNVupCO
         
     | 
| 
      
 150 
     | 
    
         
            +
            19bei6X62PPP2/P2ffjL+0v8KbX4WfDO80A2eoa1bTeKbfxFqU9ql1YQOJjbI0MbktNIiK+du1M9
         
     | 
| 
      
 151 
     | 
    
         
            +
            ckV5V+zx8IfHv7EOqanrfxPudEi0u90aGz8O+EfCCfaLrWdWRzvuorGCGOGF3TEbiMYchZH2bS1f
         
     | 
| 
      
 152 
     | 
    
         
            +
            TvjXxH4pm8J6g3gG+tI9YFpK+m/bLfzonkCEojLkdTtGd3GarfDP4kw/EP4f6V41msbvT7m6ttt/
         
     | 
| 
      
 153 
     | 
    
         
            +
            p1/EIrizuoyY7i3lUEhWSZJUOCw46sK6KeMawbg1enfVX69H+G9jx54Wt9a0bVS2jsttml1trqr9
         
     | 
| 
      
 154 
     | 
    
         
            +
            TyD/AIKVftD/ABI/Zs/Z/wBL+Lnw08d6h4f1CHxXptm/+iQXts8dxJ86XdvLwwxHs3q6smWIzXNf
         
     | 
| 
      
 155 
     | 
    
         
            +
            8FBvhjrng2y8P/Hr9nn4ZWF35d5cad4y8NaPZQ2Tana3g8yO7DrhPPhmiwC6nf5+zuK2f+CkHiTw
         
     | 
| 
      
 156 
     | 
    
         
            +
            Zqn7JHjrQvEVk11GugS3UCR53x3MR3QuGAONsm3PHQt/DmvXfhN4ym8Q+DLTUrx41uPIQXaI+5Q+
         
     | 
| 
      
 157 
     | 
    
         
            +
            BkL7Z6VH17D/AFSnGUOdc0k+zVo6d9Lu3bdHRTyfMMPjamKp1HCVoOLW6d5a22s+VJ9+p8CeG/Eu
         
     | 
| 
      
 158 
     | 
    
         
            +
            meKdIi1nTXl8qUnCXFu0EiMrYKPGwDIQ3YgGtDzv9gVu/tOx+FrD9rTx1P4Wadftq6Zfa1DIylP7
         
     | 
| 
      
 159 
     | 
    
         
            +
            SktmWR4/4gHhht8j+/k9zXJi5U/8tq4cTQpxq2p7aP70mf0rw7nFXNMnp18TaE3e66XTs7eTtfyO
         
     | 
| 
      
 160 
     | 
    
         
            +
            V8f6Vd+K/B+o6FYPCt1Pbn7C1wSI0uEYSRSMRzgSIh4/u1x2u+MPhTd/FGG18dfArVPBF5PlrDxp
         
     | 
| 
      
 161 
     | 
    
         
            +
            4S1d0mE2S88t0YP+WZkWV0effuTLEDaRXctdNt+Z+KxNW8Kax8UvEOl+BPC3hC78SX7aojLo1uVt
         
     | 
| 
      
 162 
     | 
    
         
            +
            7b7REhmV769kxHbQwIsk0m8/LGpdgVXB+iyupUjL2MYtxd9m01pv26ddPQ/LeOcHl9XD/Xq1VU5R
         
     | 
| 
      
 163 
     | 
    
         
            +
            sryScXrdJ3V927crvfo9j0fwbP4zsfD8Gp6F8SdO8X6dI++21PVZRa3MsZONv2iAeVLtZcA7Bnoa
         
     | 
| 
      
 164 
     | 
    
         
            +
            7rwf8UPGmjavLp+paLcWaIN8Fz9pSeKUZxjcvIfvgjo3Wvjf9rcXH7FHw/g1Pwl8QtfOq6/D59vY
         
     | 
| 
      
 165 
     | 
    
         
            +
            WUqHQpI5wBb/AOiXCOzZijluCXwzpNab0UyMF6D9k34qah8e/h9eapf+JNQ8D+JppY7G3tbfVd9v
         
     | 
| 
      
 166 
     | 
    
         
            +
            dE23mxSwWFzuwuzediYUqCQ3A29mN4clLCPFNJxvva1vW2nzSZ+eZPx3ha+YrLYc3tIq9m7qS12c
         
     | 
| 
      
 167 
     | 
    
         
            +
            tbvs2n6n3DqX7TV34R0GTxBfvi3tE8y5d85CD+5hWy+/YAP9rrUlh+0B5GixWmi2sdrAU83yISuE
         
     | 
| 
      
 168 
     | 
    
         
            +
            aQmR9237xYuST3LNXhukeCY/CsF1cWGqahJc36RreSXmpPPEHRAPMSKTeke3bkADHCg+tZ/h3wx4
         
     | 
| 
      
 169 
     | 
    
         
            +
            zi8WLq/hDxrajR2b/SvD+o6dscENK0ih0GY282WP5uQF4w2Qa+anltKdNqnUtbvfX8/67H2qr+yx
         
     | 
| 
      
 170 
     | 
    
         
            +
            EZ1aF79rO2u93a62ulqvMv8A7W3xa1/xB8OvHGgaX4hDXMfgW4f+yg4jdzISHlZz1CQ8hFx97nOR
         
     | 
| 
      
 171 
     | 
    
         
            +
            X1H8AfE0MXgVpTd7sJEdzfLu/dJzXxD8Z/B/izwJ8BfiL458W6mNW17WtJZJxapm3s4sfZ1WHIUo
         
     | 
| 
      
 172 
     | 
    
         
            +
            ojl3vnuG69/bLH4mweAfA8l9e6j9nt7XTVe8lZ8bIo4wWP5A08fg4U8BRhR1fM1p1do3/wCARhK3
         
     | 
| 
      
 173 
     | 
    
         
            +
            1jGYh1/cXLF2fRc07ejtuee69dQeP/2kvi9e2104u7G+0oiF0Zo5kTTwX2t2Zd44+7jB71SF57/p
         
     | 
| 
      
 174 
     | 
    
         
            +
            XnfwF+NQl+GGr/FmbQ7mW/8AGE1/rPinU1l88aRaJOkSRJbqm/yo7eWzkkk+bYk6ueFfZ2ljqC39
         
     | 
| 
      
 175 
     | 
    
         
            +
            ol5prpcQSDMU0MgkVx6hhwa0xeBxmGxEozTjFWin35YpP5XV1fX5M+g4G4gwGYZY/ZVFLWUrX1Sl
         
     | 
| 
      
 176 
     | 
    
         
            +
            JtX+Tt2vc1/gD8HPGH7SHxM0rwboyXej+FrvT21PWfGuEQR6eszW/wDxLw4PmzSzK8cUjDyg0cz5
         
     | 
| 
      
 177 
     | 
    
         
            +
            fy8HpvHX7Q3h/wAK6heaJ4I8KaXpHwev7WPSPDs2mHdc6boImla7uZpX5nl1mfTbhJ5GDSFDaAv/
         
     | 
| 
      
 178 
     | 
    
         
            +
            AABnxM/av8cL8FvH/inQ/B2uWev+Ihd3F0+n6bvGg2gj+x6fbNbxgSWdvbWyxIjywpHlnO/mvDvg
         
     | 
| 
      
 179 
     | 
    
         
            +
            1N4X/aJ/aT/4Z88S6kkfhvxZ8KrnwpplxG25Le5Qi8srlSPlzHPYK24e6/xV9nhKEaUZWVqaWr6u
         
     | 
| 
      
 180 
     | 
    
         
            +
            2rf+XT7z8MznHY/iBRxWImpVItWgtFHmdlG2+yd29ddGfP8A+0/431D4s/F7wl8Zvjwl7d+FtQ8X
         
     | 
| 
      
 181 
     | 
    
         
            +
            3N34kaEM9vaeZceXHaoB91UtbKJAg+bZGe9eyfsZ6JD8QfH/AMQPGPir4g6Pq99pWo2Nzoms6EyN
         
     | 
| 
      
 182 
     | 
    
         
            +
            aafE9vPBEItwAjCRBU8rtsXOa4WHWtU8HeG9S8L+NNDgTVfDp1N9Sspm2L/aQvJbIw/9dEF1M4HV
         
     | 
| 
      
 183 
     | 
    
         
            +
            QYn6EV7j/wAE2/g0PBXhzU1vNKi0lvEVjBqNl4YF/wDbWFm7ki7m+8q7tywx78OUid8cnHtZxmMK
         
     | 
| 
      
 184 
     | 
    
         
            +
            HD06FraqzXa+qt2sfNcHZVLE8Z06ifNB3lK99+Vxi2/XVX1TvY91uLNZY3hmhBjcFGT7wweMUzSb
         
     | 
| 
      
 185 
     | 
    
         
            +
            KXTdYkt7PRVS2ltoXe6EmTJIn7vYyNzkIqfP36HpXat4JuuG2Z/vUreF5SgXyiSvTjmvytYqnY/p
         
     | 
| 
      
 186 
     | 
    
         
            +
            Z4S7T7Hi37W1xZ2XwU1nV9d0fdZ2NxbJIu9pVltnuIN5ZF65+4A+7B2mvh/48/tSftEftAf2P8B9
         
     | 
| 
      
 187 
     | 
    
         
            +
            O8LWOnT+Mra1meHTZHMsyyuxEbncRGnCsR12Abjywr9LfEHgm3utSMGoNeXhvtPdINKMO+2leLeT
         
     | 
| 
      
 188 
     | 
    
         
            +
            uVvk3kSj5HK7/LXHKV+dXi+W51f9ozxb4su/D9rpGsaRo886W9hOWayuYY4rvdCHUGFXmhvCUPzx
         
     | 
| 
      
 189 
     | 
    
         
            +
            q7xscFa+04WnhazcZwUpQ95N9HotvVfgfi/ifHMMMoOjWdOFb3JRW8krt3duzsl2et0et/sk+LvC
         
     | 
| 
      
 190 
     | 
    
         
            +
            f7N2m618Lkdr5fCGuReJIpZORqNvB51jrNjKPutG9jOZNvQgjulfWGsfAj4UJqUrWX7Gdv4ztpSJ
         
     | 
| 
      
 191 
     | 
    
         
            +
            bPxPY61eWC38DgPEzxQSLH5oRkWRwoMkiu55Y18MfDLTfFXxT+K8Wg+Av7OF7e3sOqzz32RY2Ony
         
     | 
| 
      
 192 
     | 
    
         
            +
            2ks99dXz87LWO3vt0nzcny0XkitDTPG/h7XrJLvwt8fvEGlaXAWs9NtbvV5xM9vbsYI55FNyux5l
         
     | 
| 
      
 193 
     | 
    
         
            +
            iWZkACqZCq/KBXpY7C1Kld1E7N2v/V0+j8rtnzuU16GHwVOnThzaO1mlZX6trV6pW3SS7jf2Yr/9
         
     | 
| 
      
 194 
     | 
    
         
            +
            rf8AZp13TdN/aX+KnhjwjpukK1zo83iX4h2lnr+jNgfvLBYTPdBW2qGt5ImhmQMhT5s1618VV8Kr
         
     | 
| 
      
 195 
     | 
    
         
            +
            4mtf2tvhvZaZ/wAJX4bs7XWNei8GeHbvTNM1qzkjYter9tEEcAML3EgaBH3ujRkfNuH50fDbwb4b
         
     | 
| 
      
 196 
     | 
    
         
            +
            1/wZqWs6vp3nXNuW8mTznXbx6KQP0r7G/wCCfeq3/wATPht8Lfh94+n/ALV0a68V+J9EubG7QMsu
         
     | 
| 
      
 197 
     | 
    
         
            +
            nW+lR6jBbOcZaOO7keZQTwWI+6cV7Ga4GNG9aNr7SSVk1rfS/VL77M+K4ZzzE12sPNuyV4NtSktk
         
     | 
| 
      
 198 
     | 
    
         
            +
            k5NLRej0uranvnxOn+Hf7SPguNLee3fSvilPb6roN2rCAWHjGyiVlcPjETX9qhTLfxxy5Br1T9iv
         
     | 
| 
      
 199 
     | 
    
         
            +
            /hENJ+G+jeBLu7tG16Oz+zyXr2qWkusfZyYvmRvn+0W3+olgf543TgFHRz8dfsn6jfaz+z18aNC1
         
     | 
| 
      
 200 
     | 
    
         
            +
            O7kltNGtrnU9JiLY+x3cCJPDNERyjJIoYEEdWHRmB9q1OQ3H7T3gfw1cqsth478Brrvim0lQOl5q
         
     | 
| 
      
 201 
     | 
    
         
            +
            kEghivVBH7i4EYCmWHYzBV3E4FfJZjgFisPLDczSjdr5JP8AJ/evmv1TKc0eX4iGY04LmnaLXlJt
         
     | 
| 
      
 202 
     | 
    
         
            +
            fhJO3k/I+1v7Ftol2yLg+h+WsrXvC2kajYXGmXAcR3ULxSmGYxOFYEHa45Q89VORXxR+2v8AGP4u
         
     | 
| 
      
 203 
     | 
    
         
            +
            fs66fp138IPij4i0xpw/mJca1PqMZw3GI7lpFH4AVyHg79t/9qTWfhte6rqfxVlluY4MpMdKswyn
         
     | 
| 
      
 204 
     | 
    
         
            +
            n0hr5SXDeLjRjVhONm/NP8n+Z9zT49y/6y8PVpS5kr6crW3m1+R9peN/F/h74WafJc+JtbklS5bZ
         
     | 
| 
      
 205 
     | 
    
         
            +
            plkkSvcyKkI3onPzgbXd5HwiBmLuAM18jePfgna/E3xl4q+PHj2C8uta+IunHSvhx4P8LXD2tzeq
         
     | 
| 
      
 206 
     | 
    
         
            +
            bTyvtc0zf6yFI1OJGCRsPMkOY9m7o/Clsnj746/DPw944mn1iz8UeAL/AFrxDFqdw9z/AGhdW0m6
         
     | 
| 
      
 207 
     | 
    
         
            +
            BZmcktAjBW+zE+QWVWMZIBB4R8UeIdY8AfEv406pq80/ik+Nb7QU1qRsyxabFbxTJaxdoozId7BA
         
     | 
| 
      
 208 
     | 
    
         
            +
            u8hd+7aMfQZVgJZYnOMrzkld+V7WXq1q97HzecZsuJ3GE6aVOE7RT197l+J97J6La/oZ2r6Z8Jf2
         
     | 
| 
      
 209 
     | 
    
         
            +
            fPhXefs3eHrbT9Z8ZfEcww/ES80G5ktXubCJY1OlaW+ySURblhgTKsZC7yP22buk/Gz9lj4UaXbf
         
     | 
| 
      
 210 
     | 
    
         
            +
            DzxloXw08O6rpcCRX+hXdlourTWMpAYxS3TadmV13fMTnDZGTjJ+evhjeXel+GW+NlldSL4qm/Zz
         
     | 
| 
      
 211 
     | 
    
         
            +
            1fxIdbdzJMmqrrNxYpdR7siN1tv3ahAqr1ADc18MS3l5qE8l9fXcs000rPLLJIWZ2JJJJPUk96+y
         
     | 
| 
      
 212 
     | 
    
         
            +
            wuW1K8pc1R6bvq3+SSSSR+SZxxDl+X06UqeHvzLRXslFemrbbbetl5n/2Q==
         
     | 
| 
      
 213 
     | 
    
         
            +
            ------=_Part_98510_7267541.1228863798546--
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Delivered-To: processor@astrotrain.com
         
     | 
| 
      
 2 
     | 
    
         
            +
            Message-ID: <a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com>
         
     | 
| 
      
 3 
     | 
    
         
            +
            Date: Thu, 16 Oct 2008 10:14:18 -0700
         
     | 
| 
      
 4 
     | 
    
         
            +
            From: user@example.com, boss@example.com
         
     | 
| 
      
 5 
     | 
    
         
            +
            To: other@example.com, processor@astrotrain.com
         
     | 
| 
      
 6 
     | 
    
         
            +
            Subject: Fwd: blah blah
         
     | 
| 
      
 7 
     | 
    
         
            +
            MIME-Version: 1.0
         
     | 
| 
      
 8 
     | 
    
         
            +
            Content-Type: text/plain; charset=ISO-8859-1
         
     | 
| 
      
 9 
     | 
    
         
            +
            Content-Transfer-Encoding: 7bit
         
     | 
| 
      
 10 
     | 
    
         
            +
            Content-Disposition: inline
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ---------- Forwarded message ----------
         
     | 
| 
      
 13 
     | 
    
         
            +
            blah blah
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Delivered-To: processor-reply-57@custom.com
         
     | 
| 
      
 2 
     | 
    
         
            +
            Delivered-To: processor-delivered@astrotrain.com
         
     | 
| 
      
 3 
     | 
    
         
            +
            Message-ID: <a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com>
         
     | 
| 
      
 4 
     | 
    
         
            +
            Date: Thu, 16 Oct 2008 10:14:18 -0700
         
     | 
| 
      
 5 
     | 
    
         
            +
            From: user@example.com, boss@example.com
         
     | 
| 
      
 6 
     | 
    
         
            +
            To: processor@astrotrain.com
         
     | 
| 
      
 7 
     | 
    
         
            +
            Subject: Fwd: blah blah
         
     | 
| 
      
 8 
     | 
    
         
            +
            MIME-Version: 1.0
         
     | 
| 
      
 9 
     | 
    
         
            +
            Content-Type: text/plain; charset=ISO-8859-1
         
     | 
| 
      
 10 
     | 
    
         
            +
            Content-Transfer-Encoding: 7bit
         
     | 
| 
      
 11 
     | 
    
         
            +
            Content-Disposition: inline
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ---------- Forwarded message ----------
         
     | 
| 
      
 14 
     | 
    
         
            +
            blah blah
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Delivered-To: processor@astrotrain.com
         
     | 
| 
      
 2 
     | 
    
         
            +
            Message-ID: <a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com>
         
     | 
| 
      
 3 
     | 
    
         
            +
            Date: Thu, 16 Oct 2008 10:14:18 -0700
         
     | 
| 
      
 4 
     | 
    
         
            +
            From: user@example.com, boss@example.com
         
     | 
| 
      
 5 
     | 
    
         
            +
            To: other@example.com, processor@astrotrain.com
         
     | 
| 
      
 6 
     | 
    
         
            +
            Subject: blah blah
         
     | 
| 
      
 7 
     | 
    
         
            +
            MIME-Version: 1.0
         
     | 
| 
      
 8 
     | 
    
         
            +
            Content-Type: text/plain; charset=ISO-8859-1
         
     | 
| 
      
 9 
     | 
    
         
            +
            Content-Transfer-Encoding: 7bit
         
     | 
| 
      
 10 
     | 
    
         
            +
            Content-Disposition: inline
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            blah blah
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            ISSUE #: <processor%2Bfoobar@astrotrain.com>
         
     | 
| 
      
 15 
     | 
    
         
            +
            ISSUE #: <processor+blah@astrotrain.com>
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Delivered-To: processor@astrotrain.com
         
     | 
| 
      
 2 
     | 
    
         
            +
            Message-ID: <a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com>
         
     | 
| 
      
 3 
     | 
    
         
            +
            Date: Thu, 16 Oct 2008 10:14:18 -0700
         
     | 
| 
      
 4 
     | 
    
         
            +
            From: user@example.com
         
     | 
| 
      
 5 
     | 
    
         
            +
            To: processor@astrotrain.com
         
     | 
| 
      
 6 
     | 
    
         
            +
            Subject: Fwd: blah blah
         
     | 
| 
      
 7 
     | 
    
         
            +
            MIME-Version: 1.0
         
     | 
| 
      
 8 
     | 
    
         
            +
            Content-Type: text/plain; charset=ISO-8859-1
         
     | 
| 
      
 9 
     | 
    
         
            +
            Content-Transfer-Encoding: 7bit
         
     | 
| 
      
 10 
     | 
    
         
            +
            Content-Disposition: inline
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            blah blah
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            =====
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            blah!
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Delivered-To: "Processor" <processor@astrotrain.com>
         
     | 
| 
      
 2 
     | 
    
         
            +
            Message-ID: <a16be7390810161014n52b603e9k1aa6bb803c6735aa@mail.gmail.com>
         
     | 
| 
      
 3 
     | 
    
         
            +
            Date: Thu, 16 Oct 2008 10:14:18 -0700
         
     | 
| 
      
 4 
     | 
    
         
            +
            From: =?utf-8?Q?isnard_naik=c3=a9?= <user@example.com>
         
     | 
| 
      
 5 
     | 
    
         
            +
            To: Processor <processor@astrotrain.com>
         
     | 
| 
      
 6 
     | 
    
         
            +
            Subject: Fwd: blah blah
         
     | 
| 
      
 7 
     | 
    
         
            +
            MIME-Version: 1.0
         
     | 
| 
      
 8 
     | 
    
         
            +
            Content-Type: text/plain; charset=ISO-8859-1
         
     | 
| 
      
 9 
     | 
    
         
            +
            Content-Transfer-Encoding: 7bit
         
     | 
| 
      
 10 
     | 
    
         
            +
            Content-Disposition: inline
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ---------- Forwarded message ----------
         
     | 
| 
      
 13 
     | 
    
         
            +
            blah blah
         
     | 
| 
         @@ -0,0 +1,63 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.join(File.dirname(__FILE__), "test_helper")
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class Astrotrain::LoggedMailTest < Astrotrain::TestCase
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe "being created from Message" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                before :all do
         
     | 
| 
      
 6 
     | 
    
         
            +
                  Astrotrain::Mapping.all.destroy!
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @mapping = Astrotrain::Mapping.create!(:email_user => '*')
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @raw     = mail(:custom)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @message = Astrotrain::Message.parse(@raw)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @logged  = Astrotrain::LoggedMail.from(@message) do |l|
         
     | 
| 
      
 11 
     | 
    
         
            +
                    l.recipient = @message.recipients(%w(delivered_to)).first
         
     | 
| 
      
 12 
     | 
    
         
            +
                    l.mapping   = @mapping
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                it "sets recipient" do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  assert_equal @message.recipients(%w(delivered_to)).first, @logged.recipient
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                it "sets sender" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                  assert_equal 'user@example.com', @logged.sender
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                it "sets subject" do
         
     | 
| 
      
 25 
     | 
    
         
            +
                  assert_equal @message.subject, @logged.subject
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                it "sets mapping" do
         
     | 
| 
      
 29 
     | 
    
         
            +
                  assert_equal @mapping, @logged.mapping
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              describe "attempted creation with badly encoded message" do
         
     | 
| 
      
 34 
     | 
    
         
            +
                before :all do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  Astrotrain::Mapping.all.destroy!
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @mapping = Astrotrain::Mapping.create!(:email_user => '*')
         
     | 
| 
      
 37 
     | 
    
         
            +
                  @raw     = mail(:custom)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  @subject = "=?gb2312?B?usO80rXnubrO78341b68urjEsOajrLfJwPvG1tfu0MKxqLzbo6jUsbmkvNuj?= =?gb2312?B?qQ==?="
         
     | 
| 
      
 39 
     | 
    
         
            +
                  @raw.sub! /Subject\: Fwd\: blah blah/, "Subject: #{@subject}"
         
     | 
| 
      
 40 
     | 
    
         
            +
                  @message = Astrotrain::Message.parse(@raw)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  @logged  = Astrotrain::LoggedMail.from(@message) do |l|
         
     | 
| 
      
 42 
     | 
    
         
            +
                    l.recipient = @message.recipients(%w(delivered_to)).first
         
     | 
| 
      
 43 
     | 
    
         
            +
                    l.mapping   = @mapping
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                it "sets recipient" do
         
     | 
| 
      
 48 
     | 
    
         
            +
                  assert_equal @message.recipients(%w(delivered_to)).first, @logged.recipient
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                it "sets subject" do
         
     | 
| 
      
 52 
     | 
    
         
            +
                  assert_equal @subject, @logged.subject
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                it "sets sender" do
         
     | 
| 
      
 56 
     | 
    
         
            +
                  assert_equal 'user@example.com', @logged.sender
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                it "sets mapping" do
         
     | 
| 
      
 60 
     | 
    
         
            +
                  assert_equal @mapping, @logged.mapping
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
              end
         
     | 
| 
      
 63 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,129 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.join(File.dirname(__FILE__), "test_helper")
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class Astrotrain::MappingTest < Astrotrain::TestCase
         
     | 
| 
      
 4 
     | 
    
         
            +
              it "defaults #email_domain to Mapping.default_domain" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                assert_equal Astrotrain::Mapping.default_domain, Astrotrain::Mapping.new.email_domain
         
     | 
| 
      
 6 
     | 
    
         
            +
              end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              it "defaults #transport to 'http_post" do
         
     | 
| 
      
 9 
     | 
    
         
            +
                assert_equal 'http_post', Astrotrain::Mapping.new.transport
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              it "knows http_post transport uses urls" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                assert Astrotrain::Mapping.new(:transport => 'http_post').destination_uses_url?
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              it "knows jabber transport uses emails" do
         
     | 
| 
      
 17 
     | 
    
         
            +
                assert Astrotrain::Mapping.new(:transport => 'jabber').destination_uses_email?
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              describe "matching" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                before :all do
         
     | 
| 
      
 22 
     | 
    
         
            +
                  Astrotrain::Mapping.transaction do
         
     | 
| 
      
 23 
     | 
    
         
            +
                    Astrotrain::Mapping.all.destroy!
         
     | 
| 
      
 24 
     | 
    
         
            +
                    @mapping1 = Astrotrain::Mapping.create!(:email_user => '*')
         
     | 
| 
      
 25 
     | 
    
         
            +
                    @mapping2 = Astrotrain::Mapping.create!(:email_user => 'abc*')
         
     | 
| 
      
 26 
     | 
    
         
            +
                    @mapping3 = Astrotrain::Mapping.create!(:email_user => 'abc')
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                it "matches email user" do
         
     | 
| 
      
 31 
     | 
    
         
            +
                  assert_equal [@mapping3, "abc@#{Astrotrain::Mapping.default_domain}"], 
         
     | 
| 
      
 32 
     | 
    
         
            +
                    Astrotrain::Mapping.match(["abc@#{Astrotrain::Mapping.default_domain}"])
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                it "matches email partial wildcard" do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  assert_equal [@mapping2, "abc1@#{Astrotrain::Mapping.default_domain}"], 
         
     | 
| 
      
 37 
     | 
    
         
            +
                    Astrotrain::Mapping.match(["abc1@#{Astrotrain::Mapping.default_domain}"])
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                it "matches email full wildcard" do
         
     | 
| 
      
 41 
     | 
    
         
            +
                  assert_equal [@mapping1, "def@#{Astrotrain::Mapping.default_domain}"],
         
     | 
| 
      
 42 
     | 
    
         
            +
                    Astrotrain::Mapping.match(["def@#{Astrotrain::Mapping.default_domain}"])
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              describe "finding reply text" do
         
     | 
| 
      
 47 
     | 
    
         
            +
                delim = "xyz"
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                before :all do
         
     | 
| 
      
 50 
     | 
    
         
            +
                  @mapping = Astrotrain::Mapping.new :separator => delim
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                {
         
     | 
| 
      
 54 
     | 
    
         
            +
                  "foo bar\n\n#{delim}\nfoo" => "foo bar", 
         
     | 
| 
      
 55 
     | 
    
         
            +
                  "foo bar\n\nOn 13-Jan-09, at 9:17 AM, ENTP Support wrote:\n\n\n#{delim}\nfoo" => "foo bar", 
         
     | 
| 
      
 56 
     | 
    
         
            +
                  "foo bar\n\nOn Jan 13, 2009 at 2:20 PM, ENTP Support wrote:\n\n\n#{delim}\nfoo" => "foo bar", 
         
     | 
| 
      
 57 
     | 
    
         
            +
                  "foo bar\n\nAm Tuesday 02 December 2008 schrieb Ricky Bobby:\n\n\n#{delim}\nfoo" => "foo bar", 
         
     | 
| 
      
 58 
     | 
    
         
            +
                  "foo bar\n\nLe 18 sept. 08 à 09:08, theRemix a écrit :\n\n\n#{delim}\nfoo" => "foo bar", 
         
     | 
| 
      
 59 
     | 
    
         
            +
                  "foo\n  bar\nbaz\n\n\n> #{delim}" => "foo\n  bar\nbaz",
         
     | 
| 
      
 60 
     | 
    
         
            +
                  "foo\n\nbar\nbaz\n#{delim}" =>  "foo",
         
     | 
| 
      
 61 
     | 
    
         
            +
                  "foo\n  bar\nbaz2\n\n\n\n" => "foo\n  bar\nbaz2",
         
     | 
| 
      
 62 
     | 
    
         
            +
                  ">> #{delim}\n foo bar" => ""
         
     | 
| 
      
 63 
     | 
    
         
            +
                }.each do |before, after|
         
     | 
| 
      
 64 
     | 
    
         
            +
                  it "parses #{after.inspect} from #{before.inspect}" do
         
     | 
| 
      
 65 
     | 
    
         
            +
                    assert_equal after, @mapping.find_reply_from(before)
         
     | 
| 
      
 66 
     | 
    
         
            +
                  end
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              describe "validation" do
         
     | 
| 
      
 71 
     | 
    
         
            +
                before :all do
         
     | 
| 
      
 72 
     | 
    
         
            +
                  Astrotrain::Mapping.all.destroy!
         
     | 
| 
      
 73 
     | 
    
         
            +
                  @mapping = Astrotrain::Mapping.create!(:email_user => 'xyz')
         
     | 
| 
      
 74 
     | 
    
         
            +
                end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                %w(abc abc_def abc-123 abc+def abc%def foo* *).each do |valid|
         
     | 
| 
      
 77 
     | 
    
         
            +
                  it "allows #email_user == #{valid.inspect}" do
         
     | 
| 
      
 78 
     | 
    
         
            +
                    assert valid_mapping(:email_user => valid).valid?
         
     | 
| 
      
 79 
     | 
    
         
            +
                  end
         
     | 
| 
      
 80 
     | 
    
         
            +
                end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                %w(a\ b abc! abc? foo*bar *foo).each do |valid|
         
     | 
| 
      
 83 
     | 
    
         
            +
                  it "rejects #email_user == #{valid.inspect}" do
         
     | 
| 
      
 84 
     | 
    
         
            +
                    assert !valid_mapping(:email_user => valid).valid?
         
     | 
| 
      
 85 
     | 
    
         
            +
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                %w(abc abc_def abc-123 abc.def).each do |valid|
         
     | 
| 
      
 89 
     | 
    
         
            +
                  it "allows #email_domain == #{valid.inspect}" do
         
     | 
| 
      
 90 
     | 
    
         
            +
                    assert valid_mapping(:email_domain => valid).valid?
         
     | 
| 
      
 91 
     | 
    
         
            +
                  end
         
     | 
| 
      
 92 
     | 
    
         
            +
                end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                %w(a\ b abc! abc? abc+def abc%def).each do |valid|
         
     | 
| 
      
 95 
     | 
    
         
            +
                  it "rejects #email_domain == #{valid.inspect}" do
         
     | 
| 
      
 96 
     | 
    
         
            +
                    assert !valid_mapping(:email_domain => valid).valid?
         
     | 
| 
      
 97 
     | 
    
         
            +
                  end
         
     | 
| 
      
 98 
     | 
    
         
            +
                end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                %w(http://example.com https://example.com http://example.com/ http://example.com/foo http://rick:monkey@example.com http://example.com:4567/foo http://localhost:3000/foo http://localhost/foo http://example.com/foo/bar.html http://example.com/foo?blah[baz]=1).each do |valid|
         
     | 
| 
      
 101 
     | 
    
         
            +
                  it "allows #destination == #{valid.inspect} for http_post transport" do
         
     | 
| 
      
 102 
     | 
    
         
            +
                    assert valid_mapping(:destination => valid, :transport => 'http_post').valid?
         
     | 
| 
      
 103 
     | 
    
         
            +
                  end
         
     | 
| 
      
 104 
     | 
    
         
            +
                end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                %w(foo@bar.com).each do |valid|
         
     | 
| 
      
 107 
     | 
    
         
            +
                  it "allows #destination == #{valid.inspect} for jabber transport" do
         
     | 
| 
      
 108 
     | 
    
         
            +
                    assert valid_mapping(:destination => valid, :transport => 'jabber').valid?
         
     | 
| 
      
 109 
     | 
    
         
            +
                  end
         
     | 
| 
      
 110 
     | 
    
         
            +
                end
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                it "rejects duplicate email_user/email_domain" do
         
     | 
| 
      
 113 
     | 
    
         
            +
                  assert !valid_mapping(:email_user => @mapping.email_user).valid?
         
     | 
| 
      
 114 
     | 
    
         
            +
                end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                it "accepts unique email_user" do
         
     | 
| 
      
 117 
     | 
    
         
            +
                  assert valid_mapping.valid?
         
     | 
| 
      
 118 
     | 
    
         
            +
                end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                it "accepts unique email_user + email_domain" do
         
     | 
| 
      
 121 
     | 
    
         
            +
                  assert valid_mapping(:email_user => @mapping.email_user, :email_domain => 'example.com').valid?
         
     | 
| 
      
 122 
     | 
    
         
            +
                end
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
              protected
         
     | 
| 
      
 125 
     | 
    
         
            +
                def valid_mapping(options = {})
         
     | 
| 
      
 126 
     | 
    
         
            +
                  Astrotrain::Mapping.new({:destination => 'http://foo.com', :email_user => 'sample', :transport => 'http_post'}.update(options))
         
     | 
| 
      
 127 
     | 
    
         
            +
                end
         
     | 
| 
      
 128 
     | 
    
         
            +
              end
         
     | 
| 
      
 129 
     | 
    
         
            +
            end
         
     |