@@ -0,0 +1,1494 @@
+// Copyright (c) 2016 Petter Wintzell%0A%0Apackage com.albroco.barebonesdigest.compatibility;%0A%0Aimport com.albroco.barebonesdigest.DigestAuthentication;%0A%0Aimport org.junit.Test;%0A%0Aimport static com.albroco.barebonesdigest.DigestTestUtils.assertHeadersEqual;%0A%0A/**%0A * Tests that the digest algorithm is compatible with an Axis M1054 camera.%0A */%0Apublic class AxisM1054CompatibilityTest %7B%0A%0A  @Test%0A  public void testQopAuthAuthenticationMd5Algorithm() throws Exception %7B%0A    // Tests an actual challenge and compares it to a correct response%0A    DigestAuthentication auth =%0A        DigestAuthentication.fromWwwAuthenticateHeader(%22Digest realm=%5C%22AXIS_00408CE5B4AE%5C%22, %22 +%0A            %22nonce=%5C%2200000127Y5696118a2b01283063278e2d8c2c43eed9dc4%5C%22, %22 +%0A            %22stale=FALSE, %22 +%0A            %22qop=%5C%22auth%5C%22, %22 +%0A            %22Basic realm=%5C%22AXIS_00408CE5B4AE%5C%22%22);%0A%0A    String expectedResponse = %22Digest username=%5C%22root%5C%22,realm=%5C%22AXIS_00408CE5B4AE%5C%22,%22 +%0A        %22nonce=%5C%2200000127Y5696118a2b01283063278e2d8c2c43eed9dc4%5C%22,uri=%5C%22/axis-cgi/jpg/image%22 +%0A        %22.cgi%5C%22,response=%5C%22d7d5c3a6c28614aa27d1c2a1231acb5f%5C%22,cnonce=%5C%22fd7e8e85093d0ea9%5C%22,%22 +%0A        %22qop=auth,nc=00000001%22;%0A%0A    auth.username(%22root%22)%0A        .password(%22pass%22)%0A        .getChallengeResponse()%0A        .clientNonce(%22fd7e8e85093d0ea9%22)%0A        .firstRequestClientNonce(%22fd7e8e85093d0ea9%22);%0A%0A    String actualRespons = auth.getAuthorizationForRequest(%22GET%22, %22/axis-cgi/jpg/image.cgi%22);%0A%0A    assertHeadersEqual(expectedResponse, actualRespons);%0A  %7D%0A%7D%0A

Add compatibility test with Axis M1054 camera