Fixing integration tests race conditions
diff --git a/test/integration/README.md b/test/integration/README.md
new file mode 100644
index 0000000..0361d32
--- /dev/null
+++ b/test/integration/README.md
@@ -0,0 +1,24 @@
+Integrations Test
+--
+
+Running these integration tests needs the following resources to be set up.
+
+Action
+---
+* Name: hello 
+
+function main() {
+   return {payload: 'Hello world'};
+}
+
+Action
+---
+* Name: tests 
+
+function main() {
+   return {payload: 'Hello world'};
+}
+
+Trigger
+---
+* Name: sample
diff --git a/test/integration/actions.test.js b/test/integration/actions.test.js
index e54e74d..612bb55 100644
--- a/test/integration/actions.test.js
+++ b/test/integration/actions.test.js
@@ -51,24 +51,7 @@
   })
 })
 
-test('get an action', t => {
-  const params = {api: API_URL, api_key: API_KEY, namespace: NAMESPACE}
-
-  const errors = err => {
-    console.log(err)
-    t.fail()
-  }
-  const actions = new Actions(params)
-  return actions.list().then(result => {
-    return actions.get({actionName: result[0].name}).then(action_result => {
-      t.is(action_result.name, result[0].name)
-      t.is(action_result.namespace, NAMESPACE)
-      t.pass()
-    }).catch(errors)
-  }).catch(errors)
-})
-
-test('create and delete an action', t => {
+test('create, get and delete an action', t => {
   const params = {api: API_URL, api_key: API_KEY, namespace: NAMESPACE}
 
   const errors = err => {
@@ -82,8 +65,12 @@
     t.is(result.namespace, NAMESPACE)
     t.is(result.exec.kind, 'nodejs')
     t.is(result.exec.code, 'function main() {return {payload:"testing"}}')
-    t.pass()
-    return actions.delete({actionName: 'random_action_test'}).catch(errors)
+    return actions.get({actionName: 'random_action_test'}).then(action_result => {
+      t.is(action_result.name, 'random_action_test')
+      t.is(action_result.namespace, NAMESPACE)
+      t.pass()
+      return actions.delete({actionName: 'random_action_test'}).catch(errors)
+    }).catch(errors)
   }).catch(errors)
 })
 
@@ -96,15 +83,15 @@
   }
 
   const actions = new Actions(params)
-  return actions.create({actionName: 'random_update_test', action: 'function main() {return {payload:"testing"}}'}).then(result => {
-    t.is(result.name, 'random_update_test')
+  return actions.create({actionName: 'random_update_tested', action: 'function main() {return {payload:"testing"}}'}).then(result => {
+    t.is(result.name, 'random_update_tested')
     t.is(result.namespace, NAMESPACE)
     t.is(result.exec.kind, 'nodejs')
     t.is(result.exec.code, 'function main() {return {payload:"testing"}}')
-    return actions.update({actionName: 'random_update_test', action: 'update test'}).then(update_result => {
+    return actions.update({actionName: 'random_update_tested', action: 'update test'}).then(update_result => {
       t.is(update_result.exec.code, 'update test')
       t.pass()
-      return actions.delete({actionName: 'random_update_test'}).catch(errors)
+      return actions.delete({actionName: 'random_update_tested'}).catch(errors)
     }).catch(errors)
   }).catch(errors)
 })
diff --git a/test/integration/packages.test.js b/test/integration/packages.test.js
index 64b6cbf..9258bac 100644
--- a/test/integration/packages.test.js
+++ b/test/integration/packages.test.js
@@ -51,24 +51,7 @@
   })
 })
 
-test('get an package', t => {
-  const params = {api: API_URL, api_key: API_KEY, namespace: NAMESPACE}
-
-  const errors = err => {
-    console.log(err)
-    t.fail()
-  }
-  const packages = new Packages(params)
-  return packages.list().then(result => {
-    return packages.get({packageName: result[0].name}).then(package_result => {
-      t.is(package_result.name, result[0].name)
-      t.is(package_result.namespace, NAMESPACE)
-      t.pass()
-    }).catch(errors)
-  }).catch(errors)
-})
-
-test('create and delete an package', t => {
+test('create, get and delete an package', t => {
   const params = {api: API_URL, api_key: API_KEY, namespace: NAMESPACE}
 
   const errors = err => {
@@ -82,8 +65,12 @@
     t.is(result.namespace, NAMESPACE)
     t.same(result.annotations, [])
     t.is(result.version, '0.0.1')
-    t.pass()
-    return packages.delete({packageName: 'random_package_test'}).catch(errors)
+    return packages.get({packageName: 'random_package_test'}).then(package_result => {
+      t.is(package_result.name, 'random_package_test')
+      t.is(package_result.namespace, NAMESPACE)
+      t.pass()
+      return packages.delete({packageName: 'random_package_test'}).catch(errors)
+    }).catch(errors)
   }).catch(errors)
 })
 
@@ -96,15 +83,15 @@
   }
 
   const packages = new Packages(params)
-  return packages.create({packageName: 'random_update_test'}).then(result => {
-    t.is(result.name, 'random_update_test')
+  return packages.create({packageName: 'random_package_update_test'}).then(result => {
+    t.is(result.name, 'random_package_update_test')
     t.is(result.namespace, NAMESPACE)
     t.same(result.annotations, [])
     t.is(result.version, '0.0.1')
-    return packages.update({packageName: 'random_update_test'}).then(update_result => {
+    return packages.update({packageName: 'random_package_update_test'}).then(update_result => {
       t.is(update_result.version, '0.0.2')
       t.pass()
-      return packages.delete({packageName: 'random_update_test'}).catch(errors)
+      return packages.delete({packageName: 'random_package_update_test'}).catch(errors)
     }).catch(errors)
   }).catch(errors)
 })
diff --git a/test/integration/rules.test.js b/test/integration/rules.test.js
index af762ae..9ec805e 100644
--- a/test/integration/rules.test.js
+++ b/test/integration/rules.test.js
@@ -51,24 +51,7 @@
   })
 })
 
-test('get an rule', t => {
-  const params = {api: API_URL, api_key: API_KEY, namespace: NAMESPACE}
-
-  const errors = err => {
-    console.log(err)
-    t.fail()
-  }
-  const rules = new Rules(params)
-  return rules.list().then(result => {
-    return rules.get({ruleName: result[0].name}).then(rule_result => {
-      t.is(rule_result.name, result[0].name)
-      t.is(rule_result.namespace, NAMESPACE)
-      t.pass()
-    }).catch(errors)
-  }).catch(errors)
-})
-
-test('create and delete an rule', t => {
+test('create, get and delete an rule', t => {
   const params = {api: API_URL, api_key: API_KEY, namespace: NAMESPACE}
 
   const errors = err => {
@@ -82,8 +65,12 @@
     t.is(result.namespace, NAMESPACE)
     t.is(result.action, 'hello')
     t.is(result.trigger, 'sample')
-    t.pass()
-    return rules.delete({ruleName: 'random_rule_test'}).catch(errors)
+    return rules.get({ruleName: result.name}).then(rule_result => {
+      t.is(rule_result.name, result.name)
+      t.is(rule_result.namespace, NAMESPACE)
+      t.pass()
+      return rules.delete({ruleName: 'random_rule_test'}).catch(errors)
+    }).catch(errors)
   }).catch(errors)
 })
 
@@ -108,27 +95,3 @@
     }).catch(errors)
   }).catch(errors)
 })
-
-test('create, enable and disable rule', t => {
-  const params = {api: API_URL, api_key: API_KEY, namespace: NAMESPACE}
-
-  const errors = err => {
-    console.log(err)
-    t.fail()
-  }
-
-  const rules = new Rules(params)
-  return rules.create({ruleName: 'random_enable_test', action: 'hello', trigger: 'sample'}).then(result => {
-    t.is(result.name, 'random_enable_test')
-    t.is(result.status, 'inactive')
-    t.is(result.namespace, NAMESPACE)
-    t.is(result.action, 'hello')
-    t.is(result.trigger, 'sample')
-    return rules.enable({ruleName: 'random_enable_test'}).then(update_result => {
-      return rules.disable({ruleName: 'random_enable_test'}).then(() => {
-        t.pass()
-        return rules.delete({ruleName: 'random_enable_test'}).catch(errors)
-      })
-    }).catch(errors)
-  }).catch(errors)
-})
diff --git a/test/integration/triggers.test.js b/test/integration/triggers.test.js
index 7c900fc..bcf77c5 100644
--- a/test/integration/triggers.test.js
+++ b/test/integration/triggers.test.js
@@ -51,24 +51,7 @@
   })
 })
 
-test('get an trigger', t => {
-  const params = {api: API_URL, api_key: API_KEY, namespace: NAMESPACE}
-
-  const errors = err => {
-    console.log(err)
-    t.fail()
-  }
-  const triggers = new Triggers(params)
-  return triggers.list().then(result => {
-    return triggers.get({triggerName: result[0].name}).then(trigger_result => {
-      t.is(trigger_result.name, result[0].name)
-      t.is(trigger_result.namespace, NAMESPACE)
-      t.pass()
-    }).catch(errors)
-  }).catch(errors)
-})
-
-test('create and delete an trigger', t => {
+test('create, get and delete an trigger', t => {
   const params = {api: API_URL, api_key: API_KEY, namespace: NAMESPACE}
 
   const errors = err => {
@@ -84,7 +67,12 @@
     t.is(result.version, '0.0.1')
     t.same(result.limits, {})
     t.pass()
-    return triggers.delete({triggerName: 'random_trigger_test'}).catch(errors)
+    return triggers.get({triggerName: result.name}).then(trigger_result => {
+      t.is(trigger_result.name, result.name)
+      t.is(trigger_result.namespace, NAMESPACE)
+      t.pass()
+      return triggers.delete({triggerName: result.name}).catch(errors)
+    }).catch(errors)
   }).catch(errors)
 })
 
@@ -97,16 +85,16 @@
   }
 
   const triggers = new Triggers(params)
-  return triggers.create({triggerName: 'random_update_test'}).then(result => {
-    t.is(result.name, 'random_update_test')
+  return triggers.create({triggerName: 'random_create_update_test'}).then(result => {
+    t.is(result.name, 'random_create_update_test')
     t.is(result.namespace, NAMESPACE)
     t.same(result.annotations, [])
     t.is(result.version, '0.0.1')
     t.same(result.limits, {})
-    return triggers.update({triggerName: 'random_update_test'}).then(update_result => {
+    return triggers.update({triggerName: 'random_create_update_test'}).then(update_result => {
       t.is(update_result.version, '0.0.2')
       t.pass()
-      return triggers.delete({triggerName: 'random_update_test'}).catch(errors)
+      return triggers.delete({triggerName: 'random_create_update_test'}).catch(errors)
     }).catch(errors)
   }).catch(errors)
 })