diff --git a/acceptance/openstack/sharedfilesystems/v2/sharenetworks_test.go b/acceptance/openstack/sharedfilesystems/v2/sharenetworks_test.go
index b9876d5..1a4ae9b 100644
--- a/acceptance/openstack/sharedfilesystems/v2/sharenetworks_test.go
+++ b/acceptance/openstack/sharedfilesystems/v2/sharenetworks_test.go
@@ -6,6 +6,7 @@
 	"github.com/gophercloud/gophercloud/acceptance/clients"
 	"github.com/gophercloud/gophercloud/openstack/sharedfilesystems/v2/sharenetworks"
 	"github.com/gophercloud/gophercloud/pagination"
+	th "github.com/gophercloud/gophercloud/testhelper"
 )
 
 func TestShareNetworkCreateDestroy(t *testing.T) {
@@ -33,6 +34,54 @@
 	defer DeleteShareNetwork(t, client, shareNetwork)
 }
 
+// Create a share network and update the name and description. Get the share
+// network and verify that the name and description have been updated
+func TestShareNetworkUpdate(t *testing.T) {
+	client, err := clients.NewSharedFileSystemV2Client()
+	if err != nil {
+		t.Fatalf("Unable to create shared file system client: %v", err)
+	}
+
+	shareNetwork, err := CreateShareNetwork(t, client)
+	if err != nil {
+		t.Fatalf("Unable to create share network: %v", err)
+	}
+
+	expectedShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract()
+	if err != nil {
+		t.Errorf("Unable to retrieve shareNetwork: %v", err)
+	}
+
+	options := sharenetworks.UpdateOpts{
+		Name:        "NewName",
+		Description: "New share network description",
+		NovaNetID:   "New_nova_network_id",
+	}
+
+	expectedShareNetwork.Name = options.Name
+	expectedShareNetwork.Description = options.Description
+	expectedShareNetwork.NovaNetID = options.NovaNetID
+
+	_, err = sharenetworks.Update(client, shareNetwork.ID, options).Extract()
+	if err != nil {
+		t.Errorf("Unable to update shareNetwork: %v", err)
+	}
+
+	updatedShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract()
+	if err != nil {
+		t.Errorf("Unable to retrieve shareNetwork: %v", err)
+	}
+
+	// Update time has to be set in order to get the assert equal to pass
+	expectedShareNetwork.UpdatedAt = updatedShareNetwork.UpdatedAt
+
+	th.CheckDeepEquals(t, expectedShareNetwork, updatedShareNetwork)
+
+	PrintShareNetwork(t, shareNetwork)
+
+	defer DeleteShareNetwork(t, client, shareNetwork)
+}
+
 func TestShareNetworkListDetail(t *testing.T) {
 	client, err := clients.NewSharedFileSystemV2Client()
 	if err != nil {
