@@ -59,15 +59,85 @@ def test_cargo_packages(mock_get):
5959 check_packages (packages , expected_data )
6060
6161
62+ SCOPED_NPM_REGISTRY = {
63+ "name" : "@angular/core" ,
64+ "repository" : {"url" : "git+https://github.com/angular/angular.git" },
65+ "bugs" : {"url" : "https://github.com/angular/angular/issues" },
66+ "license" : "MIT" ,
67+ "homepage" : "https://angular.io" ,
68+ "versions" : {
69+ "1.0.0" : {
70+ "version" : "1.0.0" ,
71+ "repository" : {"type" : "git" , "url" : "git+https://github.com/angular/angular.git" },
72+ "dist" : {"tarball" : "https://registry.npmjs.org/@angular/core/-/core-1.0.0.tgz" },
73+ },
74+ "1.0.1" : {
75+ "version" : "1.0.1" ,
76+ "repository" : {"type" : "git" , "url" : "git+https://github.com/angular/angular.git" },
77+ "dist" : {"tarball" : "https://registry.npmjs.org/@angular/core/-/core-1.0.1.tgz" },
78+ },
79+ },
80+ }
81+
82+
6283@mock .patch ("fetchcode.package.get_response" )
63- def test_npm_packages (mock_get ):
64- side_effect = [load_json ("tests/data/npm_mock_data.json" )]
65- purl = "pkg:npm/express"
66- expected_data = "tests/data/npm.json"
67- mock_get .side_effect = side_effect
68- packages = list (info (purl ))
84+ def test_npm_scoped_packages (mock_get ):
85+ mock_get .return_value = SCOPED_NPM_REGISTRY
86+ packages = list (info ("pkg:npm/%40angular/core" ))
87+
88+ mock_get .assert_called_once_with ("http://registry.npmjs.org/@angular/core" )
89+ assert [p .version for p in packages ] == ["1.0.0" , "1.0.1" ]
90+ assert all (p .namespace == "@angular" and p .name == "core" for p in packages )
91+ assert packages [0 ].purl == "pkg:npm/%40angular/core@1.0.0"
92+ assert packages [0 ].api_url == "http://registry.npmjs.org/@angular/core"
93+ assert packages [0 ].download_url == "https://registry.npmjs.org/@angular/core/-/core-1.0.0.tgz"
94+ assert packages [0 ].homepage_url == "https://angular.io"
95+ assert packages [0 ].bug_tracking_url == "https://github.com/angular/angular/issues"
96+ assert packages [0 ].vcs_url == "git+https://github.com/angular/angular.git"
97+ assert packages [0 ].declared_license == "MIT"
6998
70- check_packages (packages , expected_data )
99+
100+ @mock .patch ("fetchcode.package.get_response" )
101+ def test_npm_scoped_package_with_version (mock_get ):
102+ mock_get .return_value = SCOPED_NPM_REGISTRY
103+ packages = list (info ("pkg:npm/%40angular/core@1.0.1" ))
104+
105+ mock_get .assert_called_once_with ("http://registry.npmjs.org/@angular/core" )
106+ assert len (packages ) == 1
107+ package = packages [0 ]
108+ assert package .namespace == "@angular"
109+ assert package .name == "core"
110+ assert package .version == "1.0.1"
111+ assert package .purl == "pkg:npm/%40angular/core@1.0.1"
112+ assert package .download_url == "https://registry.npmjs.org/@angular/core/-/core-1.0.1.tgz"
113+
114+
115+ @mock .patch ("fetchcode.package.get_response" )
116+ def test_npm_string_repository_and_bugs (mock_get ):
117+ mock_get .return_value = {
118+ "name" : "@babel/core" ,
119+ "repository" : "https://github.com/babel/babel.git" ,
120+ "bugs" : "https://github.com/babel/babel/issues" ,
121+ "license" : "MIT" ,
122+ "homepage" : "https://babeljs.io" ,
123+ "versions" : {
124+ "7.0.0" : {
125+ "version" : "7.0.0" ,
126+ "repository" : "https://github.com/babel/babel.git" ,
127+ "bugs" : "https://github.com/babel/babel/issues" ,
128+ "dist" : {"tarball" : "https://registry.npmjs.org/@babel/core/-/core-7.0.0.tgz" },
129+ }
130+ },
131+ }
132+ packages = list (info ("pkg:npm/%40babel/core@7.0.0" ))
133+
134+ assert len (packages ) == 1
135+ package = packages [0 ]
136+ assert package .namespace == "@babel"
137+ assert package .name == "core"
138+ assert package .vcs_url == "https://github.com/babel/babel.git"
139+ assert package .bug_tracking_url == "https://github.com/babel/babel/issues"
140+ assert package .download_url == "https://registry.npmjs.org/@babel/core/-/core-7.0.0.tgz"
71141
72142
73143@mock .patch ("fetchcode.package.get_response" )
0 commit comments