Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clicking links in emails not working properly #108

Open
gucki opened this issue Jul 4, 2012 · 7 comments
Open

clicking links in emails not working properly #108

gucki opened this issue Jul 4, 2012 · 7 comments

Comments

@gucki
Copy link

gucki commented Jul 4, 2012

Is there any special reason why not navigating to the "raw" url but wrapping it in request_uri instead? This is causing troubles when trying to follow absolte urls (with domain and/ or port).

    def click_email_link_matching(regex, email = current_email)
      url = links_in_email(email).detect { |link| link =~ regex }
      raise "No link found matching #{regex.inspect} in #{email.default_part_body}" unless url
      visit request_uri(url)
    end

    def click_first_link_in_email(email = current_email)
      link = links_in_email(email).first
      visit request_uri(link)
    end
@bmabey
Copy link
Collaborator

bmabey commented Jul 5, 2012

I think the original reason was due to some initial limitations of webrat. I have pull request #46 that allows for using the absolute URL but I haven't looked at it in a bit.. If you can verify that the patch in #46 fixes your problem then I'd feel better about merging it in.

@gucki
Copy link
Author

gucki commented Aug 14, 2012

I'd really prefer if we could check is this "hack" is still needed. As far as I can tell I never had any problems with any valid url I passed to visit. Can we give it a try?

@glebm
Copy link

glebm commented Oct 31, 2012

email_spec at the moment breaks subdomain routing

My fix is this

# Working around issue here: https://github.com/bmabey/email-spec/issues/108
def request_uri(link)
  link && URI::parse(link)
end

def parse_email_for_anchor_text_link(email, link_text)
  if textify_images(email.default_part_body) =~ %r{<a[^>]*href=['"]?([^'"]*)['"]?[^>]*?>[^<]*?#{link_text}[^<]*?</a>}
    CGI::unescape_html $1
  end
end

@Papipo
Copy link

Papipo commented Feb 18, 2013

It's not just subdomains. I am using capybara and custom domains (full domains, not just subdomains), and email_spec uses relative paths, so I can't hit specific domains from emails.

@vidaica
Copy link

vidaica commented Apr 12, 2013

links_in_email seems not to function properly. In my case, the returned urls contain an extra single quote ( ' ) at the end if the urls in the links are wrapped with single quotes.

@janxious
Copy link

janxious commented Feb 9, 2017

It also doesn't seemingly work properly if you anchor tag has anything in it other than an href attribute.

@StephenHogsten
Copy link

parse_email_for_anchor_text_link always joins with a ? - basically assume the path has only a query. If there is a fragment it treats it like a query

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants