class TestActLogin

Public Instance Methods

test_open_site() click to toggle source
# File vendor/qwik/lib/qwik/act-login.rb, line 388
def test_open_site
  t_add_user
  t_site_open # OPEN site

  # See FrontPage. Check login_status before login.
  res = session('/test/') {|req|
    req.cookies.clear
  }
  ok_title 'FrontPage'
  ok_in(['Login'], "//div[@class='adminmenu']//a")
  ok_in([[:a, {:href=>'.login'}, 'Login'],
          ["\n"], ["\n"]],
        "//div[@class='adminmenu']")

  # You can see login page before login.
  res = session('/test/.login') {|req|
    req.cookies.clear
  }
  ok_title 'Login'
end
test_private_site() click to toggle source
# File vendor/qwik/lib/qwik/act-login.rb, line 284
    def test_private_site
      t_add_user

      # See FrontPage.
      res = session('/test/') {|req|
        req.cookies.clear
      }
      ok_title 'Login'
      ok_xp([:meta, {:content=>'1; url=/test/.login',
                'http-equiv'=>'Refresh'}],
            '//meta[2]')

      # See login page.
      res = session('/test/.login') {|req|
        req.cookies.clear
      }
      ok_title 'Login'
      ok_xp([:input, {:istyle=>'3', :name=>'user', :class=>'focus'}],
            '//input')
#      ok_xp([:a, {:href=>'.getpass'}, [:em, 'Get Password']], '//a')
      assert_cookie({'user'=>'', 'pass'=>''}, @res.cookies)

      # Get password by e-mail.  See act-getpass.

      # Invalid mail address
      res = session('/test/.login?user=test@example') {|req|
        req.cookies.clear
      }
      assert_text('Invalid ID (E-mail) or Password.', 'p')

      # Invalid password
      res = session('/test/.login?user=user@e.com&pass=wrongpassword') {|req|
        req.cookies.clear
      }
      assert_text('Invalid ID (E-mail) or Password.', 'p')

      # Login by GET method. Set cookies and redirect to FrontPage.
      res = session('/test/.login?user=user@e.com&pass=95988593') {|req|
        req.cookies.clear
      }
      ok_title 'Login Success'
      #assert_cookie({'user'=>'user@e.com', 'pass'=>'95988593'}, @res.cookies)
      eq 'sid', @res.cookies[0].name
      eq 32, @res.cookies[0].value.length
      #pw('//head')
      ok_xp([:meta, {:content=>'0; url=FrontPage.html',
                'http-equiv'=>'Refresh'}],
            '//meta[2]') # force redirect for security reason.

      # Set the cookie
      res = session('/test/') {|req|
        req.cookies.update({'user'=>'user@e.com', 'pass'=>'95988593'})
      }
      ok_title 'FrontPage'
      assert_cookie({'user'=>'user@e.com', 'pass'=>'95988593'},
                    @res.cookies)
      #eq 'sid', @res.cookies[0].name
      #eq 32, @res.cookies[0].value.length

      # Use POST method to set user and pass by queries.
      res = session('POST /test/.login?user=user@e.com&pass=95988593') {|req|
        req.cookies.clear
      }
      ok_title 'Login Success'
      eq 200, @res.status
      #assert_cookie({'user'=>'user@e.com', 'pass'=>'95988593'}, @res.cookies)
      eq 'sid', @res.cookies[0].name
      eq 32, @res.cookies[0].value.length
      ok_xp([:meta, {:content=>'0; url=FrontPage.html',
                'http-equiv'=>'Refresh'}],
            '//meta[2]') # force redirect for security reason.

      # test_login_status
      res = session('/test/')
      ok_in(['user', ' | ', [:em, 'user@e.com'],
              ' (', [:a, {:href=>'.logout'}, 'Logout'], ')'],
            "//span[@class='loginstatus']")

      # See TextFormat
      res = session('/test/TextFormat.html')

      # See the Logout page.
      res = session('/test/.logout')
      ok_title 'Log out Confirm'
      ok_xp([:form, {:action=>'.logout', :method=>'POST'},
              [:input, {:value=>'yes', :type=>'hidden',
                  :name=>'confirm'}], [:input, {:value=>'Log out',
                  :type=>'submit', :class=>'focus'}]], '//form')
      ok_xp([:input, {:value=>'yes', :type=>'hidden', :name=>'confirm'}],
            '//input')
      ok_xp([:input, {:value=>'Log out',
                :type=>'submit', :class=>'focus'}], '//input[2]')

      # Confirm Logout.
      res = session('/test/.logout?confirm=yes')
      ok_title 'Log out done.'
      assert_text('Log out done.', 'h1')
      ok_xp([:p, [:a, {:href=>'FrontPage.html'}, 'Go back']],
            "//div[@class='section']/p")
      assert_cookie({'user'=>'', 'pass'=>'', 'sid'=>''}, @res.cookies)
      #eq 'sid', @res.cookies[0].name
      #eq 32, @res.cookies[0].value.length
    end