Skip to content

Commit

Permalink
#228 Throw meaningful exception when GetNodeFromLink() is used with a…
Browse files Browse the repository at this point in the history
… folder share or GetNodesFromLink() with a file share
  • Loading branch information
gpailler committed Mar 19, 2023
1 parent 7fa231c commit 768516c
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
16 changes: 16 additions & 0 deletions MegaApiClient.Tests/NodeOperations.cs
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,22 @@ public void GetNodeFromLink_WithFileAttributes_Succeeds(string fileLink)
Assert.Equal(2, node.FileAttributes.Length);
}

[Theory]
[JsonInputsDataAttribute("FolderLink")]
public void GetNodeFromLink_WithFolderLink_Throws(string folderLink)
{
var exception = Assert.Throws<ArgumentException>(() => Context.Client.GetNodeFromLink(new Uri(folderLink)));
Assert.Equal("Uri must be a valid file share starting with /file/. Use GetNodesFromLink() for folder share (Parameter 'uri')", exception.Message);
}

[Theory]
[JsonInputsDataAttribute("FileLink")]
public void GetNodesFromLink_WithFileLink_Throws(string fileLink)
{
var exception = Assert.Throws<ArgumentException>(() => Context.Client.GetNodesFromLink(new Uri(fileLink)));
Assert.Equal("Uri must be a valid folder share starting with /folder/. Use GetNodeFromLink() for file share (Parameter 'uri')", exception.Message);
}

[Theory]
[JsonInputsDataAttribute("ZipFileLink")]
public void GetNodeFromLink_WithoutFileAttributes_Succeeds(string fileLink)
Expand Down
14 changes: 12 additions & 2 deletions MegaApiClient/MegaApiClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -660,7 +660,12 @@ public INode GetNodeFromLink(Uri uri)
{
if (uri == null)
{
throw new ArgumentNullException("uri");
throw new ArgumentNullException(nameof(uri));
}

if (uri.AbsolutePath.StartsWith("/file/") == false)
{
throw new ArgumentException("Uri must be a valid file share starting with /file/. Use GetNodesFromLink() for folder share", nameof(uri));
}

EnsureLoggedIn();
Expand All @@ -686,7 +691,12 @@ public IEnumerable<INode> GetNodesFromLink(Uri uri)
{
if (uri == null)
{
throw new ArgumentNullException("uri");
throw new ArgumentNullException(nameof(uri));
}

if (uri.AbsolutePath.StartsWith("/folder/") == false)
{
throw new ArgumentException("Uri must be a valid folder share starting with /folder/. Use GetNodeFromLink() for file share", nameof(uri));
}

EnsureLoggedIn();
Expand Down

0 comments on commit 768516c

Please sign in to comment.