mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
// Copyright 2013 M-Lab
 | 
						|
//
 | 
						|
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
// you may not use this file except in compliance with the License.
 | 
						|
// You may obtain a copy of the License at
 | 
						|
//
 | 
						|
// http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
//
 | 
						|
// Unless required by applicable law or agreed to in writing, software
 | 
						|
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
// See the License for the specific language governing permissions and
 | 
						|
// limitations under the License.
 | 
						|
 | 
						|
// The digest package provides an implementation of http.RoundTripper that takes
 | 
						|
// care of HTTP Digest Authentication (http://www.ietf.org/rfc/rfc2617.txt).
 | 
						|
// This only implements the MD5 and "auth" portions of the RFC, but that covers
 | 
						|
// the majority of avalible server side implementations including apache web
 | 
						|
// server.
 | 
						|
//
 | 
						|
 | 
						|
package digest
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
var cred = &credentials{
 | 
						|
	Username:   "Mufasa",
 | 
						|
	Realm:      "testrealm@host.com",
 | 
						|
	Nonce:      "dcd98b7102dd2f0e8b11d0f600bfb0c093",
 | 
						|
	DigestURI:  "/dir/index.html",
 | 
						|
	Algorithm:  "MD5",
 | 
						|
	Opaque:     "5ccc069c403ebaf9f0171e9517f40e41",
 | 
						|
	MessageQop: "auth",
 | 
						|
	method:     "GET",
 | 
						|
	password:   "Circle Of Life",
 | 
						|
}
 | 
						|
 | 
						|
var cnonce = "0a4f113b"
 | 
						|
 | 
						|
func TestH(t *testing.T) {
 | 
						|
	r1 := h("Mufasa:testrealm@host.com:Circle Of Life")
 | 
						|
	if r1 != "939e7578ed9e3c518a452acee763bce9" {
 | 
						|
		t.Fail()
 | 
						|
	}
 | 
						|
 | 
						|
	r2 := h("GET:/dir/index.html")
 | 
						|
	if r2 != "39aff3a2bab6126f332b942af96d3366" {
 | 
						|
		t.Fail()
 | 
						|
	}
 | 
						|
 | 
						|
	r3 := h(fmt.Sprintf("%s:dcd98b7102dd2f0e8b11d0f600bfb0c093:00000001:0a4f113b:auth:%s", r1, r2))
 | 
						|
	if r3 != "6629fae49393a05397450978507c4ef1" {
 | 
						|
		t.Fail()
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestKd(t *testing.T) {
 | 
						|
	r1 := kd("939e7578ed9e3c518a452acee763bce9",
 | 
						|
		"dcd98b7102dd2f0e8b11d0f600bfb0c093:00000001:0a4f113b:auth:39aff3a2bab6126f332b942af96d3366")
 | 
						|
	if r1 != "6629fae49393a05397450978507c4ef1" {
 | 
						|
		t.Fail()
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestHa1(t *testing.T) {
 | 
						|
	r1 := cred.ha1()
 | 
						|
	if r1 != "939e7578ed9e3c518a452acee763bce9" {
 | 
						|
		t.Fail()
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestHa2(t *testing.T) {
 | 
						|
	r1 := cred.ha2()
 | 
						|
	if r1 != "39aff3a2bab6126f332b942af96d3366" {
 | 
						|
		t.Fail()
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestResp(t *testing.T) {
 | 
						|
	r1, err := cred.resp(cnonce)
 | 
						|
	if err != nil {
 | 
						|
		t.Fail()
 | 
						|
	}
 | 
						|
	if r1 != "6629fae49393a05397450978507c4ef1" {
 | 
						|
		t.Fail()
 | 
						|
	}
 | 
						|
}
 |