talktome 1.3.1 → 1.3.2
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.
- checksums.yaml +4 -4
- data/lib/talktome/app.rb +7 -4
- data/lib/talktome/strategy/email.rb +1 -0
- data/lib/talktome/version.rb +1 -1
- data/spec/app/test_app.rb +39 -0
- data/spec/fixtures/support/email.md +6 -0
- metadata +4 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4ae24a6e1def52e8f6b89ba6dd6ade0f5dc7d41182d591a573215c1a75d49603
         | 
| 4 | 
            +
              data.tar.gz: ad8ca169cd9619c21e0af5af7f862b65730105f95276881449ab1877626dcefb
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: fee101432b406429b2c8761311e9616181766cd7904db0678adba35b32ebd26c3d709cd90cc1173545ac27d6ff310ca7edf284de3fc31215d831ea4d47ed7d6b
         | 
| 7 | 
            +
              data.tar.gz: 6827ee15c92c7d6487aaac7b7c850c2e327a2bbc95a84f213f16593fb7017219779f6163ea702cf50e8d1010c3fffa8a69181890581e8427c7c5472a19477110
         | 
    
        data/lib/talktome/app.rb
    CHANGED
    
    | @@ -19,9 +19,10 @@ module Talktome | |
| 19 19 | 
             
                  @import finitio/data
         | 
| 20 20 | 
             
                  Email = String(s | s =~ /^[^@]+@[^@]+$/ )
         | 
| 21 21 | 
             
                  {
         | 
| 22 | 
            -
                    to | 
| 23 | 
            -
                    reply_to | 
| 24 | 
            -
                     | 
| 22 | 
            +
                    to          :? Email
         | 
| 23 | 
            +
                    reply_to    :? Email
         | 
| 24 | 
            +
                    in_reply_to :? String
         | 
| 25 | 
            +
                    ...         :  .Object
         | 
| 25 26 | 
             
                  }
         | 
| 26 27 | 
             
                FIO
         | 
| 27 28 |  | 
| @@ -34,6 +35,7 @@ module Talktome | |
| 34 35 | 
             
                    user     = load_user_from_info!
         | 
| 35 36 | 
             
                    settings.talktome.talktome(action, user, info.merge(allvars: as_array, subject: subject, footer: footer), [:email]){|email|
         | 
| 36 37 | 
             
                      email.reply_to = info[:reply_to] if info.has_key?(:reply_to)
         | 
| 38 | 
            +
                      email.in_reply_to = info[:in_reply_to] if info.has_key?(:in_reply_to)
         | 
| 37 39 | 
             
                    }
         | 
| 38 40 | 
             
                    [ 200, { "Content-Type" => "text/plain"}, ["Ok"] ]
         | 
| 39 41 | 
             
                  rescue JSON::ParserError
         | 
| @@ -56,7 +58,8 @@ module Talktome | |
| 56 58 | 
             
                end
         | 
| 57 59 |  | 
| 58 60 | 
             
                def load_user_from_info!
         | 
| 59 | 
            -
                   | 
| 61 | 
            +
                  protected_fields = [:to, :in_reply_to]
         | 
| 62 | 
            +
                  if (info.keys & protected_fields).any?
         | 
| 60 63 | 
             
                    secret = Talktome.env('TALKTOME_BEARER_SECRET')
         | 
| 61 64 | 
             
                    fail!("Missing secret", 400) unless secret
         | 
| 62 65 | 
             
                    fail!("Invalid secret", 401) unless "Bearer #{secret}" == env["HTTP_AUTHORIZATION"]
         | 
    
        data/lib/talktome/version.rb
    CHANGED
    
    
    
        data/spec/app/test_app.rb
    CHANGED
    
    | @@ -163,6 +163,45 @@ module Talktome | |
| 163 163 | 
             
                  end
         | 
| 164 164 | 
             
                end
         | 
| 165 165 |  | 
| 166 | 
            +
                context 'POST /support/, regarding the In-Reply-To' do
         | 
| 167 | 
            +
                  class ::Talktome::Message::Template
         | 
| 168 | 
            +
                    def raise_on_context_miss?
         | 
| 169 | 
            +
                      false
         | 
| 170 | 
            +
                    end
         | 
| 171 | 
            +
                  end
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                  it 'forbids the usage of :in_reply_to unless a secret is provided' do
         | 
| 174 | 
            +
                    post "/support/", {
         | 
| 175 | 
            +
                      in_reply_to: '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@company.com>',
         | 
| 176 | 
            +
                  }.to_json, { "CONTENT_TYPE" => "application/json" }
         | 
| 177 | 
            +
                    expect(last_response.status).to eql(400)
         | 
| 178 | 
            +
                    expect(Mail::TestMailer.deliveries.length).to eql(0)
         | 
| 179 | 
            +
                  end
         | 
| 180 | 
            +
             | 
| 181 | 
            +
                  it 'does not allow setting the :in_reply_to without a valid AUTH token' do
         | 
| 182 | 
            +
                    Talktome.set_env('TALKTOME_BEARER_SECRET', "Invalid secret") do
         | 
| 183 | 
            +
                      post "/support/", {
         | 
| 184 | 
            +
                        in_reply_to: '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@company.com>',
         | 
| 185 | 
            +
                      }.to_json, { "CONTENT_TYPE" => "application/json" }
         | 
| 186 | 
            +
                      expect(last_response.status).to eql(401)
         | 
| 187 | 
            +
                      expect(Mail::TestMailer.deliveries.length).to eql(0)
         | 
| 188 | 
            +
                    end
         | 
| 189 | 
            +
                  end
         | 
| 190 | 
            +
             | 
| 191 | 
            +
                  it "lets override it by passing a inReplyTo field" do
         | 
| 192 | 
            +
                    Talktome.set_env('TALKTOME_BEARER_SECRET', "Some secret") do
         | 
| 193 | 
            +
                      header 'Authorization', 'Bearer Some secret'
         | 
| 194 | 
            +
                      post "/support/", {
         | 
| 195 | 
            +
                        to: 'client@company.com',
         | 
| 196 | 
            +
                        in_reply_to: '<F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@company.com>',
         | 
| 197 | 
            +
                      }.to_json, { "CONTENT_TYPE" => "application/json" }
         | 
| 198 | 
            +
                      expect(last_response).to be_ok
         | 
| 199 | 
            +
                      expect(Mail::TestMailer.deliveries.length).to eql(1)
         | 
| 200 | 
            +
                      expect(Mail::TestMailer.deliveries.first.in_reply_to).to eql('F6E2D0B4-CC35-4A91-BA4C-C7C712B10C13@company.com')
         | 
| 201 | 
            +
                    end
         | 
| 202 | 
            +
                  end
         | 
| 203 | 
            +
                end
         | 
| 204 | 
            +
             | 
| 166 205 | 
             
                context 'POST /multi-lingual/en/' do
         | 
| 167 206 |  | 
| 168 207 | 
             
                  it 'works' do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: talktome
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.3. | 
| 4 | 
            +
              version: 1.3.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Bernard Lambeau
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021- | 
| 11 | 
            +
            date: 2021-12-05 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rake
         | 
| @@ -194,6 +194,7 @@ files: | |
| 194 194 | 
             
            - spec/fixtures/contact-us/email.md
         | 
| 195 195 | 
             
            - spec/fixtures/layouts/email.html
         | 
| 196 196 | 
             
            - spec/fixtures/multi-lingual/en/email.md
         | 
| 197 | 
            +
            - spec/fixtures/support/email.md
         | 
| 197 198 | 
             
            - spec/fixtures/welcome/email.md
         | 
| 198 199 | 
             
            - spec/fixtures/welcome/footer.mustache
         | 
| 199 200 | 
             
            - spec/message/test_initialize.rb
         | 
| @@ -222,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 222 223 | 
             
                - !ruby/object:Gem::Version
         | 
| 223 224 | 
             
                  version: '0'
         | 
| 224 225 | 
             
            requirements: []
         | 
| 225 | 
            -
            rubygems_version: 3.2. | 
| 226 | 
            +
            rubygems_version: 3.2.32
         | 
| 226 227 | 
             
            signing_key: 
         | 
| 227 228 | 
             
            specification_version: 4
         | 
| 228 229 | 
             
            summary: Talktome helps you talk to users by email, messaging, sms, etc.
         |