# limitations under the License.
 
 
+import os
+
 from django.test import TestCase
 from rest_framework import status
 from rest_framework.test import APIClient
         self.assertEqual(expected_reponse_data, response.data)
 
     def test_nsd_content_upload_normal(self):
-        pass
+        with open('nsd_content.txt', 'wb') as fp:
+            fp.write('test')
+
+        with open('nsd_content.txt', 'rb') as fp:
+            resp = self.client.put(
+                "/api/nsd/v1/ns_descriptors/22/nsd_content",
+                {'file': fp},
+            )
+        self.assertEqual(resp.status_code, status.HTTP_204_NO_CONTENT)
+        self.assertEqual({}, resp.data)
+
+        os.remove('nsd_content.txt')
 
     def test_nsd_content_upload_failure(self):
         pass
 
 
 from django.conf.urls import url
 
-from catalog.packages.views import catalog_views, ns_descriptor_views
+from catalog.packages.views import catalog_views, ns_descriptor_views, nsd_content_views
 
 
 urlpatterns = [
     # NSD
     url(r'^api/nsd/v1/ns_descriptors$', ns_descriptor_views.create_ns_descriptors, name='ns_descriptors_rc'),
     url(r'^api/nsd/v1/ns_descriptors$', ns_descriptor_views.query_ns_descriptors, name='ns_info_rd'),
-    # url(r'^api/nsd/v1/ns_descriptors/(?P<nsdInfoId>[0-9a-zA-Z\-\_]+)/nsd_content$', nsd_content_views.upload_nsd_content, name='nsd_content_ru'),
+    url(r'^api/nsd/v1/ns_descriptors/(?P<nsdInfoId>[0-9a-zA-Z\-\_]+)/nsd_content$', nsd_content_views.upload_nsd_content, name='nsd_content_ru'),
 
     # TODO SOL005 & SOL003
     # url(r'^api/nsd/v1/pnf_descriptors', pnf_descriptors.as_view(), name='pnf_descriptors_rc'),