diff --git a/storm.module b/storm.module
index 57b0806..89ed0f1 100644
--- a/storm.module
+++ b/storm.module
@@ -1085,27 +1085,21 @@ function storm_icon_delete_node($node, $params=array()) {
 
 function storm_icon_add($path, $item, $params=array()) {
   global $user;
-  $type = $item->type;
-  $af = $type .'_access';
-  if (!$af('create', $item, $user)) return '';
+  if (!node_access('create', $item, $user)) return '';
   $attributes = array('class' => 'popups-form');
   return storm_icon_l('application_add', $path, t('Add'), '', $params, $attributes);
 }
 
 function storm_icon_edit($path, $item, $params=array()) {
   global $user;
-  $type = $item->type;
-  $af = $type .'_access';
-  if (!$af('update', $item, $user)) return '';
+  if (!node_access('update', $item, $user)) return '';
   $attributes = array('class' => 'popups-form');
   return storm_icon_l('application_edit', $path, t('Edit'), '', $params, $attributes);
 }
 
 function storm_icon_delete($path, $item, $params=array()) {
   global $user;
-  $type = $item->type;
-  $af = $type .'_access';
-  if (!$af('delete', $item, $user)) return '';
+  if (!node_access('delete', $item, $user)) return '';
   $attributes = array('class' => 'popups-form');
   return storm_icon_l('application_delete', $path, t('Delete'), '', $params, $attributes);
 }
diff --git a/storm_handler_field_operation.inc b/storm_handler_field_operation.inc
index 8cd1859..ded363d 100644
--- a/storm_handler_field_operation.inc
+++ b/storm_handler_field_operation.inc
@@ -34,12 +34,14 @@ class storm_handler_field_operation extends views_handler_field_node_link {
   }
 
   function render($values) {
+    global $user;
     // ensure user has access to edit this node.
     $node = new stdClass();
     $node->nid = $values->{$this->aliases['nid']};
     $node->uid = $values->{$this->aliases['uid']};
     $node->type = $values->{$this->aliases['type']};
     $node->format = $values->{$this->aliases['format']};
+    //TODO add stormorganization_nid and assigned_nid!
     $node->status = 1; // unpublished nodes ignore access control
     if ($this->options['display_icons']) {
       $value = "";
@@ -52,18 +54,14 @@ class storm_handler_field_operation extends views_handler_field_node_link {
       return $value;
     }
     else {
-      global $user;
-      $type = $node->type;
-      $af = $type .'_access';
-
       $value = "";
-      if ($af('update', $node, $user)) {
+      if (node_access('update', $node)) {
         $value .= l(t('edit'), "node/$node->nid/edit", array('query' => drupal_get_destination()));
       }
-      if (!empty($value)) {
-        $value .= '&nbsp;|&nbsp;';
-      }
-      if ($af('delete', $node, $user)) {
+      if (node_access('delete', $node)) {
+        if (!empty($value)) {
+          $value .= '&nbsp;|&nbsp;';
+        }
         $value .= l(t('delete'), "node/$node->nid/delete", array('query' => drupal_get_destination()));
       }
 
diff --git a/stormexpense/stormexpense.test b/stormexpense/stormexpense.test
index 9acda06..69fabce 100644
--- a/stormexpense/stormexpense.test
+++ b/stormexpense/stormexpense.test
@@ -14,7 +14,7 @@ class StormexpenseTestCase extends DrupalWebTestCase {
   }
 
   public function setUp() {
-    parent::setUp('storm', 'stormorganization', 'stormproject', 'stormtask', 'stormticket', 'stormexpense');
+    parent::setUp('storm', 'stormorganization', 'stormproject', 'stormtask', 'stormticket', 'stormexpense', 'stormperson');
   }
 
   public function testStormexpenseAccess() {
@@ -62,5 +62,130 @@ class StormexpenseTestCase extends DrupalWebTestCase {
     // Create a team
     $this->drupalGet('storm/expenses/report/std/en');
   }
+
+  public function testStormexpenseList() {
+    // Create and login user
+    $userAll = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm expense: access', 'Storm expense: add', 'Storm expense: view all', 'Storm expense: edit all', 'Storm expense: delete all', 'Storm person: add'));
+    $userOrg = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm expense: access', 'Storm expense: add', 'Storm expense: view of user organization', 'Storm expense: edit of user organization', 'Storm expense: delete of user organization'));
+    $userOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm expense: access', 'Storm expense: add', 'Storm expense: view own', 'Storm expense: edit own', 'Storm expense: delete own'));
+    $userViewAllEditOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm expense: access', 'Storm expense: add', 'Storm expense: view all', 'Storm expense: edit own', 'Storm expense: delete own'));
+
+    $this->drupalLogin($userAll);
+
+    // Create organization
+    $org = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org, t('Save'));
+    $org = node_load(array('title' => $org['title']));
+
+    // Create organization
+    $org2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org2, t('Save'));
+    $org2 = node_load(array('title' => $org2['title']));
+
+    // Create stormperson with organization to userOrg
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userOrg->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+
+    // Create expenses
+    $exp1 = array(
+      'organization_nid' => $org->nid,
+      'title' => $this->randomName(32),
+    );
+    $this->drupalPost('node/add/stormexpense', $exp1, t('Save'));
+    $exp1 = node_load(array('title' => $exp1['title']));
+
+    $this->drupalLogin($userOwn);
+    $exp2 = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org->nid,
+    );
+    $this->drupalPost('node/add/stormexpense', $exp2, t('Save'));
+    $exp2 = node_load(array('title' => $exp2['title']));
+
+    $this->drupalLogin($userViewAllEditOwn);
+    $exp3 = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org2->nid,
+    );
+    $this->drupalPost('node/add/stormexpense', $exp3, t('Save'));
+    $exp3 = node_load(array('title' => $exp3['title']));
+
+    //test for 'Storm invoice: view all'
+    $this->drupalLogin($userAll);
+    $this->drupalGet('storm/expenses');
+
+    $this->assertLink($exp1->title, 0, 'The Expense appears on the list');
+    $this->assertRaw('node/'.$exp1->nid.'/edit', 'The Expense edit icon appears on the list');
+    $this->assertRaw('node/'.$exp1->nid.'/delete', 'The Expense edit icon appears on the list');
+
+    $this->assertLink($exp2->title, 0, 'The Expense appears on the list');
+    $this->assertRaw('node/'.$exp2->nid.'/edit', 'The Expense edit icon appears on the list');
+    $this->assertRaw('node/'.$exp2->nid.'/delete', 'The Expense edit icon appears on the list');
+
+    $this->assertLink($exp3->title, 0, 'The Expense appears on the list');
+    $this->assertRaw('node/'.$exp3->nid.'/edit', 'The Expense edit icon appears on the list');
+    $this->assertRaw('node/'.$exp3->nid.'/delete', 'The Expense edit icon appears on the list');
+
+    //test for 'Storm invoice: view of user organization'
+    $this->drupalLogin($userOrg);
+    $this->drupalGet('storm/expenses');
+
+    $this->assertLink($exp1->title, 0, 'The Expense appears on the list');
+    $this->assertRaw('node/'.$exp1->nid.'/edit', 'The Expense edit icon appears on the list');
+    $this->assertRaw('node/'.$exp1->nid.'/delete', 'The Expense edit icon appears on the list');
+
+    $this->assertLink($exp2->title, 0, 'The Expense appears on the list');
+    $this->assertRaw('node/'.$exp2->nid.'/edit', 'The Expense edit icon appears on the list');
+    $this->assertRaw('node/'.$exp2->nid.'/delete', 'The Expense edit icon appears on the list');
+
+    $this->assertNoLink($exp3->title, 'The Expense appears not on the list');
+    $this->assertNoRaw('node/'.$exp3->nid.'/edit', 'The Expense edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$exp3->nid.'/delete', 'The Expense edit icon appears not on the list');
+
+    //test for 'Storm invoice: view own'
+    $this->drupalLogin($userOwn);
+    $this->drupalGet('storm/expenses');
+
+    $this->assertNoLink($exp1->title, 'The Expense appears not on the list');
+    $this->assertNoRaw('node/'.$exp1->nid.'/edit', 'The Expense edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$exp1->nid.'/delete', 'The Expense edit icon appears not on the list');
+
+    $this->assertLink($exp2->title, 0, 'The Expense appears on the list');
+    $this->assertRaw('node/'.$exp2->nid.'/edit', 'The Expense edit icon appears on the list');
+    $this->assertRaw('node/'.$exp2->nid.'/delete', 'The Expense edit icon appears on the list');
+
+    $this->assertNoLink($exp3->title, 'The Expense appears not on the list');
+    $this->assertNoRaw('node/'.$exp3->nid.'/edit', 'The Expense edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$exp3->nid.'/delete', 'The Expense edit icon appears not on the list');
+
+
+    //test for 'Storm invoice: view all', 'Storm invoice: edit own'
+    $this->drupalLogin($userViewAllEditOwn);
+    $this->drupalGet('storm/expenses');
+
+    $this->assertLink($exp1->title, 0, 'The Expense appears on the list');
+    $this->assertNoRaw('node/'.$exp1->nid.'/edit', 'The Expense edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$exp1->nid.'/delete', 'The Expense edit icon appears not on the list');
+
+    $this->assertLink($exp2->title, 0, 'The Expense appears on the list');
+    $this->assertNoRaw('node/'.$exp2->nid.'/edit', 'The Expense edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$exp2->nid.'/delete', 'The Expense edit icon appears not on the list');
+
+    $this->assertLink($exp3->title, 0, 'The Expense appears on the list');
+    $this->assertRaw('node/'.$exp3->nid.'/edit', 'The Expense edit icon appears on the list');
+    $this->assertRaw('node/'.$exp3->nid.'/delete', 'The Expense edit icon appears on the list');
+
+  }
 }
 
diff --git a/stormexpense/stormexpense.theme.inc b/stormexpense/stormexpense.theme.inc
index bf4b8a6..e935840 100644
--- a/stormexpense/stormexpense.theme.inc
+++ b/stormexpense/stormexpense.theme.inc
@@ -7,14 +7,6 @@
 function theme_stormexpense_list($header, $expenses, $totals) {
   $rows = array();
   foreach ($expenses as $expense) {
-    $n = new stdClass();
-    $n->nid = $expense->nid;
-    $n->uid = $expense->uid;
-    $n->organization_nid = $expense->organization_nid;
-    $n->project_nid = $expense->project_nid;
-    $n->task_nid = $expense->task_nid;
-    $n->ticket_nid = $expense->ticket_nid;
-    $n->type = 'stormexpense';
     $rows[] = array(
       l($expense->organization_title, 'node/'. $expense->organization_nid),
       l($expense->project_title, 'node/'. $expense->project_nid),
@@ -22,7 +14,7 @@ function theme_stormexpense_list($header, $expenses, $totals) {
       format_date($expense->expensedate, 'custom', 'Y-m-d'),
       array('data' => sprintf('%.2f', $expense->total), 'align' => 'right'),
       array(
-        'data' => storm_icon_edit_node($n, $_GET) .'&nbsp;'. storm_icon_delete_node($n, $_GET),
+        'data' => storm_icon_edit_node($expense, $_GET) .'&nbsp;'. storm_icon_delete_node($expense, $_GET),
         'class' => 'storm_list_operations',
       ),
     );
diff --git a/storminvoice/storminvoice.admin.inc b/storminvoice/storminvoice.admin.inc
index 4209f8d..6539409 100644
--- a/storminvoice/storminvoice.admin.inc
+++ b/storminvoice/storminvoice.admin.inc
@@ -63,7 +63,7 @@ function storminvoice_list() {
     ),
   );
 
-  $s  = "SELECT n.title, sin.* FROM {node} AS n INNER JOIN {storminvoice} AS sin ON n.vid=sin.vid WHERE n.status=1 AND n.type='storminvoice' ";
+  $s  = "SELECT n.title, n.type, n.uid, sin.* FROM {node} AS n INNER JOIN {storminvoice} AS sin ON n.vid=sin.vid WHERE n.status=1 AND n.type='storminvoice' ";
 
   $s_totals_topay = "SELECT SUM(amount) amount, SUM(tax1) tax1, SUM(tax2) tax2, SUM(total) total FROM {storminvoice} sin
   INNER JOIN {node} n ON n.vid=sin.vid WHERE n.status=1 AND n.type='storminvoice' AND sin.paymentdate=0";
diff --git a/storminvoice/storminvoice.test b/storminvoice/storminvoice.test
index 9b13645..86d6dcb 100644
--- a/storminvoice/storminvoice.test
+++ b/storminvoice/storminvoice.test
@@ -14,7 +14,7 @@ class StorminvoiceTestCase extends DrupalWebTestCase {
   }
 
   public function setUp() {
-    parent::setUp('storm', 'stormorganization', 'stormproject', 'storminvoice');
+    parent::setUp('storm', 'stormorganization', 'stormproject', 'storminvoice', 'stormperson');
   }
 
   public function testStorminvoiceAccess() {
@@ -55,6 +55,149 @@ class StorminvoiceTestCase extends DrupalWebTestCase {
     $this->drupalPost('node/add/stormorganization', $org, t('Save'));
     $this->drupalPost('node/add/storminvoice', $inv, t('Save'));
 
-    $this->assertText(t('Invoice @title has been created.', array('@title' => $inv['title'])));;
+    $this->assertText(t('Invoice @title has been created.', array('@title' => $inv['title'])));
+  }
+
+  public function testStorminvoiceList() {
+    // Create and login user
+    $userAll = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm invoice: access', 'Storm invoice: add', 'Storm invoice: view all', 'Storm invoice: edit all', 'Storm invoice: delete all', 'Storm person: add'));
+    $userOrg = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm invoice: access', 'Storm invoice: add', 'Storm invoice: view of user organization', 'Storm invoice: edit of user organization', 'Storm invoice: delete of user organization'));
+    $userOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm invoice: access', 'Storm invoice: add', 'Storm invoice: view own', 'Storm invoice: edit own', 'Storm invoice: delete own'));
+    $userViewAllEditOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm invoice: access', 'Storm invoice: add', 'Storm invoice: view all', 'Storm invoice: edit own', 'Storm invoice: delete own'));
+
+    $this->drupalLogin($userAll);
+
+    // Create organization
+    $org = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org, t('Save'));
+    $org = node_load(array('title' => $org['title']));
+
+    // Create organization
+    $org2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org2, t('Save'));
+    $org2 = node_load(array('title' => $org2['title']));
+
+    // Create stormperson with organization to userOrg
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userOrg->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+
+    // Create invoices
+    $inv1 = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org->nid,
+      'items_0_description' => $this->randomName(32),
+      'items_0_amount' => '.28',
+      'items_0_tax1app' => '1',
+      'items_0_tax1percent' => '5',
+      'items_0_tax2app' => '2',
+      'items_0_tax2percent' => '7.5',
+    );
+    $this->drupalPost('node/add/storminvoice', $inv1, t('Save'));
+    $inv1 = node_load(array('title' => $inv1['title']));
+
+    $this->drupalLogin($userOwn);
+    $inv2 = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org->nid,
+      'items_0_description' => $this->randomName(32),
+      'items_0_amount' => '.28',
+      'items_0_tax1app' => '1',
+      'items_0_tax1percent' => '5',
+      'items_0_tax2app' => '2',
+      'items_0_tax2percent' => '7.5',
+    );
+    $this->drupalPost('node/add/storminvoice', $inv2, t('Save'));
+    $inv2 = node_load(array('title' => $inv2['title']));
+
+    $this->drupalLogin($userViewAllEditOwn);
+    $inv3 = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org2->nid,
+      'items_0_description' => $this->randomName(32),
+      'items_0_amount' => '.28',
+      'items_0_tax1app' => '1',
+      'items_0_tax1percent' => '5',
+      'items_0_tax2app' => '2',
+      'items_0_tax2percent' => '7.5',
+    );
+    $this->drupalPost('node/add/storminvoice', $inv3, t('Save'));
+    $inv3 = node_load(array('title' => $inv3['title']));
+
+    //test for 'Storm invoice: view all'
+    $this->drupalLogin($userAll);
+    $this->drupalGet('storm/invoices');
+
+    $this->assertLink($inv1->title, 0, 'The Invoice appears on the list');
+    $this->assertRaw('node/'.$inv1->nid.'/edit', 'The Invoice edit icon appears on the list');
+    $this->assertRaw('node/'.$inv1->nid.'/delete', 'The Invoice edit icon appears on the list');
+
+    $this->assertLink($inv2->title, 0, 'The Invoice appears on the list');
+    $this->assertRaw('node/'.$inv2->nid.'/edit', 'The Invoice edit icon appears on the list');
+    $this->assertRaw('node/'.$inv2->nid.'/delete', 'The Invoice edit icon appears on the list');
+
+    $this->assertLink($inv3->title, 0, 'The Invoice appears on the list');
+    $this->assertRaw('node/'.$inv3->nid.'/edit', 'The Invoice edit icon appears on the list');
+    $this->assertRaw('node/'.$inv3->nid.'/delete', 'The Invoice edit icon appears on the list');
+
+    //test for 'Storm invoice: view of user organization'
+    $this->drupalLogin($userOrg);
+    $this->drupalGet('storm/invoices');
+
+    $this->assertLink($inv1->title, 0, 'The Invoice appears on the list');
+    $this->assertRaw('node/'.$inv1->nid.'/edit', 'The Invoice edit icon appears on the list');
+    $this->assertRaw('node/'.$inv1->nid.'/delete', 'The Invoice edit icon appears on the list');
+
+    $this->assertLink($inv2->title, 0, 'The Invoice appears on the list');
+    $this->assertRaw('node/'.$inv2->nid.'/edit', 'The Invoice edit icon appears on the list');
+    $this->assertRaw('node/'.$inv2->nid.'/delete', 'The Invoice edit icon appears on the list');
+
+    $this->assertNoLink($inv3->title, 'The Invoice appears not on the list');
+    $this->assertNoRaw('node/'.$inv3->nid.'/edit', 'The Invoice edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$inv3->nid.'/delete', 'The Invoice edit icon appears not on the list');
+
+    //test for 'Storm invoice: view own'
+    $this->drupalLogin($userOwn);
+    $this->drupalGet('storm/invoices');
+
+    $this->assertNoLink($inv1->title, 'The Invoice appears not on the list');
+    $this->assertNoRaw('node/'.$inv1->nid.'/edit', 'The Invoice edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$inv1->nid.'/delete', 'The Invoice edit icon appears not on the list');
+
+    $this->assertLink($inv2->title, 0, 'The Invoice appears on the list');
+    $this->assertRaw('node/'.$inv2->nid.'/edit', 'The Invoice edit icon appears on the list');
+    $this->assertRaw('node/'.$inv2->nid.'/delete', 'The Invoice edit icon appears on the list');
+
+    $this->assertNoLink($inv3->title, 'The Invoice appears not on the list');
+    $this->assertNoRaw('node/'.$inv3->nid.'/edit', 'The Invoice edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$inv3->nid.'/delete', 'The Invoice edit icon appears not on the list');
+
+
+    //test for 'Storm invoice: view all', 'Storm invoice: edit own'
+    $this->drupalLogin($userViewAllEditOwn);
+    $this->drupalGet('storm/invoices');
+
+    $this->assertLink($inv1->title, 0, 'The Invoice appears on the list');
+    $this->assertNoRaw('node/'.$inv1->nid.'/edit', 'The Invoice edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$inv1->nid.'/delete', 'The Invoice edit icon appears not on the list');
+
+    $this->assertLink($inv2->title, 0, 'The Invoice appears on the list');
+    $this->assertNoRaw('node/'.$inv2->nid.'/edit', 'The Invoice edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$inv2->nid.'/delete', 'The Invoice edit icon appears not on the list');
+
+    $this->assertLink($inv3->title, 0, 'The Invoice appears on the list');
+    $this->assertRaw('node/'.$inv3->nid.'/edit', 'The Invoice edit icon appears on the list');
+    $this->assertRaw('node/'.$inv3->nid.'/delete', 'The Invoice edit icon appears on the list');
+
   }
 }
diff --git a/storminvoice/storminvoice.theme.inc b/storminvoice/storminvoice.theme.inc
index 142c837..d330251 100644
--- a/storminvoice/storminvoice.theme.inc
+++ b/storminvoice/storminvoice.theme.inc
@@ -25,12 +25,6 @@
 function theme_storminvoice_list($header, $invoices, $itemsperpage, $totals_topay, $totals_paid, $totals) {
   $rows = array();
   foreach ($invoices as $invoice) {
-    $n = new stdClass();
-    $n->nid = $invoice->nid;
-    $n->uid = $invoice->uid;
-    $n->organization_nid = $invoice->organization_nid;
-    $n->project_nid = $invoice->project_nid;
-    $n->type = 'storminvoice';
 
     $invoice->status = 'open';
     if ($invoice->paymentdate) {
@@ -55,7 +49,7 @@ function theme_storminvoice_list($header, $invoices, $itemsperpage, $totals_topa
       format_date($invoice->requestdate, 'custom', 'Y-m-d'),
       array('data' => sprintf('%.2f', $invoice->total), 'align' => 'right'),
       array(
-        'data' => storm_icon_edit_node($n, $_GET) .'&nbsp;'. storm_icon_delete_node($n, $_GET),
+        'data' => storm_icon_edit_node($invoice, $_GET) .'&nbsp;'. storm_icon_delete_node($invoice, $_GET),
         'class' => 'storm_list_operations',
       ),
     );
diff --git a/stormnote/stormnote.admin.inc b/stormnote/stormnote.admin.inc
index e6dfd9d..6620422 100644
--- a/stormnote/stormnote.admin.inc
+++ b/stormnote/stormnote.admin.inc
@@ -68,7 +68,7 @@ function stormnote_list() {
     ),
   );
 
-  $s  = "SELECT n.title, sno.* FROM {node} AS n INNER JOIN {stormnote} AS sno ON n.vid=sno.vid WHERE n.status=1 AND n.type='stormnote' ";
+  $s  = "SELECT n.title, n.type, n.uid, sno.* FROM {node} AS n INNER JOIN {stormnote} AS sno ON n.vid=sno.vid WHERE n.status=1 AND n.type='stormnote' ";
 
   $where = array();
   $args = array();
diff --git a/stormnote/stormnote.test b/stormnote/stormnote.test
index e650301..f843d07 100644
--- a/stormnote/stormnote.test
+++ b/stormnote/stormnote.test
@@ -14,7 +14,7 @@ class StormnoteTestCase extends DrupalWebTestCase {
   }
 
   public function setUp() {
-    parent::setUp('storm', 'stormorganization', 'stormproject', 'stormtask', 'stormnote');
+    parent::setUp('storm', 'stormorganization', 'stormproject', 'stormtask', 'stormnote', 'stormperson');
   }
 
   public function testStormnoteAccess() {
@@ -61,4 +61,132 @@ class StormnoteTestCase extends DrupalWebTestCase {
 
     $this->assertText(t('Note @title has been created.', array('@title' => $note['title'])));;
   }
+  
+  public function testStormnoteList() {
+    // Create and login user
+    $userAll = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm note: access', 'Storm note: add', 'Storm note: view all', 'Storm note: edit all', 'Storm note: delete all', 'Storm person: add'));
+    $userOrg = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm note: access', 'Storm note: add', 'Storm note: view of user organization', 'Storm note: edit of user organization', 'Storm note: delete of user organization'));
+    $userOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm note: access', 'Storm note: add', 'Storm note: view own', 'Storm note: edit own', 'Storm note: delete own'));
+    $userViewAllEditOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm note: access', 'Storm note: add', 'Storm note: view all', 'Storm note: edit own', 'Storm note: delete own'));
+
+    $this->drupalLogin($userAll);
+
+    // Create organization
+    $org = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org, t('Save'));
+    $org = node_load(array('title' => $org['title']));
+
+    // Create organization
+    $org2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org2, t('Save'));
+    $org2 = node_load(array('title' => $org2['title']));
+
+    // Create stormperson with organization to userOrg
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userOrg->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+
+    // Create notes
+    $note1 = array(
+      'organization_nid' => $org->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormnote', $note1, t('Save'));
+    $note1 = node_load(array('title' => $note1['title']));
+
+    $this->drupalLogin($userOwn);
+    $note2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+    );
+    $this->drupalPost('node/add/stormnote', $note2, t('Save'));
+    $note2 = node_load(array('title' => $note2['title']));
+
+    $this->drupalLogin($userViewAllEditOwn);
+    $note3 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org2->nid,
+    );
+    $this->drupalPost('node/add/stormnote', $note3, t('Save'));
+    $note3 = node_load(array('title' => $note3['title']));
+
+    //test for 'Storm note: view all'
+    $this->drupalLogin($userAll);
+    $this->drupalGet('storm/notes');
+
+    $this->assertLink($note1->title, 0, 'The Note appears on the list');
+    $this->assertRaw('node/'.$note1->nid.'/edit', 'The Note edit icon appears on the list');
+    $this->assertRaw('node/'.$note1->nid.'/delete', 'The Note delete icon appears on the list');
+
+    $this->assertLink($note2->title, 0, 'The Note appears on the list');
+    $this->assertRaw('node/'.$note2->nid.'/edit', 'The Note edit icon appears on the list');
+    $this->assertRaw('node/'.$note2->nid.'/delete', 'The Note delete icon appears on the list');
+
+    $this->assertLink($note3->title, 0, 'The Note appears on the list');
+    $this->assertRaw('node/'.$note3->nid.'/edit', 'The Note edit icon appears on the list');
+    $this->assertRaw('node/'.$note3->nid.'/delete', 'The Note delete icon appears on the list');
+
+    //test for 'Storm note: view of user organization'
+    $this->drupalLogin($userOrg);
+    $this->drupalGet('storm/notes');
+
+    $this->assertLink($note1->title, 0, 'The Note appears on the list');
+    $this->assertRaw('node/'.$note1->nid.'/edit', 'The Note edit icon appears on the list');
+    $this->assertRaw('node/'.$note1->nid.'/delete', 'The Note delete icon appears on the list');
+
+    $this->assertLink($note2->title, 0, 'The Note appears on the list');
+    $this->assertRaw('node/'.$note2->nid.'/edit', 'The Note edit icon appears on the list');
+    $this->assertRaw('node/'.$note2->nid.'/delete', 'The Note delete icon appears on the list');
+
+    $this->assertNoLink($note3->title, 'The Note appears not on the list');
+    $this->assertNoRaw('node/'.$note3->nid.'/edit', 'The Note edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$note3->nid.'/delete', 'The Note delete icon appears not on the list');
+
+    //test for 'Storm note: view own'
+    $this->drupalLogin($userOwn);
+    $this->drupalGet('storm/notes');
+
+    $this->assertNoLink($note1->title, 'The Note appears not on the list');
+    $this->assertNoRaw('node/'.$note1->nid.'/edit', 'The Note edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$note1->nid.'/delete', 'The Note delete icon appears not on the list');
+
+    $this->assertLink($note2->title, 0, 'The Note appears on the list');
+    $this->assertRaw('node/'.$note2->nid.'/edit', 'The Note edit icon appears on the list');
+    $this->assertRaw('node/'.$note2->nid.'/delete', 'The Note delete icon appears on the list');
+
+    $this->assertNoLink($note3->title, 'The Note appears not on the list');
+    $this->assertNoRaw('node/'.$note3->nid.'/edit', 'The Note edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$note3->nid.'/delete', 'The Note delete icon appears not on the list');
+
+
+    //test for 'Storm note: view all', 'Storm note: edit own'
+    $this->drupalLogin($userViewAllEditOwn);
+    $this->drupalGet('storm/notes');
+
+    $this->assertLink($note1->title, 0, 'The Note appears on the list');
+    $this->assertNoRaw('node/'.$note1->nid.'/edit', 'The Note edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$note1->nid.'/delete', 'The Note edit icon appears not on the list');
+
+    $this->assertLink($note2->title, 0, 'The Note appears on the list');
+    $this->assertNoRaw('node/'.$note2->nid.'/edit', 'The Note edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$note2->nid.'/delete', 'The Note delete icon appears not on the list');
+
+    $this->assertLink($note3->title, 0, 'The Note appears on the list');
+    $this->assertRaw('node/'.$note3->nid.'/edit', 'The Note edit icon appears on the list');
+    $this->assertRaw('node/'.$note3->nid.'/delete', 'The Note delete icon appears on the list');
+
+  }  
 }
diff --git a/stormnote/stormnote.theme.inc b/stormnote/stormnote.theme.inc
index 16a7285..d8723d5 100644
--- a/stormnote/stormnote.theme.inc
+++ b/stormnote/stormnote.theme.inc
@@ -8,20 +8,13 @@ function theme_stormnote_list($header, $notes) {
   $rows = array();
 
   foreach ($notes as $note) {
-    $n = new stdClass();
-    $n->nid = $note->nid;
-    $n->uid = $note->uid;
-    $n->organization_nid = $note->organization_nid;
-    $n->project_nid = $note->project_nid;
-    $n->task_nid = $note->task_nid;
-    $n->type = 'stormnote';
     $rows[] = array(
       l($note->organization_title, 'node/'. $note->organization_nid),
       l($note->project_title, 'node/'. $note->project_nid),
       l($note->task_title, 'node/'. $note->task_nid),
       l($note->title, 'node/'. $note->nid),
       array(
-        'data' => storm_icon_edit_node($n, $_GET) .'&nbsp;'. storm_icon_delete_node($n, $_GET),
+        'data' => storm_icon_edit_node($note, $_GET) .'&nbsp;'. storm_icon_delete_node($note, $_GET),
         'class' => 'storm_list_operations',
       ),
     );
diff --git a/stormorganization/stormorganization.test b/stormorganization/stormorganization.test
index de55ed4..1fd7b27 100644
--- a/stormorganization/stormorganization.test
+++ b/stormorganization/stormorganization.test
@@ -14,7 +14,7 @@ class StormorganizationTestCase extends DrupalWebTestCase {
   }
 
   public function setUp() {
-    parent::setUp('storm', 'stormorganization');
+    parent::setUp('storm', 'stormorganization', 'stormperson');
     $privileged_user = $this->drupalCreateUser(array('Storm organization: add'));
     $this->drupalLogin($privileged_user);
   }
@@ -42,5 +42,115 @@ class StormorganizationTestCase extends DrupalWebTestCase {
     $this->drupalPost('node/add/stormorganization', $edit, t('Save'));
     $this->assertText(t('Organization @title has been created.', array('@title' => $edit['title'])));
   }
+  
+  public function testStormorganizationList() {
+    // Create and login user
+    $userAll = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: access', 'Storm organization: view all', 'Storm organization: edit all', 'Storm organization: delete all', 'Storm person: add'));
+    $userOrg = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: access', 'Storm organization: view belonged', 'Storm organization: edit belonged'));
+    $userOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: access', 'Storm organization: view own', 'Storm organization: edit own', 'Storm organization: delete own'));
+    $userViewAllEditOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: access', 'Storm organization: view all', 'Storm organization: edit own', 'Storm organization: delete own'));
+
+    $this->drupalLogin($userAll);
+
+    // Create organization
+    $organization1 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $organization1, t('Save'));
+    $organization1 = node_load(array('title' => $organization1['title']));
+
+    // Create stormperson with organization to userOrg
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $organization1->nid,
+      'user_name' => $userOrg->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+
+    // Create organization
+    $this->drupalLogin($userOwn);
+    $organization2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $organization2, t('Save'));
+    $organization2 = node_load(array('title' => $organization2['title']));
+
+    $this->drupalLogin($userViewAllEditOwn);
+    $organization3 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $organization3, t('Save'));
+    $organization3 = node_load(array('title' => $organization3['title']));
+
+    //test for 'Storm organization: view all'
+    $this->drupalLogin($userAll);
+    $this->drupalGet('storm/organizations');
+
+    $this->assertLink($organization1->title, 0, 'The Organization appears on the list');
+    $this->assertRaw('node/'.$organization1->nid.'/edit', 'The Organization edit icon appears on the list');
+    $this->assertRaw('node/'.$organization1->nid.'/delete', 'The Organization edit icon appears on the list');
+
+    $this->assertLink($organization2->title, 0, 'The Organization appears on the list');
+    $this->assertRaw('node/'.$organization2->nid.'/edit', 'The Organization edit icon appears on the list');
+    $this->assertRaw('node/'.$organization2->nid.'/delete', 'The Organization edit icon appears on the list');
+
+    $this->assertLink($organization3->title, 0, 'The Organization appears on the list');
+    $this->assertRaw('node/'.$organization3->nid.'/edit', 'The Organization edit icon appears on the list');
+    $this->assertRaw('node/'.$organization3->nid.'/delete', 'The Organization edit icon appears on the list');
+
+    //test for 'Storm organization: view belonged'
+    $this->drupalLogin($userOrg);
+    $this->drupalGet('storm/organizations');
+
+    $this->assertLink($organization1->title, 0, 'The Organization appears on the list');
+    $this->assertRaw('node/'.$organization1->nid.'/edit', 'The Organization edit icon appears on the list');
+    $this->assertNoRaw('node/'.$organization1->nid.'/delete', 'The Organization edit icon appears not on the list');
+
+    $this->assertNoLink($organization2->title, 'The Organization appears on the list');
+    $this->assertNoRaw('node/'.$organization2->nid.'/edit', 'The Organization edit icon appears on the list');
+    $this->assertNoRaw('node/'.$organization2->nid.'/delete', 'The Organization edit icon appears not on the list');
+
+    $this->assertNoLink($organization3->title, 'The Organization appears not on the list');
+    $this->assertNoRaw('node/'.$organization3->nid.'/edit', 'The Organization edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$organization3->nid.'/delete', 'The Organization edit icon appears not on the list');
+
+    //test for 'Storm organization: view own'
+    $this->drupalLogin($userOwn);
+    $this->drupalGet('storm/organizations');
+
+    $this->assertNoLink($organization1->title, 'The Organization appears not on the list');
+    $this->assertNoRaw('node/'.$organization1->nid.'/edit', 'The Organization edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$organization1->nid.'/delete', 'The Organization edit icon appears not on the list');
+
+    $this->assertLink($organization2->title, 0, 'The Organization appears on the list');
+    $this->assertRaw('node/'.$organization2->nid.'/edit', 'The Organization edit icon appears on the list');
+    $this->assertRaw('node/'.$organization2->nid.'/delete', 'The Organization edit icon appears on the list');
+
+    $this->assertNoLink($organization3->title, 'The Organization appears not on the list');
+    $this->assertNoRaw('node/'.$organization3->nid.'/edit', 'The Organization edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$organization3->nid.'/delete', 'The Organization edit icon appears not on the list');
+
+
+    //test for 'Storm organization: view all', 'Storm organization: edit own'
+    $this->drupalLogin($userViewAllEditOwn);
+    $this->drupalGet('storm/organizations');
+
+    $this->assertLink($organization1->title, 0, 'The Organization appears on the list');
+    $this->assertNoRaw('node/'.$organization1->nid.'/edit', 'The Organization edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$organization1->nid.'/delete', 'The Organization edit icon appears not on the list');
+
+    $this->assertLink($organization2->title, 0, 'The Organization appears on the list');
+    $this->assertNoRaw('node/'.$organization2->nid.'/edit', 'The Organization edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$organization2->nid.'/delete', 'The Organization edit icon appears not on the list');
+
+    $this->assertLink($organization3->title, 0, 'The Organization appears on the list');
+    $this->assertRaw('node/'.$organization3->nid.'/edit', 'The Organization edit icon appears on the list');
+    $this->assertRaw('node/'.$organization3->nid.'/delete', 'The Organization edit icon appears on the list');
+
+  }  
 
 }
diff --git a/stormorganization/stormorganization.theme.inc b/stormorganization/stormorganization.theme.inc
index 1dd3921..04633f0 100644
--- a/stormorganization/stormorganization.theme.inc
+++ b/stormorganization/stormorganization.theme.inc
@@ -10,16 +10,11 @@ function theme_stormorganization_list($header, $organizations) {
   $rows = array();
   $countries = storm_attributes_bydomain('Country');
   foreach ($organizations as $key => $organization) {
-    $n = new stdClass();
-    $n->nid = $organization->nid;
-    $n->uid = $organization->uid;
-    $n->type = 'stormorganization';
-
     $rows[] = array(
       l($organization->title, 'node/'. $organization->nid),
       check_plain($countries['values'][$organization->country]),
       array(
-        'data' => storm_icon_edit_node($n, $_GET) .'&nbsp;'. storm_icon_delete_node($n, $_GET),
+        'data' => storm_icon_edit_node($organization, $_GET) .'&nbsp;'. storm_icon_delete_node($organization, $_GET),
         'class' => 'storm_list_operations',
       ),
     );
diff --git a/stormperson/stormperson.test b/stormperson/stormperson.test
index b6c2032..463442c 100644
--- a/stormperson/stormperson.test
+++ b/stormperson/stormperson.test
@@ -48,4 +48,177 @@ class StormpersonTestCase extends DrupalWebTestCase {
     $this->drupalPost('node/add/stormperson', $person, t('Save'));
     $this->assertText(t('Person @title has been created.', array('@title' => $person['title'])));
   }
+  
+  public function testStormpersonList() {
+    // Create and login user
+    $userAll = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm person: access', 'Storm person: add', 'Storm person: view all', 'Storm person: edit all', 'Storm person: delete all'));
+    $userOrg = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm person: access', 'Storm person: add', 'Storm person: view of user organization', 'Storm person: edit of user organization', 'Storm person: delete of user organization'));
+    $userOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm person: access', 'Storm person: add', 'Storm person: view own', 'Storm person: edit own', 'Storm person: delete own'));
+    $userLinked = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm person: access', 'Storm person: add', 'Storm person: view when linked to own user account', 'Storm person: edit when linked to own user account', 'Storm person: delete when linked to own user account'));
+    $userViewAllEditOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm person: access', 'Storm person: add', 'Storm person: view all', 'Storm person: edit own', 'Storm person: delete own'));
+
+    $this->drupalLogin($userAll);
+
+    // Create organization
+    $org = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org, t('Save'));
+    $org = node_load(array('title' => $org['title']));
+
+    // Create organization
+    $org2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org2, t('Save'));
+    $org2 = node_load(array('title' => $org2['title']));
+
+    // Create stormperson with organization to userOrg
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userOrg->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+
+    // Create persons
+    $person1 = array(
+      'organization_nid' => $org->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormperson', $person1, t('Save'));
+    $person1 = node_load(array('title' => $person1['title']));
+
+    $person4 = array(
+      'organization_nid' => $org->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'user_name' => $userLinked->name,
+    );
+    $this->drupalPost('node/add/stormperson', $person4, t('Save'));
+    $person4 = node_load(array('title' => $person4['title']));
+
+    $this->drupalLogin($userOwn);
+    $person2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+    );
+    $this->drupalPost('node/add/stormperson', $person2, t('Save'));
+    $person2 = node_load(array('title' => $person2['title']));
+
+    $this->drupalLogin($userViewAllEditOwn);
+    $person3 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org2->nid,
+    );
+    $this->drupalPost('node/add/stormperson', $person3, t('Save'));
+    $person3 = node_load(array('title' => $person3['title']));
+
+    //test for 'Storm person: view all'
+    $this->drupalLogin($userAll);
+    $this->drupalGet('storm/people');
+
+    $this->assertLink($person1->title, 0, 'The Person appears on the list');
+    $this->assertRaw('node/'.$person1->nid.'/edit', 'The Person edit icon appears on the list');
+    $this->assertRaw('node/'.$person1->nid.'/delete', 'The Person edit icon appears on the list');
+
+    $this->assertLink($person2->title, 0, 'The Person appears on the list');
+    $this->assertRaw('node/'.$person2->nid.'/edit', 'The Person edit icon appears on the list');
+    $this->assertRaw('node/'.$person2->nid.'/delete', 'The Person edit icon appears on the list');
+
+    $this->assertLink($person3->title, 0, 'The Person appears on the list');
+    $this->assertRaw('node/'.$person3->nid.'/edit', 'The Person edit icon appears on the list');
+    $this->assertRaw('node/'.$person3->nid.'/delete', 'The Person edit icon appears on the list');
+
+    $this->assertLink($person4->title, 0, 'The Person appears on the list');
+    $this->assertRaw('node/'.$person4->nid.'/edit', 'The Person edit icon appears on the list');
+    $this->assertRaw('node/'.$person4->nid.'/delete', 'The Person edit icon appears on the list');
+
+    //test for 'Storm person: view of user organization'
+    $this->drupalLogin($userOrg);
+    $this->drupalGet('storm/people');
+
+    $this->assertLink($person1->title, 0, 'The Person appears on the list');
+    $this->assertRaw('node/'.$person1->nid.'/edit', 'The Person edit icon appears on the list');
+    $this->assertRaw('node/'.$person1->nid.'/delete', 'The Person edit icon appears on the list');
+
+    $this->assertLink($person2->title, 0, 'The Person appears on the list');
+    $this->assertRaw('node/'.$person2->nid.'/edit', 'The Person edit icon appears on the list');
+    $this->assertRaw('node/'.$person2->nid.'/delete', 'The Person edit icon appears on the list');
+
+    $this->assertNoLink($person3->title, 'The Person appears not on the list');
+    $this->assertNoRaw('node/'.$person3->nid.'/edit', 'The Person edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$person3->nid.'/delete', 'The Person edit icon appears not on the list');
+
+    $this->assertLink($person4->title, 0, 'The Person appears on the list');
+    $this->assertRaw('node/'.$person4->nid.'/edit', 'The Person edit icon appears on the list');
+    $this->assertRaw('node/'.$person4->nid.'/delete', 'The Person edit icon appears on the list');
+
+    //test for 'Storm person: view own'
+    $this->drupalLogin($userOwn);
+    $this->drupalGet('storm/people');
+
+    $this->assertNoLink($person1->title, 'The Person appears not on the list');
+    $this->assertNoRaw('node/'.$person1->nid.'/edit', 'The Person edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$person1->nid.'/delete', 'The Person edit icon appears not on the list');
+
+    $this->assertLink($person2->title, 0, 'The Person appears on the list');
+    $this->assertRaw('node/'.$person2->nid.'/edit', 'The Person edit icon appears on the list');
+    $this->assertRaw('node/'.$person2->nid.'/delete', 'The Person edit icon appears on the list');
+
+    $this->assertNoLink($person3->title, 'The Person appears not on the list');
+    $this->assertNoRaw('node/'.$person3->nid.'/edit', 'The Person edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$person3->nid.'/delete', 'The Person edit icon appears not on the list');
+
+    $this->assertNoLink($person4->title, 'The Person appears not on the list');
+    $this->assertNoRaw('node/'.$person4->nid.'/edit', 'The Person edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$person4->nid.'/delete', 'The Person edit icon appears not on the list');
+
+    //test for 'Storm person: view all', 'Storm invoice: edit own'
+    $this->drupalLogin($userViewAllEditOwn);
+    $this->drupalGet('storm/people');
+
+    $this->assertLink($person1->title, 0, 'The Person appears on the list');
+    $this->assertNoRaw('node/'.$person1->nid.'/edit', 'The Person edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$person1->nid.'/delete', 'The Person edit icon appears not on the list');
+
+    $this->assertLink($person2->title, 0, 'The Person appears on the list');
+    $this->assertNoRaw('node/'.$person2->nid.'/edit', 'The Person edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$person2->nid.'/delete', 'The Person edit icon appears not on the list');
+
+    $this->assertLink($person3->title, 0, 'The Person appears on the list');
+    $this->assertRaw('node/'.$person3->nid.'/edit', 'The Person edit icon appears on the list');
+    $this->assertRaw('node/'.$person3->nid.'/delete', 'The Person edit icon appears on the list');
+
+    $this->assertLink($person4->title, 0, 'The Person appears on the list');
+    $this->assertNoRaw('node/'.$person4->nid.'/edit', 'The Person edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$person4->nid.'/delete', 'The Person edit icon appears not on the list');
+
+    //test for 'Storm person: view when linked to own user account'
+    $this->drupalLogin($userLinked);
+    $this->drupalGet('storm/people');
+
+    $this->assertNoLink($person1->title, 'The Person appears not on the list');
+    $this->assertNoRaw('node/'.$person1->nid.'/edit', 'The Person edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$person1->nid.'/delete', 'The Person edit icon appears not on the list');
+
+    $this->assertNoLink($person2->title, 'The Person appears not on the list');
+    $this->assertNoRaw('node/'.$person2->nid.'/edit', 'The Person edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$person2->nid.'/delete', 'The Person edit icon appears not on the list');
+
+    $this->assertNoLink($person3->title, 'The Person appears not on the list');
+    $this->assertNoRaw('node/'.$person3->nid.'/edit', 'The Person edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$person3->nid.'/delete', 'The Person edit icon appears not on the list');
+
+    $this->assertLink($person4->title, 0, 'The Person appears on the list');
+    $this->assertRaw('node/'.$person4->nid.'/edit', 'The Person edit icon appears not on the list');
+    $this->assertRaw('node/'.$person4->nid.'/delete', 'The Person edit icon appears not on the list');
+
+  }
 }
diff --git a/stormperson/stormperson.theme.inc b/stormperson/stormperson.theme.inc
index 185bf1b..2cdc03d 100644
--- a/stormperson/stormperson.theme.inc
+++ b/stormperson/stormperson.theme.inc
@@ -7,19 +7,12 @@
 function theme_stormperson_list($header, $people) {
   $rows = array();
   foreach ($people as $person) {
-    $n = new stdClass();
-    $n->nid = $person->nid;
-    $n->uid = $person->uid;
-    $n->user_uid = $person->user_uid;
-    $n->organization_nid = $person->organization_nid;
-    $n->type = 'stormperson';
-
     $rows[] = array(
       l($person->organization_title, 'node/'. $person->organization_nid),
       l($person->title, 'node/'. $person->nid) . theme('mark', node_mark($person->nid, $person->changed)),
       l($person->email, 'mailto:'. $person->email),
       array(
-        'data' => storm_icon_edit_node($n, $_GET) .'&nbsp;'. storm_icon_delete_node($n, $_GET),
+        'data' => storm_icon_edit_node($person, $_GET) .'&nbsp;'. storm_icon_delete_node($person, $_GET),
         'class' => 'storm_list_operations',
       ),
     );
diff --git a/stormproject/stormproject.module b/stormproject/stormproject.module
index 021e8c6..20a54be 100644
--- a/stormproject/stormproject.module
+++ b/stormproject/stormproject.module
@@ -93,13 +93,13 @@ function stormproject_access($op, $node, $account=NULL) {
     elseif (user_access('Storm project: delete if project manager') && ($account->stormperson_nid == $node->manager_nid)) {
       return TRUE;
     }
-    elseif (user_access('Storm project: delete if assigned to project' && ($account->stormperson_nid == $node->assigned_nid))) {
+    elseif (user_access('Storm project: delete if assigned to project') && ($account->stormperson_nid == $node->assigned_nid)) {
       return TRUE;
     }
-    elseif (user_access('Storm project: delete if assigned to project' && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormperson_nid))) {
+    elseif (user_access('Storm project: delete if assigned to project') && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormperson_nid)) {
       return TRUE;
     }
-    elseif (user_access('Storm project: delete if assigned to project' && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormorganization_nid))) {
+    elseif (user_access('Storm project: delete if assigned to project') && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormorganization_nid)) {
       return TRUE;
     }
   }
@@ -180,7 +180,7 @@ function stormproject_access_sql($sql, $where = array()) {
 
     if (module_exists('stormteam')) {
       // Load teams that the account belongs to
-      $belonged_teams = stormteam_user_return_teams($account);
+      $belonged_teams = stormteam_user_return_teams();
       // Allow access if any of those teams is the one in question
       foreach ($belonged_teams as $belonged_team) {
         $cond .= ' OR spr.assigned_nid = '. $belonged_team;
diff --git a/stormproject/stormproject.test b/stormproject/stormproject.test
index b76da1d..61a87c5 100644
--- a/stormproject/stormproject.test
+++ b/stormproject/stormproject.test
@@ -14,7 +14,7 @@ class StormprojectTestCase extends DrupalWebTestCase {
   }
 
   public function setUp() {
-    parent::setUp('storm', 'stormorganization', 'stormproject');
+    parent::setUp('storm', 'stormorganization', 'stormproject', 'stormperson', 'stormteam');
   }
 
   public function testStormprojectAccess() {
@@ -51,4 +51,326 @@ class StormprojectTestCase extends DrupalWebTestCase {
 
     $this->assertText(t('Project @title has been created.', array('@title' => $prj['title'])));;
   }
+
+  public function testStormprojectList() {
+    // Create and login user
+    $userAll = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm project: access', 'Storm project: add', 'Storm project: view all', 'Storm project: edit all', 'Storm project: delete all', 'Storm person: add', 'Storm team: add', 'Storm person: view all', 'Storm team: view all'));
+    $userOrg = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm project: access', 'Storm project: add', 'Storm project: view of user organization', 'Storm project: edit of user organization', 'Storm project: delete of user organization'));
+    $userOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm project: access', 'Storm project: add', 'Storm project: view own', 'Storm project: edit own', 'Storm project: delete own'));
+    $userManager = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm project: access', 'Storm project: add', 'Storm project: view if project manager', 'Storm project: edit if project manager', 'Storm project: delete if project manager'));
+    $userAssigned = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm project: access', 'Storm project: add', 'Storm project: view if assigned to project', 'Storm project: edit if assigned to project', 'Storm project: delete if assigned to project'));
+    $userAssignedTeam = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm project: access', 'Storm project: add', 'Storm project: view if assigned to project', 'Storm project: edit if assigned to project', 'Storm project: delete if assigned to project'));
+    $userViewAllEditOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm project: access', 'Storm project: add', 'Storm project: view all', 'Storm project: edit own', 'Storm project: delete own'));
+
+    $this->drupalLogin($userAll);
+
+    // Create organization
+    $org = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org, t('Save'));
+    $org = node_load(array('title' => $org['title']));
+
+    // Create organization
+    $org2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org2, t('Save'));
+    $org2 = node_load(array('title' => $org2['title']));
+
+    // Create stormperson with organization to userOrg
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userOrg->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userManager->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+    $manager = node_load(array('title' => $personOrg['title']));
+
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userAssigned->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+    $assignedPerson = node_load(array('title' => $personOrg['title']));
+
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userAssignedTeam->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+    $assignedPersonTeam = node_load(array('title' => $personOrg['title']));
+
+    $team = array(
+      'title' => $this->randomName(32),
+      'members_array_1' => $assignedPersonTeam->nid,
+    );
+    $this->drupalPost('node/add/stormteam', $team, t('Save'));
+    $team = node_load(array('title' => $team['title']));
+
+    // Create project
+    $project1 = array(
+      'organization_nid' => $org->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormproject', $project1, t('Save'));
+    $project1 = node_load(array('title' => $project1['title']));
+
+    $projectManager = array(
+      'organization_nid' => $org->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'manager_nid' => $manager->nid,
+    );
+    $this->drupalPost('node/add/stormproject', $projectManager, t('Save'));
+    $projectManager = node_load(array('title' => $projectManager['title']));
+
+    $projectAssigned = array(
+      'organization_nid' => $org->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'assigned_nid' => $assignedPerson->nid,
+    );
+    $this->drupalPost('node/add/stormproject', $projectAssigned, t('Save'));
+    $projectAssigned = node_load(array('title' => $projectAssigned['title']));
+
+    $projectAssignedTeam = array(
+      'organization_nid' => $org->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'assigned_nid' => $team->nid,
+    );
+    $this->drupalPost('node/add/stormproject', $projectAssignedTeam, t('Save'));
+    $projectAssignedTeam = node_load(array('title' => $projectAssignedTeam['title']));
+
+    $this->drupalLogin($userOwn);
+    $project2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+    );
+    $this->drupalPost('node/add/stormproject', $project2, t('Save'));
+    $project2 = node_load(array('title' => $project2['title']));
+
+    $this->drupalLogin($userViewAllEditOwn);
+    $project3 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org2->nid,
+    );
+    $this->drupalPost('node/add/stormproject', $project3, t('Save'));
+    $project3 = node_load(array('title' => $project3['title']));
+
+    //test for 'Storm project: view all'
+    $this->drupalLogin($userAll);
+    $this->drupalGet('storm/projects');
+
+    $this->assertLink($project1->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$project1->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$project1->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertLink($project2->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$project2->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$project2->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertLink($project3->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$project3->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$project3->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertLink($projectManager->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$projectManager->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$projectManager->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertLink($projectAssigned->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$projectAssigned->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$projectAssigned->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertLink($projectAssignedTeam->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$projectAssignedTeam->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$projectAssignedTeam->nid.'/delete', 'The Project delete icon appears on the list');
+
+    //test for 'Storm project: view of user organization'
+    $this->drupalLogin($userOrg);
+    $this->drupalGet('storm/projects');
+
+    $this->assertLink($project1->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$project1->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$project1->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertLink($project2->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$project2->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$project2->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertNoLink($project3->title, 0, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project3->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project3->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertLink($projectManager->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$projectManager->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$projectManager->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertLink($projectAssigned->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$projectAssigned->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$projectAssigned->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertLink($projectAssignedTeam->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$projectAssignedTeam->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$projectAssignedTeam->nid.'/delete', 'The Project delete icon appears on the list');
+
+    //test for 'Storm project: view own'
+    $this->drupalLogin($userOwn);
+    $this->drupalGet('storm/projects');
+
+    $this->assertNoLink($project1->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project1->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project1->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertLink($project2->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$project2->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$project2->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertNoLink($project3->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project3->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project3->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($projectManager->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$projectManager->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectManager->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($projectAssigned->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssigned->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssigned->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($projectAssignedTeam->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssignedTeam->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssignedTeam->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    //test for 'Storm project: view all', 'Storm project: edit own'
+    $this->drupalLogin($userViewAllEditOwn);
+    $this->drupalGet('storm/projects');
+
+    $this->assertLink($project1->title, 0, 'The Project appears on the list');
+    $this->assertNoRaw('node/'.$project1->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project1->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertLink($project2->title, 0, 'The Project appears on the list');
+    $this->assertNoRaw('node/'.$project2->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project2->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertLink($project3->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$project3->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$project3->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertLink($projectManager->title, 0, 'The Project appears on the list');
+    $this->assertNoRaw('node/'.$projectManager->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectManager->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertLink($projectAssigned->title, 0, 'The Project appears on the list');
+    $this->assertNoRaw('node/'.$projectAssigned->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssigned->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertLink($projectAssignedTeam->title, 0, 'The Project appears on the list');
+    $this->assertNoRaw('node/'.$projectAssignedTeam->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssignedTeam->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    //test for 'Storm project: view if project manager'
+    $this->drupalLogin($userManager);
+    $this->drupalGet('storm/projects');
+
+    $this->assertNoLink($project1->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project1->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project1->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($project2->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project2->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project2->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($project3->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project3->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project3->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertLink($projectManager->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$projectManager->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$projectManager->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertNoLink($projectAssigned->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssigned->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssigned->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($projectAssignedTeam->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssignedTeam->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssignedTeam->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    //test for 'Storm project: view if assigned to project'
+    $this->drupalLogin($userAssigned);
+    $this->drupalGet('storm/projects');
+
+    $this->assertNoLink($project1->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project1->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project1->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($project2->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project2->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project2->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($project3->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project3->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project3->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($projectManager->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$projectManager->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectManager->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertLink($projectAssigned->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$projectAssigned->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$projectAssigned->nid.'/delete', 'The Project delete icon appears on the list');
+
+    $this->assertNoLink($projectAssignedTeam->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssignedTeam->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssignedTeam->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    //test for 'Storm project: view if assigned to project' (using team)
+    $this->drupalLogin($userAssignedTeam);
+    $this->drupalGet('storm/projects');
+
+    $this->assertNoLink($project1->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project1->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project1->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($project2->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project2->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project2->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($project3->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$project3->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$project3->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($projectManager->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$projectManager->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectManager->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertNoLink($projectAssigned->title, 'The Project appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssigned->nid.'/edit', 'The Project edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$projectAssigned->nid.'/delete', 'The Project delete icon appears not on the list');
+
+    $this->assertLink($projectAssignedTeam->title, 0, 'The Project appears on the list');
+    $this->assertRaw('node/'.$projectAssignedTeam->nid.'/edit', 'The Project edit icon appears on the list');
+    $this->assertRaw('node/'.$projectAssignedTeam->nid.'/delete', 'The Project delete icon appears on the list');
+  }
 }
diff --git a/stormtask/stormtask.module b/stormtask/stormtask.module
index 6ac6fae..a7aecec 100644
--- a/stormtask/stormtask.module
+++ b/stormtask/stormtask.module
@@ -72,13 +72,13 @@ function stormtask_access($op, $node, $account=NULL) {
     elseif (user_access('Storm task: delete of user organization') && ($account->stormorganization_nid == $node->organization_nid)) {
       return TRUE;
     }
-    elseif (user_access('Storm task: delete if assigned to task' && ($account->stormperson_nid == $node->assigned_nid))) {
+    elseif (user_access('Storm task: delete if assigned to task') && ($account->stormperson_nid == $node->assigned_nid)) {
       return TRUE;
     }
-    elseif (user_access('Storm task: delete if assigned to task' && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormperson_nid))) {
+    elseif (user_access('Storm task: delete if assigned to task') && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormperson_nid)) {
       return TRUE;
     }
-    elseif (user_access('Storm task: delete if assigned to task' && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormorganization_nid))) {
+    elseif (user_access('Storm task: delete if assigned to task') && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormorganization_nid)) {
       return TRUE;
     }
   }
diff --git a/stormtask/stormtask.test b/stormtask/stormtask.test
index 5c977c2..0da679b 100644
--- a/stormtask/stormtask.test
+++ b/stormtask/stormtask.test
@@ -14,7 +14,7 @@ class StormtaskTestCase extends DrupalWebTestCase {
   }
 
   public function setUp() {
-    parent::setUp('storm', 'stormorganization', 'stormproject', 'stormtask');
+    parent::setUp('storm', 'stormorganization', 'stormproject', 'stormtask', 'stormperson', 'stormteam');
   }
 
   public function testStormtaskAccess() {
@@ -56,4 +56,283 @@ class StormtaskTestCase extends DrupalWebTestCase {
 
     $this->assertText(t('Task @title has been created.', array('@title' => $task['title'])));;
   }
+  
+  public function testStormtaskList() {
+    // Create and login user
+    $userAll = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm task: access', 'Storm task: add', 'Storm task: view all', 'Storm task: edit all', 'Storm task: delete all', 'Storm person: add', 'Storm team: add', 'Storm person: view all', 'Storm team: view all', 'Storm project: add', 'Storm project: view all'));
+    $userOrg = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm task: access', 'Storm task: add', 'Storm task: view of user organization', 'Storm task: edit of user organization', 'Storm task: delete of user organization'));
+    $userOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm task: access', 'Storm task: add', 'Storm task: view own', 'Storm task: edit own', 'Storm task: delete own', 'Storm project: view all'));
+    $userAssigned = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm task: access', 'Storm task: add', 'Storm task: view if assigned to task', 'Storm task: edit if assigned to task', 'Storm task: delete if assigned to task'));
+    $userAssignedTeam = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm task: access', 'Storm task: add', 'Storm task: view if assigned to task', 'Storm task: edit if assigned to task', 'Storm task: delete if assigned to task'));
+    $userViewAllEditOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm task: access', 'Storm task: add', 'Storm task: view all', 'Storm task: edit own', 'Storm task: delete own', 'Storm project: view all'));
+
+    $this->drupalLogin($userAll);
+
+    // Create organization
+    $org = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org, t('Save'));
+    $org = node_load(array('title' => $org['title']));
+
+    $org2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org2, t('Save'));
+    $org2 = node_load(array('title' => $org2['title']));
+
+    // Create stormperson with organization to userOrg
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userOrg->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userAssigned->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+    $assignedPerson = node_load(array('title' => $personOrg['title']));
+
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userAssignedTeam->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+    $assignedPersonTeam = node_load(array('title' => $personOrg['title']));
+
+    $team = array(
+      'title' => $this->randomName(32),
+      'members_array_1' => $assignedPersonTeam->nid,
+    );
+    $this->drupalPost('node/add/stormteam', $team, t('Save'));
+    $team = node_load(array('title' => $team['title']));    
+
+    // Create project foreach organization
+    $prj = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org->nid,
+    );
+    $this->drupalPost('node/add/stormproject', $prj, t('Save'));
+    $projectOrg = node_load(array('title' => $prj['title']));
+
+    $prj = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org->nid,
+      'assigned_nid' => $team->nid,
+    );
+    $this->drupalPost('node/add/stormproject', $prj, t('Save'));
+    $projectTeam = node_load(array('title' => $prj['title']));
+
+    $prj = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org2->nid,
+      'assigned_nid' => $team->nid,
+    );
+    $this->drupalPost('node/add/stormproject', $prj, t('Save'));
+    $projectOrg2 = node_load(array('title' => $prj['title']));
+
+    // Create tasks
+    $task1 = array(
+      'organization_nid' => $org->nid,
+      'project_nid' => $projectOrg->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormtask', $task1, t('Save'), array('query' => 'organization_nid='.$org->nid));
+    $task1 = node_load(array('title' => $task1['title']));
+
+    $taskAssigned = array(
+      'organization_nid' => $org->nid,
+      'project_nid' => $projectOrg->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'assigned_nid' => $assignedPerson->nid,
+    );
+    $this->drupalPost('node/add/stormtask', $taskAssigned, t('Save'), array('query' => 'organization_nid='.$org->nid.'&project_nid='.$projectOrg->nid));
+    $taskAssigned = node_load(array('title' => $taskAssigned['title']));
+
+    $taskAssignedTeam = array(
+      'organization_nid' => $org->nid,
+      'project_nid' => $projectTeam->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'assigned_nid' => $team->nid,
+    );
+    $this->drupalPost('node/add/stormtask', $taskAssignedTeam, t('Save'), array('query' => 'organization_nid='.$org->nid.'&project_nid='.$projectTeam->nid));
+    $taskAssignedTeam = node_load(array('title' => $taskAssignedTeam['title']));
+
+    $this->drupalLogin($userOwn);
+    $task2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'project_nid' => $projectOrg->nid,
+    );
+    $this->drupalPost('node/add/stormtask', $task2, t('Save'), array('query' => 'organization_nid='.$org->nid));
+    $task2 = node_load(array('title' => $task2['title']));
+
+    $this->drupalLogin($userViewAllEditOwn);
+    $task3 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org2->nid,
+      'project_nid' => $projectOrg2->nid,
+    );
+    $this->drupalPost('node/add/stormtask', $task3, t('Save'), array('query' => 'organization_nid='.$org2->nid));
+    $task3 = node_load(array('title' => $task3['title']));
+
+    //test for 'Storm task: view all'
+    $this->drupalLogin($userAll);
+    $this->drupalGet('storm/tasks');
+
+    $this->assertLink($task1->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$task1->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$task1->nid.'/delete', 'The Task delete icon appears on the list');
+
+    $this->assertLink($task2->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$task2->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$task2->nid.'/delete', 'The Task delete icon appears on the list');
+
+    $this->assertLink($task3->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$task3->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$task3->nid.'/delete', 'The Task delete icon appears on the list');
+
+    $this->assertLink($taskAssigned->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$taskAssigned->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$taskAssigned->nid.'/delete', 'The Task delete icon appears on the list');
+
+    $this->assertLink($taskAssignedTeam->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$taskAssignedTeam->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$taskAssignedTeam->nid.'/delete', 'The Task delete icon appears on the list');
+
+    //test for 'Storm task: view of user organization'
+    $this->drupalLogin($userOrg);
+    $this->drupalGet('storm/tasks');
+
+    $this->assertLink($task1->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$task1->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$task1->nid.'/delete', 'The Task delete icon appears on the list');
+
+    $this->assertLink($task2->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$task2->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$task2->nid.'/delete', 'The Task delete icon appears on the list');
+
+    $this->assertNoLink($task3->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$task3->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$task3->nid.'/delete', 'The Task delete icon appears not on the list');
+    
+    $this->assertLink($taskAssigned->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$taskAssigned->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$taskAssigned->nid.'/delete', 'The Task delete icon appears on the list');
+
+    $this->assertLink($taskAssignedTeam->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$taskAssignedTeam->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$taskAssignedTeam->nid.'/delete', 'The Task delete icon appears on the list');
+
+    //test for 'Storm task: view own'
+    $this->drupalLogin($userOwn);
+    $this->drupalGet('storm/tasks');
+
+    $this->assertNoLink($task1->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$task1->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$task1->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertLink($task2->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$task2->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$task2->nid.'/delete', 'The Task delete icon appears on the list');
+
+    $this->assertNoLink($task3->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$task3->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$task3->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertNoLink($taskAssigned->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$taskAssigned->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$taskAssigned->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertNoLink($taskAssignedTeam->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$taskAssignedTeam->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$taskAssignedTeam->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    //test for 'Storm task: view all', 'Storm task: edit own'
+    $this->drupalLogin($userViewAllEditOwn);
+    $this->drupalGet('storm/tasks');
+
+    $this->assertLink($task1->title, 0, 'The Task appears on the list');
+    $this->assertNoRaw('node/'.$task1->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$task1->nid.'/delete', 'The Task edit icon appears not on the list');
+
+    $this->assertLink($task2->title, 0, 'The Task appears on the list');
+    $this->assertNoRaw('node/'.$task2->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$task2->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertLink($task3->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$task3->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$task3->nid.'/delete', 'The Task delete icon appears on the list');
+
+    $this->assertLink($taskAssigned->title, 0, 'The Task appears on the list');
+    $this->assertNoRaw('node/'.$taskAssigned->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$taskAssigned->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertLink($taskAssignedTeam->title, 0, 'The Task appears on the list');
+    $this->assertNoRaw('node/'.$taskAssignedTeam->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$taskAssignedTeam->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    //test for 'Storm task: view if assigned to task'
+    $this->drupalLogin($userAssigned);
+    $this->drupalGet('storm/tasks');
+
+    $this->assertNoLink($task1->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$task1->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$task1->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertNoLink($task2->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$task2->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$task2->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertNoLink($task3->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$task3->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$task3->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertLink($taskAssigned->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$taskAssigned->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$taskAssigned->nid.'/delete', 'The Task delete icon appears on the list');
+
+    $this->assertNoLink($taskAssignedTeam->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$taskAssignedTeam->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$taskAssignedTeam->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    //test for 'Storm task: view if assigned to task' (using team)
+    $this->drupalLogin($userAssignedTeam);
+    $this->drupalGet('storm/tasks');
+
+    $this->assertNoLink($task1->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$task1->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$task1->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertNoLink($task2->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$task2->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$task2->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertNoLink($task3->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$task3->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$task3->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertNoLink($taskAssigned->title, 'The Task appears not on the list');
+    $this->assertNoRaw('node/'.$taskAssigned->nid.'/edit', 'The Task edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$taskAssigned->nid.'/delete', 'The Task delete icon appears not on the list');
+
+    $this->assertLink($taskAssignedTeam->title, 0, 'The Task appears on the list');
+    $this->assertRaw('node/'.$taskAssignedTeam->nid.'/edit', 'The Task edit icon appears on the list');
+    $this->assertRaw('node/'.$taskAssignedTeam->nid.'/delete', 'The Task delete icon appears on the list');
+  }
 }
diff --git a/stormteam/stormteam.module b/stormteam/stormteam.module
index b13c70e..f08a4d9 100644
--- a/stormteam/stormteam.module
+++ b/stormteam/stormteam.module
@@ -514,7 +514,9 @@ function stormteam_list() {
     ),
   );
 
-  $s = "SELECT DISTINCT(n.nid), n.title, n.type, nre.teaser FROM {node} AS n INNER JOIN {stormteam} as ste ON n.vid=ste.vid INNER JOIN {node_revisions} as nre ON n.vid = nre.vid
+  $s = "SELECT n.nid, n.title, n.type, nre.teaser, nre.format, n.uid FROM {node} AS n
+    INNER JOIN {node_revisions} as nre ON n.vid = nre.vid
+    LEFT JOIN {stormteam} AS ste ON n.vid = ste.vid
     WHERE n.status=1 AND n.type='stormteam'";
 
   $where = array();
diff --git a/stormteam/stormteam.test b/stormteam/stormteam.test
index 56aac54..0fd08cf 100644
--- a/stormteam/stormteam.test
+++ b/stormteam/stormteam.test
@@ -31,4 +31,127 @@ class StormteamTestCase extends DrupalWebTestCase {
 
     $this->assertText(t('Team @title has been created.', array('@title' => $team['title'])));;
   }
+  
+  public function testStormteamList() {
+    // Create and login user
+    $userAll = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm team: access', 'Storm team: add', 'Storm team: view all', 'Storm team: edit all', 'Storm team: delete all', 'Storm person: add', 'Storm person: view all'));
+    $userOrg = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm team: access', 'Storm team: add', 'Storm team: view belonged', 'Storm team: edit belonged', 'Storm team: delete belonged'));
+    $userOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm team: access', 'Storm team: add', 'Storm team: view own', 'Storm team: edit own', 'Storm team: delete own'));
+    $userViewAllEditOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm team: access', 'Storm team: add', 'Storm team: view all', 'Storm team: edit own', 'Storm team: delete own'));
+
+    $this->drupalLogin($userAll);
+
+    // Create organization
+    $org = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org, t('Save'));
+    $org = node_load(array('title' => $org['title']));
+
+    // Create organization
+    $org2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org2, t('Save'));
+    $org2 = node_load(array('title' => $org2['title']));
+
+    // Create stormperson with organization to userOrg
+    $person = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org->nid,
+      'user_name' => $userOrg->name,
+    );
+    $this->drupalPost('node/add/stormperson', $person, t('Save'));
+    $person = node_load(array('title' => $person['title']));
+
+    // Create teams
+    $team1 = array(
+      'title' => $this->randomName(32),
+      'members_array_1' => $person->nid,
+    );
+    $this->drupalPost('node/add/stormteam', $team1, t('Save'));
+    $team1 = node_load(array('title' => $team1['title']));
+
+    $this->drupalLogin($userOwn);
+    $team2 = array(
+      'title' => $this->randomName(32),
+    );
+    $this->drupalPost('node/add/stormteam', $team2, t('Save'));
+    $team2 = node_load(array('title' => $team2['title']));
+
+    $this->drupalLogin($userViewAllEditOwn);
+    $team3 = array(
+      'title' => $this->randomName(32),
+    );
+    $this->drupalPost('node/add/stormteam', $team3, t('Save'));
+    $team3 = node_load(array('title' => $team3['title']));
+
+    //test for 'Storm team: view all'
+    $this->drupalLogin($userAll);
+    $this->drupalGet('storm/teams');
+
+    $this->assertLink($team1->title, 0, 'The Team appears on the list');
+    $this->assertRaw('node/'.$team1->nid.'/edit', 'The Team edit icon appears on the list');
+    $this->assertRaw('node/'.$team1->nid.'/delete', 'The Team delete icon appears on the list');
+
+    $this->assertLink($team2->title, 0, 'The Team appears on the list');
+    $this->assertRaw('node/'.$team2->nid.'/edit', 'The Team edit icon appears on the list');
+    $this->assertRaw('node/'.$team2->nid.'/delete', 'The Team delete icon appears on the list');
+
+    $this->assertLink($team3->title, 0, 'The Team appears on the list');
+    $this->assertRaw('node/'.$team3->nid.'/edit', 'The Team edit icon appears on the list');
+    $this->assertRaw('node/'.$team3->nid.'/delete', 'The Team delete icon appears on the list');
+
+    //test for 'Storm team: view belonged'
+    $this->drupalLogin($userOrg);
+    $this->drupalGet('storm/teams');
+
+    $this->assertLink($team1->title, 0, 'The Team appears on the list');
+    $this->assertRaw('node/'.$team1->nid.'/edit', 'The Team edit icon appears on the list');
+    $this->assertRaw('node/'.$team1->nid.'/delete', 'The Team delete icon appears on the list');
+
+    $this->assertNoLink($team2->title, 'The Team appears not on the list');
+    $this->assertNoRaw('node/'.$team2->nid.'/edit', 'The Team edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$team2->nid.'/delete', 'The Team delete icon appears not on the list');
+
+    $this->assertNoLink($team3->title, 'The Team appears not on the list');
+    $this->assertNoRaw('node/'.$team3->nid.'/edit', 'The Team edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$team3->nid.'/delete', 'The Team delete icon appears not on the list');
+
+    //test for 'Storm team: view own'
+    $this->drupalLogin($userOwn);
+    $this->drupalGet('storm/teams');
+
+    $this->assertNoLink($team1->title, 'The Team appears not on the list');
+    $this->assertNoRaw('node/'.$team1->nid.'/edit', 'The Team edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$team1->nid.'/delete', 'The Team delete icon appears not on the list');
+
+    $this->assertLink($team2->title, 0, 'The Team appears on the list');
+    $this->assertRaw('node/'.$team2->nid.'/edit', 'The Team edit icon appears on the list');
+    $this->assertRaw('node/'.$team2->nid.'/delete', 'The Team delete icon appears on the list');
+
+    $this->assertNoLink($team3->title, 'The Team appears not on the list');
+    $this->assertNoRaw('node/'.$team3->nid.'/edit', 'The Team edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$team3->nid.'/delete', 'The Team delete icon appears not on the list');
+
+
+    //test for 'Storm team: view all', 'Storm team: edit own'
+    $this->drupalLogin($userViewAllEditOwn);
+    $this->drupalGet('storm/teams');
+
+    $this->assertLink($team1->title, 0, 'The Team appears on the list');
+    $this->assertNoRaw('node/'.$team1->nid.'/edit', 'The Team edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$team1->nid.'/delete', 'The Team edit icon appears not on the list');
+
+    $this->assertLink($team2->title, 0, 'The Team appears on the list');
+    $this->assertNoRaw('node/'.$team2->nid.'/edit', 'The Team edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$team2->nid.'/delete', 'The Team delete icon appears not on the list');
+
+    $this->assertLink($team3->title, 0, 'The Team appears on the list');
+    $this->assertRaw('node/'.$team3->nid.'/edit', 'The Team edit icon appears on the list');
+    $this->assertRaw('node/'.$team3->nid.'/delete', 'The Team delete icon appears on the list');
+
+  }  
 }
diff --git a/stormticket/stormticket.module b/stormticket/stormticket.module
index d8c02de..f5c8f74 100644
--- a/stormticket/stormticket.module
+++ b/stormticket/stormticket.module
@@ -76,13 +76,13 @@ function stormticket_access($op, $node, $account=NULL) {
     elseif (user_access('Storm ticket: delete of user organization') && ($account->stormorganization_nid == $node->organization_nid)) {
       return TRUE;
     }
-    elseif (user_access('Storm ticket: delete if assigned to ticket' && ($account->stormperson_nid == $node->assigned_nid))) {
+    elseif (user_access('Storm ticket: delete if assigned to ticket') && ($account->stormperson_nid == $node->assigned_nid)) {
       return TRUE;
     }
-    elseif (user_access('Storm ticket: delete if assigned to ticket' && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormperson_nid))) {
+    elseif (user_access('Storm ticket: delete if assigned to ticket') && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormperson_nid)) {
       return TRUE;
     }
-    elseif (user_access('Storm ticket: delete if assigned to ticket' && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormorganization_nid))) {
+    elseif (user_access('Storm ticket: delete if assigned to ticket') && module_exists('stormteam') && stormteam_user_belongs_to_team($node->assigned_nid, $account->stormorganization_nid)) {
       return TRUE;
     }
   }
diff --git a/stormticket/stormticket.test b/stormticket/stormticket.test
index 17d35c4..eb12bbb 100644
--- a/stormticket/stormticket.test
+++ b/stormticket/stormticket.test
@@ -14,7 +14,7 @@ class StormticketTestCase extends DrupalWebTestCase {
   }
 
   public function setUp() {
-    parent::setUp('storm', 'stormorganization', 'stormproject', 'stormtask', 'stormticket');
+    parent::setUp('storm', 'stormorganization', 'stormproject', 'stormtask', 'stormticket', 'stormperson', 'stormteam');
   }
 
   public function testStormticketAccess() {
@@ -61,4 +61,284 @@ class StormticketTestCase extends DrupalWebTestCase {
 
     $this->assertText(t('Ticket @title has been created.', array('@title' => $ticket['title'])));;
   }
+  
+  public function testStormticketList() {
+    // Create and login user
+    $userAll = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm ticket: access', 'Storm ticket: add', 'Storm ticket: view all', 'Storm ticket: edit all', 'Storm ticket: delete all', 'Storm person: add', 'Storm team: add', 'Storm person: view all', 'Storm team: view all', 'Storm project: add', 'Storm project: view all'));
+    $userOrg = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm ticket: access', 'Storm ticket: add', 'Storm ticket: view of user organization', 'Storm ticket: edit of user organization', 'Storm ticket: delete of user organization'));
+    $userOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm ticket: access', 'Storm ticket: add', 'Storm ticket: view own', 'Storm ticket: edit own', 'Storm ticket: delete own', 'Storm project: view all'));
+    $userAssigned = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm ticket: access', 'Storm ticket: add', 'Storm ticket: view if assigned to ticket', 'Storm ticket: edit if assigned to ticket', 'Storm ticket: delete if assigned to ticket'));
+    $userAssignedTeam = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm ticket: access', 'Storm ticket: add', 'Storm ticket: view if assigned to ticket', 'Storm ticket: edit if assigned to ticket', 'Storm ticket: delete if assigned to ticket'));
+    $userViewAllEditOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm ticket: access', 'Storm ticket: add', 'Storm ticket: view all', 'Storm ticket: edit own', 'Storm ticket: delete own', 'Storm project: view all'));
+
+    $this->drupalLogin($userAll);
+
+    // Create organization
+    $org = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org, t('Save'));
+    $org = node_load(array('title' => $org['title']));
+
+    // Create organization
+    $org2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org2, t('Save'));
+    $org2 = node_load(array('title' => $org2['title']));
+
+    // Create stormperson with organization to userOrg
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userOrg->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userAssigned->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+    $assignedPerson = node_load(array('title' => $personOrg['title']));
+
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userAssignedTeam->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+    $assignedPersonTeam = node_load(array('title' => $personOrg['title']));
+
+    $team = array(
+      'title' => $this->randomName(32),
+      'members_array_1' => $assignedPersonTeam->nid,
+    );
+    $this->drupalPost('node/add/stormteam', $team, t('Save'));
+    $team = node_load(array('title' => $team['title']));
+
+    // Create project foreach organization
+    $prj = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org->nid,
+    );
+    $this->drupalPost('node/add/stormproject', $prj, t('Save'));
+    $projectOrg = node_load(array('title' => $prj['title']));
+
+    $prj = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org->nid,
+      'assigned_nid' => $team->nid,
+    );
+    $this->drupalPost('node/add/stormproject', $prj, t('Save'));
+    $projectTeam = node_load(array('title' => $prj['title']));
+
+    $prj = array(
+      'title' => $this->randomName(32),
+      'organization_nid' => $org2->nid,
+      'assigned_nid' => $team->nid,
+    );
+    $this->drupalPost('node/add/stormproject', $prj, t('Save'));
+    $projectOrg2 = node_load(array('title' => $prj['title']));
+
+    // Create tickets
+    $ticket1 = array(
+      'organization_nid' => $org->nid,
+      'project_nid' => $projectOrg->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormticket', $ticket1, t('Save'), array('query' => 'organization_nid='.$org->nid));
+    $ticket1 = node_load(array('title' => $ticket1['title']));
+    
+    $ticketAssigned = array(
+      'organization_nid' => $org->nid,
+      'project_nid' => $projectOrg->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'assigned_nid' => $assignedPerson->nid,
+    );
+    $this->drupalPost('node/add/stormticket', $ticketAssigned, t('Save'), array('query' => 'organization_nid='.$org->nid.'&project_nid='.$projectOrg->nid));
+    $ticketAssigned = node_load(array('title' => $ticketAssigned['title']));
+
+    $ticketAssignedTeam = array(
+      'organization_nid' => $org->nid,
+      'project_nid' => $projectTeam->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'assigned_nid' => $team->nid,
+    );
+    $this->drupalPost('node/add/stormticket', $ticketAssignedTeam, t('Save'), array('query' => 'organization_nid='.$org->nid.'&project_nid='.$projectTeam->nid));
+    $ticketAssignedTeam = node_load(array('title' => $ticketAssignedTeam['title']));    
+
+    $this->drupalLogin($userOwn);
+    $ticket2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'project_nid' => $projectOrg->nid,
+    );
+    $this->drupalPost('node/add/stormticket', $ticket2, t('Save'), array('query' => 'organization_nid='.$org->nid));
+    $ticket2 = node_load(array('title' => $ticket2['title']));
+
+    $this->drupalLogin($userViewAllEditOwn);
+    $ticket3 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org2->nid,
+      'project_nid' => $projectOrg2->nid,
+    );
+    $this->drupalPost('node/add/stormticket', $ticket3, t('Save'), array('query' => 'organization_nid='.$org2->nid));
+    $ticket3 = node_load(array('title' => $ticket3['title']));
+
+    //test for 'Storm ticket: view all'
+    $this->drupalLogin($userAll);
+    $this->drupalGet('storm/tickets');
+
+    $this->assertLink($ticket1->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticket1->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticket1->nid.'/delete', 'The Ticket delete icon appears on the list');
+
+    $this->assertLink($ticket2->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticket2->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticket2->nid.'/delete', 'The Ticket delete icon appears on the list');
+
+    $this->assertLink($ticket3->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticket3->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticket3->nid.'/delete', 'The Ticket delete icon appears on the list');
+
+    $this->assertLink($ticketAssigned->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticketAssigned->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticketAssigned->nid.'/delete', 'The Ticket delete icon appears on the list');
+
+    $this->assertLink($ticketAssignedTeam->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticketAssignedTeam->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticketAssignedTeam->nid.'/delete', 'The Ticket delete icon appears on the list');
+    
+    //test for 'Storm ticket: view of user organization'
+    $this->drupalLogin($userOrg);
+    $this->drupalGet('storm/tickets');
+
+    $this->assertLink($ticket1->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticket1->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticket1->nid.'/delete', 'The Ticket delete icon appears on the list');
+
+    $this->assertLink($ticket2->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticket2->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticket2->nid.'/delete', 'The Ticket delete icon appears on the list');
+
+    $this->assertNoLink($ticket3->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticket3->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticket3->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertLink($ticketAssigned->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticketAssigned->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticketAssigned->nid.'/delete', 'The Ticket delete icon appears on the list');
+
+    $this->assertLink($ticketAssignedTeam->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticketAssignedTeam->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticketAssignedTeam->nid.'/delete', 'The Ticket delete icon appears on the list');
+    
+    //test for 'Storm ticket: view own'
+    $this->drupalLogin($userOwn);
+    $this->drupalGet('storm/tickets');
+
+    $this->assertNoLink($ticket1->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticket1->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticket1->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertLink($ticket2->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticket2->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticket2->nid.'/delete', 'The Ticket delete icon appears on the list');
+
+    $this->assertNoLink($ticket3->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticket3->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticket3->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertNoLink($ticketAssigned->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticketAssigned->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticketAssigned->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertNoLink($ticketAssignedTeam->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticketAssignedTeam->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticketAssignedTeam->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    //test for 'Storm ticket: view all', 'Storm ticket: edit own'
+    $this->drupalLogin($userViewAllEditOwn);
+    $this->drupalGet('storm/tickets');
+
+    $this->assertLink($ticket1->title, 0, 'The Ticket appears on the list');
+    $this->assertNoRaw('node/'.$ticket1->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticket1->nid.'/delete', 'The Ticket edit icon appears not on the list');
+
+    $this->assertLink($ticket2->title, 0, 'The Ticket appears on the list');
+    $this->assertNoRaw('node/'.$ticket2->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticket2->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertLink($ticket3->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticket3->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticket3->nid.'/delete', 'The Ticket delete icon appears on the list');
+
+    $this->assertLink($ticketAssigned->title, 0, 'The Ticket appears on the list');
+    $this->assertNoRaw('node/'.$ticketAssigned->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticketAssigned->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertLink($ticketAssignedTeam->title, 0, 'The Ticket appears on the list');
+    $this->assertNoRaw('node/'.$ticketAssignedTeam->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticketAssignedTeam->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    //test for 'Storm ticket: view if assigned to ticket'
+    $this->drupalLogin($userAssigned);
+    $this->drupalGet('storm/tickets');
+
+    $this->assertNoLink($ticket1->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticket1->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticket1->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertNoLink($ticket2->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticket2->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticket2->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertNoLink($ticket3->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticket3->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticket3->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertLink($ticketAssigned->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticketAssigned->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticketAssigned->nid.'/delete', 'The Ticket delete icon appears on the list');
+
+    $this->assertNoLink($ticketAssignedTeam->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticketAssignedTeam->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticketAssignedTeam->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    //test for 'Storm ticket: view if assigned to ticket' (using team)
+    $this->drupalLogin($userAssignedTeam);
+    $this->drupalGet('storm/tickets');
+
+    $this->assertNoLink($ticket1->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticket1->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticket1->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertNoLink($ticket2->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticket2->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticket2->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertNoLink($ticket3->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticket3->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticket3->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertNoLink($ticketAssigned->title, 'The Ticket appears not on the list');
+    $this->assertNoRaw('node/'.$ticketAssigned->nid.'/edit', 'The Ticket edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$ticketAssigned->nid.'/delete', 'The Ticket delete icon appears not on the list');
+
+    $this->assertLink($ticketAssignedTeam->title, 0, 'The Ticket appears on the list');
+    $this->assertRaw('node/'.$ticketAssignedTeam->nid.'/edit', 'The Ticket edit icon appears on the list');
+    $this->assertRaw('node/'.$ticketAssignedTeam->nid.'/delete', 'The Ticket delete icon appears on the list');    
+  }  
 }
diff --git a/stormticket/stormticket.theme.inc b/stormticket/stormticket.theme.inc
index 675eafb..e20b858 100644
--- a/stormticket/stormticket.theme.inc
+++ b/stormticket/stormticket.theme.inc
@@ -8,12 +8,6 @@ function theme_stormticket_list($header, $tickets) {
 
   $rows = array();
   foreach ($tickets as $ticket) {
-    $n = new stdClass();
-    $n->nid = $ticket->nid;
-    $n->uid = $ticket->uid;
-    $n->organization_nid = $ticket->organization_nid;
-    $n->type = 'stormticket';
-
     $rows[] = array(
       storm_icon('category_'. $ticket->ticketcategory, storm_attribute_value('Ticket category', $ticket->ticketcategory)),
       l($ticket->organization_title, 'node/'. $ticket->organization_nid),
@@ -23,7 +17,7 @@ function theme_stormticket_list($header, $tickets) {
       storm_icon('status_'. $ticket->ticketstatus, storm_attribute_value('Ticket status', $ticket->ticketstatus)),
       storm_icon('priority_'. $ticket->ticketpriority, storm_attribute_value('Ticket priority', $ticket->ticketpriority)),
       array(
-        'data' => storm_icon_edit_node($n, $_GET) .'&nbsp;'. storm_icon_delete_node($n, $_GET),
+        'data' => storm_icon_edit_node($ticket, $_GET) .'&nbsp;'. storm_icon_delete_node($ticket, $_GET),
         'class' => 'storm_list_operations',
       ),
     );
diff --git a/stormtimetracking/stormtimetracking.test b/stormtimetracking/stormtimetracking.test
index f4378b4..38f1df6 100644
--- a/stormtimetracking/stormtimetracking.test
+++ b/stormtimetracking/stormtimetracking.test
@@ -14,7 +14,7 @@ class StormtimetrackingTestCase extends DrupalWebTestCase {
   }
 
   public function setUp() {
-    parent::setUp('storm', 'stormorganization', 'stormproject', 'stormtask', 'stormticket', 'stormtimetracking');
+    parent::setUp('storm', 'stormorganization', 'stormproject', 'stormtask', 'stormticket', 'stormtimetracking', 'stormperson');
   }
 
   public function testStormtimetrackingCreate() {
@@ -51,4 +51,132 @@ class StormtimetrackingTestCase extends DrupalWebTestCase {
 
     $this->assertText(t('Timetracking @title has been created.', array('@title' => $timetracking['title'])));;
   }
+
+  public function testStormtimetrackingList() {
+    // Create and login user
+    $userAll = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm timetracking: access', 'Storm timetracking: add', 'Storm timetracking: view all', 'Storm timetracking: edit all', 'Storm timetracking: delete all', 'Storm person: add'));
+    $userOrg = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm timetracking: access', 'Storm timetracking: add', 'Storm timetracking: view of user organization', 'Storm timetracking: edit of user organization', 'Storm timetracking: delete of user organization'));
+    $userOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm timetracking: access', 'Storm timetracking: add', 'Storm timetracking: view own', 'Storm timetracking: edit own', 'Storm timetracking: delete own'));
+    $userViewAllEditOwn = $this->drupalCreateUser(array('Storm organization: add', 'Storm organization: view all', 'Storm timetracking: access', 'Storm timetracking: add', 'Storm timetracking: view all', 'Storm timetracking: edit own', 'Storm timetracking: delete own'));
+
+    $this->drupalLogin($userAll);
+
+    // Create organization
+    $org = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org, t('Save'));
+    $org = node_load(array('title' => $org['title']));
+
+    // Create organization
+    $org2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormorganization', $org2, t('Save'));
+    $org2 = node_load(array('title' => $org2['title']));
+
+    // Create stormperson with organization to userOrg
+    $personOrg = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+      'user_name' => $userOrg->name,
+    );
+    $this->drupalPost('node/add/stormperson', $personOrg, t('Save'));
+
+    // Create timetrackings
+    $timetracking1 = array(
+      'organization_nid' => $org->nid,
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+    );
+    $this->drupalPost('node/add/stormtimetracking', $timetracking1, t('Save'));
+    $timetracking1 = node_load(array('title' => $timetracking1['title']));
+
+    $this->drupalLogin($userOwn);
+    $timetracking2 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org->nid,
+    );
+    $this->drupalPost('node/add/stormtimetracking', $timetracking2, t('Save'));
+    $timetracking2 = node_load(array('title' => $timetracking2['title']));
+
+    $this->drupalLogin($userViewAllEditOwn);
+    $timetracking3 = array(
+      'title' => $this->randomName(32),
+      'body' => $this->randomName(64),
+      'organization_nid' => $org2->nid,
+    );
+    $this->drupalPost('node/add/stormtimetracking', $timetracking3, t('Save'));
+    $timetracking3 = node_load(array('title' => $timetracking3['title']));
+
+    //test for 'Storm timetracking: view all'
+    $this->drupalLogin($userAll);
+    $this->drupalGet('storm/timetrackings');
+
+    $this->assertLink($timetracking1->title, 0, 'The Timetracking appears on the list');
+    $this->assertRaw('node/'.$timetracking1->nid.'/edit', 'The Timetracking edit icon appears on the list');
+    $this->assertRaw('node/'.$timetracking1->nid.'/delete', 'The Timetracking delete icon appears on the list');
+
+    $this->assertLink($timetracking2->title, 0, 'The Timetracking appears on the list');
+    $this->assertRaw('node/'.$timetracking2->nid.'/edit', 'The Timetracking edit icon appears on the list');
+    $this->assertRaw('node/'.$timetracking2->nid.'/delete', 'The Timetracking delete icon appears on the list');
+
+    $this->assertLink($timetracking3->title, 0, 'The Timetracking appears on the list');
+    $this->assertRaw('node/'.$timetracking3->nid.'/edit', 'The Timetracking edit icon appears on the list');
+    $this->assertRaw('node/'.$timetracking3->nid.'/delete', 'The Timetracking delete icon appears on the list');
+
+    //test for 'Storm timetracking: view of user organization'
+    $this->drupalLogin($userOrg);
+    $this->drupalGet('storm/timetrackings');
+
+    $this->assertLink($timetracking1->title, 0, 'The Timetracking appears on the list');
+    $this->assertRaw('node/'.$timetracking1->nid.'/edit', 'The Timetracking edit icon appears on the list');
+    $this->assertRaw('node/'.$timetracking1->nid.'/delete', 'The Timetracking delete icon appears on the list');
+
+    $this->assertLink($timetracking2->title, 0, 'The Timetracking appears on the list');
+    $this->assertRaw('node/'.$timetracking2->nid.'/edit', 'The Timetracking edit icon appears on the list');
+    $this->assertRaw('node/'.$timetracking2->nid.'/delete', 'The Timetracking delete icon appears on the list');
+
+    $this->assertNoLink($timetracking3->title, 'The Timetracking appears not on the list');
+    $this->assertNoRaw('node/'.$timetracking3->nid.'/edit', 'The Timetracking edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$timetracking3->nid.'/delete', 'The Timetracking delete icon appears not on the list');
+
+    //test for 'Storm timetracking: view own'
+    $this->drupalLogin($userOwn);
+    $this->drupalGet('storm/timetrackings');
+
+    $this->assertNoLink($timetracking1->title, 'The Timetracking appears not on the list');
+    $this->assertNoRaw('node/'.$timetracking1->nid.'/edit', 'The Timetracking edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$timetracking1->nid.'/delete', 'The Timetracking delete icon appears not on the list');
+
+    $this->assertLink($timetracking2->title, 0, 'The Timetracking appears on the list');
+    $this->assertRaw('node/'.$timetracking2->nid.'/edit', 'The Timetracking edit icon appears on the list');
+    $this->assertRaw('node/'.$timetracking2->nid.'/delete', 'The Timetracking delete icon appears on the list');
+
+    $this->assertNoLink($timetracking3->title, 'The Timetracking appears not on the list');
+    $this->assertNoRaw('node/'.$timetracking3->nid.'/edit', 'The Timetracking edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$timetracking3->nid.'/delete', 'The Timetracking delete icon appears not on the list');
+
+
+    //test for 'Storm timetracking: view all', 'Storm timetracking: edit own'
+    $this->drupalLogin($userViewAllEditOwn);
+    $this->drupalGet('storm/timetrackings');
+
+    $this->assertLink($timetracking1->title, 0, 'The Timetracking appears on the list');
+    $this->assertNoRaw('node/'.$timetracking1->nid.'/edit', 'The Timetracking edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$timetracking1->nid.'/delete', 'The Timetracking edit icon appears not on the list');
+
+    $this->assertLink($timetracking2->title, 0, 'The Timetracking appears on the list');
+    $this->assertNoRaw('node/'.$timetracking2->nid.'/edit', 'The Timetracking edit icon appears not on the list');
+    $this->assertNoRaw('node/'.$timetracking2->nid.'/delete', 'The Timetracking delete icon appears not on the list');
+
+    $this->assertLink($timetracking3->title, 0, 'The Timetracking appears on the list');
+    $this->assertRaw('node/'.$timetracking3->nid.'/edit', 'The Timetracking edit icon appears on the list');
+    $this->assertRaw('node/'.$timetracking3->nid.'/delete', 'The Timetracking delete icon appears on the list');
+
+  }
 }
diff --git a/stormtimetracking/stormtimetracking.theme.inc b/stormtimetracking/stormtimetracking.theme.inc
index e60aa43..c1d3150 100644
--- a/stormtimetracking/stormtimetracking.theme.inc
+++ b/stormtimetracking/stormtimetracking.theme.inc
@@ -7,14 +7,6 @@
 function theme_stormtimetracking_list($header, $timetrackings, $billing_duration) {
   $rows = array();
   foreach ($timetrackings as $timetracking) {
-    $n = new stdClass();
-    $n->nid = $timetracking->nid;
-    $n->uid = $timetracking->uid;
-    $n->organization_nid = $timetracking->organization_nid;
-    $n->project_nid = $timetracking->project_nid;
-    $n->task_nid = $timetracking->task_nid;
-    $n->ticket_nid = $timetracking->ticket_nid;
-    $n->type = 'stormtimetracking';
     $rows[] = array(
       l($timetracking->organization_title, 'node/'. $timetracking->organization_nid),
       l($timetracking->project_title, 'node/'. $timetracking->project_nid),
@@ -22,7 +14,7 @@ function theme_stormtimetracking_list($header, $timetrackings, $billing_duration
       format_date($timetracking->trackingdate, 'small'),
       array('data' => sprintf('%.2f', $timetracking->billing_duration), 'align' => 'right'),
       array(
-        'data' => storm_icon_edit_node($n, $_GET) .'&nbsp;'. storm_icon_delete_node($n, $_GET),
+        'data' => storm_icon_edit_node($timetracking, $_GET) .'&nbsp;'. storm_icon_delete_node($timetracking, $_GET),
         'class' => 'storm_list_operations',
       ),
     );
