Skip to content

Instantly share code, notes, and snippets.

@AdamSaleh
Created November 7, 2013 14:48
Show Gist options
  • Save AdamSaleh/7355798 to your computer and use it in GitHub Desktop.
Save AdamSaleh/7355798 to your computer and use it in GitHub Desktop.
(defn read-it
"Tries to read a role based on the name"
[role]
(let [get-list (fn []
(->>
(browser/find-elements {:xpath "//div[@id='roles_tree']//ul[@class='filterable']//li"})
(map browser/text)
(remove #(or (= "Permissions" %) (= "Users" %) (empty? %)))))
user-names (do
(nav/go-to role)
(browser/click ::users)
(->>
(get-list)
(map #(clojure.string/replace % #"^\+ Add\n" ""))
doall))
orgs (do
(nav/go-to role)
(browser/click ::permissions)
(->>
(get-list)
(map #(clojure.string/split % #"( \()|(\))"))
(map (fn [[a b]] [a (Integer/parseInt b)]))
(filter (fn [[a b]] (> b 0)))
(map (fn [[a b]] a))
doall))
org-perm (doall (for [org orgs]
(do
(nav/go-to role)
(browser/click ::permissions)
(browser/click (permission-org org))
[org (doall (map #(clojure.string/replace % #"^Remove\n" "") (get-list)))])))
perms
(doall (for [[org plist] org-perm]
[org
(for [p plist]
(do
(nav/go-to role)
(browser/click ::permissions)
(browser/click (permission-org org))
(browser/click (permission-perm p))
(zipmap [:name :description :resource-type :verbs]
(take-nth 2
(rest
(clojure.string/split
(browser/text "//div[@class='permission_detail']")
#"\n")
)))))]))
]
[user-names perms]
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment