Implemented existence checking in user state.
diff --git a/_states/jenkins_user.py b/_states/jenkins_user.py
index 29a2f64..6f37ec3 100644
--- a/_states/jenkins_user.py
+++ b/_states/jenkins_user.py
@@ -13,7 +13,7 @@
 instance.setAuthorizationStrategy(strategy)
 instance.save()
 print(result)
-"""  #noqa
+"""  # noqa
 
 
 create_user_groovy = u"""\
@@ -21,7 +21,6 @@
 print(result)
 """  # noqa
 
-
 def present(name, username, password, admin=False):
     """
     Main jenkins users state method
@@ -45,15 +44,29 @@
         ret['changes'][username] = status
         ret['comment'] = 'User %s %s' % (username, status.lower())
     else:
-        call_result = __salt__['jenkins_common.call_groovy_script'](create_admin_groovy if admin else create_user_groovy, {"username": username, "password":password})
-        if call_result["code"] == 200 and call_result["msg"].count(username) == 1:
-            status = "CREATED" if not admin else "ADMIN CREATED"
-            ret['changes'][username] = status
+        # try to call jenkins script api with given user and password to prove
+        # his existence
+        user_exists_result = __salt__['jenkins_common.call_groovy_script'](
+            "print(\"TEST\")", {"username": username}, username, password,[200, 401])
+        user_exists = user_exists_result and user_exists_result[
+            "code"] == 200 and user_exists_result["msg"].count("TEST") == 1
+        if not user_exists:
+            call_result = __salt__['jenkins_common.call_groovy_script'](
+                create_admin_groovy if admin else create_user_groovy, {"username": username, "password": password})
+            if call_result["code"] == 200 and call_result["msg"].count(username) == 1:
+                status = "CREATED" if not admin else "ADMIN CREATED"
+                ret['changes'][username] = status
+                ret['comment'] = 'User %s %s' % (username, status.lower())
+                result = True
+            else:
+                status = 'FAILED'
+                logger.error("Jenkins user API call failure: %s",
+                             call_result["msg"])
+                ret['comment'] = 'Jenkins user API call failure: %s' % (call_result[
+                                                                        "msg"])
+        else:
+            status = "EXISTS"
             ret['comment'] = 'User %s %s' % (username, status.lower())
             result = True
-        else:
-            status = 'FAILED'
-            logger.error("Jenkins user API call failure: %s", call_result["msg"])
-            ret['comment'] = 'Jenkins user API call failure: %s' % (call_result["msg"])
     ret['result'] = None if test else result
     return ret