@@ -258,6 +258,61 @@ func TestInstall_ModuleSuccessfullyInstalledWithCustomCR(t *testing.T) {
258258 require .Nil (t , clierr )
259259}
260260
261+ func TestVerifyModuleExistence (t * testing.T ) {
262+ ctx := context .Background ()
263+ moduleName := "test-module"
264+ version := "1.0.0"
265+
266+ t .Run ("module not found" , func (t * testing.T ) {
267+ repo := modulesfake.ModuleTemplatesRepo {
268+ ReturnCommunity : []kyma.ModuleTemplate {},
269+ }
270+ err := VerifyModuleExistence (ctx , moduleName , version , & repo )
271+ require .Error (t , err )
272+ require .Contains (t , err .Error (), "module test-module is not available in the catalog" )
273+ })
274+
275+ t .Run ("version not found" , func (t * testing.T ) {
276+ repo := modulesfake.ModuleTemplatesRepo {
277+ ReturnCommunity : []kyma.ModuleTemplate {
278+ {Spec : kyma.ModuleTemplateSpec {ModuleName : moduleName , Version : "2.0.0" }},
279+ },
280+ }
281+ err := VerifyModuleExistence (ctx , moduleName , version , & repo )
282+ require .Error (t , err )
283+ require .Contains (t , err .Error (), "community module test-module in version 1.0.0 does not exist. Available versions: 2.0.0" )
284+ })
285+
286+ t .Run ("version found" , func (t * testing.T ) {
287+ repo := modulesfake.ModuleTemplatesRepo {
288+ ReturnCommunity : []kyma.ModuleTemplate {
289+ {Spec : kyma.ModuleTemplateSpec {ModuleName : moduleName , Version : version }},
290+ },
291+ }
292+ err := VerifyModuleExistence (ctx , moduleName , version , & repo )
293+ require .NoError (t , err )
294+ })
295+
296+ t .Run ("version empty (any version is valid)" , func (t * testing.T ) {
297+ repo := modulesfake.ModuleTemplatesRepo {
298+ ReturnCommunity : []kyma.ModuleTemplate {
299+ {Spec : kyma.ModuleTemplateSpec {ModuleName : moduleName , Version : "2.0.0" }},
300+ },
301+ }
302+ err := VerifyModuleExistence (ctx , moduleName , "" , & repo )
303+ require .NoError (t , err )
304+ })
305+
306+ t .Run ("repo error" , func (t * testing.T ) {
307+ repo := modulesfake.ModuleTemplatesRepo {
308+ CommunityErr : errors .New ("repo error" ),
309+ }
310+ err := VerifyModuleExistence (ctx , moduleName , version , & repo )
311+ require .Error (t , err )
312+ require .Contains (t , err .Error (), "failed to retrieve community modules: repo error" )
313+ })
314+ }
315+
261316func getTestHttpServerWithResponse (response string ) * httptest.Server {
262317 return httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
263318 _ , _ = w .Write ([]byte (response ))
0 commit comments