Exemplo n.º 1
0
    public async Task <IActionResult> RunAsync([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "range/{hashPrefix}")] HttpRequest req, string hashPrefix, CancellationToken cancellationToken = default)
    {
        if (!hashPrefix.IsHexStringOfLength(5))
        {
            return(req.BadRequest("The hash format was not in a valid format"));
        }

        try
        {
            PwnedPasswordsFile entry = await _fileStorage.GetHashFileAsync(hashPrefix.ToUpper(), cancellationToken);

            return(new FileStreamResult(entry.Content, "text/plain")
            {
                LastModified = entry.LastModified
            });
        }
        catch (FileNotFoundException)
        {
            return(req.NotFound());
        }
        catch (Exception ex)
        {
            _log.LogError(ex, "Something went wrong.");
            return(req.InternalServerError());
        }
    }
Exemplo n.º 2
0
    public async Task Returns_ok_given_valid_hashprefix()
    {
        string validHashPrefix = "ABCDE";
        var    returnHashFile  = new PwnedPasswordsFile(Stream.Null, DateTimeOffset.UtcNow, "*");
        var    mockStorage     = new Mock <IFileStorage>();

        mockStorage.Setup(s => s.GetHashFileAsync(validHashPrefix, CancellationToken.None)).ReturnsAsync(returnHashFile);

        var           function       = new Functions.Range(s_nullLogger, mockStorage.Object);
        var           context        = new DefaultHttpContext();
        IActionResult?actualResponse = await function.RunAsync(context.Request, validHashPrefix);

        Assert.IsType <FileStreamResult>(actualResponse);
    }