package signins

import (
	"bytes"
	"io/ioutil"
	"net/http"
	"net/http/httptest"
	"reflect"
	"testing"

	px "github.com/GolangToolKits/go-http-proxy"
	lg "github.com/GolangToolKits/go-level-logger"
)

func TestLinkedInSignin_Authorization(t *testing.T) {
	// var p px.GoProxy
	var p px.MockGoProxy
	p.MockDoSuccess1 = true
	p.MockResp = &http.Response{
		Status:     "200",
		StatusCode: 200,
		Body:       ioutil.NopCloser(bytes.NewBufferString(`<html`)),
	}

	var l lg.Logger
	log := l.New()
	log.SetLogLevel(lg.AllLevel)

	r, _ := http.NewRequest("GET", "/loginUser/linkedIn", nil)
	w := httptest.NewRecorder()

	type fields struct {
		ClientID     string
		ClientSecret string
		AuthURL      string
		TokenURL     string
		RedirectURI  string
		proxy        px.Proxy
		Log          lg.Log
	}
	tests := []struct {
		name    string
		fields  fields
		resCode int
		w       *httptest.ResponseRecorder
	}{
		// TODO: Add test cases.
		{
			name: "test 1",
			fields: fields{
				ClientID:     "12345",
				ClientSecret: "12345",
				//proxy:        &p,
				Log: log,
			},
			resCode: 302,
			w:       w,
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			s := &LinkedInSignin{
				ClientID:     tt.fields.ClientID,
				ClientSecret: tt.fields.ClientSecret,
				AuthURL:      tt.fields.AuthURL,
				TokenURL:     tt.fields.TokenURL,
				RedirectURI:  tt.fields.RedirectURI,
				proxy:        tt.fields.proxy,
				Log:          tt.fields.Log,
			}
			ss := s.New()
			ss.SetProxy(&p)
			ss.Authorization(w, r)
			if tt.resCode != tt.w.Code {
				t.Fail()
			}
			// if res.Code != 0 {
			// 	t.Fail()
			// }
		})
	}
}

func TestLinkedInSignin_AccessToken(t *testing.T) {
	// var p px.GoProxy
	var p px.MockGoProxy
	p.MockDoSuccess1 = true
	p.MockResp = &http.Response{
		Status:     "200",
		StatusCode: 200,
		Body: ioutil.NopCloser(bytes.NewBufferString(`{
			"access_token": "AQXjDdPrhpD-kyXXOO5T_i2eyANn8NQIaFLlqc1fyCCOFiTGK36I_jBrvzClHeReNBPPTHJ_bGfC31nZGkzpd93_TfjEurhLeO3hpFQq-klXqr0RbPsDWIBQ77HlwaKx_62Bj1aBvsEciS493bd3DTUMSrgOPmWHaGKHRYecH4Lf-lpgWo35LS6ssFmvtljG1NwWuTaXYH1kSr6SxqUZKbp5eQkS3E0WpWkxc9ofEHyHrwIb0vHPbSOUrNr0huIkCoON3hrMPUhoWcO3bO_uP0mXRnzGHWwGG38Dh6ploXTBYIeDrq_6SKqExcS6ua_ITuRHKNtAYLunZlqKZefqXEYDyopE6Q",
			"expires_in": 5183999,
			"scope": "email,profile,w_member_social"
		}`)),
	}

	var l lg.Logger
	log := l.New()
	log.SetLogLevel(lg.AllLevel)

	type fields struct {
		ClientID     string
		ClientSecret string
		AuthURL      string
		TokenURL     string
		RedirectURI  string
		proxy        px.Proxy
		Log          lg.Log
	}
	type args struct {
		code string
	}
	tests := []struct {
		name   string
		fields fields
		args   args
		want   *TokenResponse
	}{
		// TODO: Add test cases.
		{
			name: "test 1",
			fields: fields{
				ClientID:     "12345",
				ClientSecret: "12345",
				//proxy:        &p,
				Log: log,
			},
			args: args{
				code: "AQQ6uLeyJLnPqHHctWoDicrjyRcVW8qMzjfuczZyh-vfm7i_luzBLthyQSuruP68yL8r7EaGVHARmxIKGvuLMAplSAL9_J3zb8_Y7abyqdjvrjEoNSXaA6s_gg47_I5UK2DKmwsZjLx_4nsnIeKNi0ENP2OnQQRpBZJgS_IAka_Rv7IxX21LxxjvuS-77kxDh_aynCHzBfWAAOSZdzc",
			},
			want: &TokenResponse{
				AccessToken: "AQXjDdPrhpD-kyXXOO5T_i2eyANn8NQIaFLlqc1fyCCOFiTGK36I_jBrvzClHeReNBPPTHJ_bGfC31nZGkzpd93_TfjEurhLeO3hpFQq-klXqr0RbPsDWIBQ77HlwaKx_62Bj1aBvsEciS493bd3DTUMSrgOPmWHaGKHRYecH4Lf-lpgWo35LS6ssFmvtljG1NwWuTaXYH1kSr6SxqUZKbp5eQkS3E0WpWkxc9ofEHyHrwIb0vHPbSOUrNr0huIkCoON3hrMPUhoWcO3bO_uP0mXRnzGHWwGG38Dh6ploXTBYIeDrq_6SKqExcS6ua_ITuRHKNtAYLunZlqKZefqXEYDyopE6Q",
				ExpiresIn:   5183999,
				Scope:       "email,profile,w_member_social",
			},
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			s := &LinkedInSignin{
				ClientID:     tt.fields.ClientID,
				ClientSecret: tt.fields.ClientSecret,
				AuthURL:      tt.fields.AuthURL,
				TokenURL:     tt.fields.TokenURL,
				RedirectURI:  tt.fields.RedirectURI,
				proxy:        tt.fields.proxy,
				Log:          tt.fields.Log,
			}
			ss := s.New()
			ss.SetProxy(&p)
			if got := ss.AccessToken(tt.args.code); !reflect.DeepEqual(got, tt.want) {
				t.Errorf("LinkedInSignin.AccessToken() = %v, want %v", got, tt.want)
			}
		})
	}
}

func TestLinkedInSignin_GetUserInfo(t *testing.T) {

	// var p px.GoProxy
	var p px.MockGoProxy
	p.MockDoSuccess1 = true
	p.MockRespCode = 200
	p.MockResp = &http.Response{
		Status:     "200",
		StatusCode: 200,
		Body: ioutil.NopCloser(bytes.NewBufferString(`{
			"sub": "q4k_55555",
    		"email_verified": true,
    		"name": "Robert",
    		"locale": {
        		"country": "US",
        		"language": "en"
    		},
    		"given_name": "Robert",
    		"family_name": "Roberts",
    		"email": "rroberts@gmail.com",
    		"picture": "https://media.licdn.com/dms/image/C5603AQGRApW88KjOCA/profile-displayphoto-shrink_100_100/0/1516940037267?e=1691625600&v=beta&t=Ibi46xLe0v7RvwvFcBmhhWWWdr19bQtOJR3ebyrIt-k"
		}`)),
	}

	var l lg.Logger
	log := l.New()
	log.SetLogLevel(lg.AllLevel)

	type fields struct {
		ClientID     string
		ClientSecret string
		AuthURL      string
		TokenURL     string
		UserInfoURL  string
		RedirectURI  string
		proxy        px.Proxy
		Log          lg.Log
	}
	type args struct {
		tk string
	}
	tests := []struct {
		name   string
		fields fields
		args   args
		want   any
	}{
		// TODO: Add test cases.
		{
			name: "test1 ",
			fields: fields{
				ClientID:     "12345",
				ClientSecret: "12345",
				proxy:        &p,
				Log:          log,
				UserInfoURL:  "/user",
			},
			args: args{
				tk: "122455555",
			},
			want: &UserInfoResponse{
				Sub:           "q4k_55555",
				EmailVerified: true,
				FirstName:     "Robert",
				LastName:      "Roberts",
				Email:         "rroberts@gmail.com",
				PictureURL:    "https://media.licdn.com/dms/image/C5603AQGRApW88KjOCA/profile-displayphoto-shrink_100_100/0/1516940037267?e=1691625600&v=beta&t=Ibi46xLe0v7RvwvFcBmhhWWWdr19bQtOJR3ebyrIt-k",
			},
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			s := &LinkedInSignin{
				ClientID:     tt.fields.ClientID,
				ClientSecret: tt.fields.ClientSecret,
				AuthURL:      tt.fields.AuthURL,
				TokenURL:     tt.fields.TokenURL,
				UserInfoURL:  tt.fields.UserInfoURL,
				RedirectURI:  tt.fields.RedirectURI,
				proxy:        tt.fields.proxy,
				Log:          tt.fields.Log,
			}
			if got := s.GetUserInfo(tt.args.tk); !reflect.DeepEqual(got, tt.want) {
				t.Errorf("LinkedInSignin.GetUserInfo() = %v, want %v", got, tt.want)
			}
		})
	}
}

func TestLinkedInSignin_GetUserPicture(t *testing.T) {
// var p px.GoProxy
var p px.MockGoProxy
p.MockDoSuccess1 = true
p.MockRespCode = 400
p.MockResp = &http.Response{
	Status:     "200",
	StatusCode: 200,
	Body: ioutil.NopCloser(bytes.NewBufferString(`[255 216 255 224 0 16 74 70 73 70 0 1 1 0 0 1 0 1 0 0 255 219 0 67 0 3 2 2 3 2 2 3 3 3 3 4 3 3 4 5 8 5 5 4 4 5 10 7 7 6 8 12 10 12 12 11 10 11 11 13 14 18 16 13 14 17 14 11 11 16 22 16 17 19 20 21 21 21 12 15 23 24 22 20 24 18 20 21 20 255 219 0 67 1 3 4 4 5 4 5 9 5 5 9 20 13 11 13 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 255 192 0 17 8 0 100 0 100 3 1 34 0 2 17 1 3 17 1 255 196 0 29 0 0 1 4 3 1 1 0 0 0 0 0 0 0 0 0 0 8 0 6 7 9 2 4 5 3 1 255 196 0 59 16 0 1 3 2 5 2 4 4 4 3 7 5 0 0 0 0 1 2 3 4 5 17 0 6 7 18 33 49 65 8 19 81 97 20 34 50 113 21 129 145 161 22 35 66 9 36 82 177 193 209 240 51 67 83 130 225 255 196 0 27 1 0 2 2 3 1 0 0 0 0 0 0 0 0 0 0 0 4 5 3 6 0 1 2 7 255 196 0 48 17 0 2 2 1 2 3 6 5 3 5 0 0 0 0 0 0 1 2 0 3 17 4 18 33 49 97 5 19 65 81 113 129 6 34 50 145 209 51 161 193 20 35 178 225 240 255 218 0 12 3 1 0 2 17 3 17 0 63 0 32 42 16 105 89 85 248 173 102 58 180 133 211 31 219 33 46 178 197 209 33 101 87 77 137 7 99 119 90 190 80 111 112 120 231 18 70 149 75 135 148 234 17 203 85 55 103 198 152 149 6 222 75 159 202 13 238 5 55 104 92 160 222 226 195 168 32 241 128 98 117 98 177 153 102 181 22 137 38 91 177 230 200 248 136 240 27 147 231 37 135 0 74 141 251 89 62 164 14 135 18 30 67 206 82 178 213 102 3 38 168 171 188 226 91 83 241 100 130 23 117 89 69 35 165 205 202 77 237 123 251 95 30 39 85 54 11 5 168 255 0 48 228 15 67 211 237 214 6 6 27 50 198 41 245 129 33 74 8 254 123 34 219 36 35 148 172 247 72 247 29 241 185 6 99 147 16 226 156 142 182 2 86 164 39 113 250 128 54 184 246 56 143 244 239 57 66 204 141 200 139 79 149 30 67 49 90 105 13 173 149 36 57 188 139 173 61 45 100 158 46 61 240 203 241 81 226 33 122 43 148 28 139 1 176 238 96 150 194 188 183 213 244 69 65 249 124 210 59 170 255 0 74 125 65 39 129 207 169 118 94 161 175 172 111 60 127 96 100 251 184 103 49 143 226 135 197 134 87 202 148 234 173 30 156 223 226 178 162 121 145 31 95 146 20 202 94 80 182 196 168 155 110 22 55 54 54 237 126 213 129 170 57 167 53 106 102 102 105 202 204 249 143 178 167 18 211 49 195 138 63 42 138 182 165 2 246 7 229 3 166 8 61 23 201 143 106 251 137 31 8 38 249 10 113 74 91 202 250 158 90 174 87 207 125 182 251 0 113 49 159 13 13 189 174 121 26 154 34 50 228 120 204 154 204 194 208 178 15 146 118 54 130 59 2 181 253 206 211 134 119 26 195 231 28 71 40 86 159 73 187 251 141 227 6 118 252 40 102 86 114 152 148 227 201 168 74 105 167 3 141 191 188 148 109 77 212 155 145 126 49 5 12 149 84 110 33 152 178 233 109 228 161 74 144 143 152 155 160 168 93 34 247 0 14 120 233 139 177 170 228 88 112 104 21 13 225 148 165 49 221 83 174 185 112 1 41 37 71 140 7 249 87 64 163 35 70 33 215 11 105 10 122 26 227 151 28 4 20 52 118 148 57 99 126 160 173 55 236 22 158 216 20 221 180 128 68 109 253 34 186 252 166 86 198 96 200 155 203 127 14 166 91 117 67 157 203 249 9 181 248 62 159 243 140 48 230 210 164 211 100 45 153 44 169 151 16 109 101 14 191 108 88 134 171 120 107 50 137 174 82 163 179 240 60 22 66 89 216 227 233 54 218 187 95 142 58 30 9 244 182 7 29 64 209 231 106 45 37 177 41 44 85 216 72 31 15 37 5 1 68 39 144 149 123 246 189 186 12 20 142 27 148 89 109 38 179 131 7 53 128 13 135 235 140 66 54 227 102 84 101 198 116 182 226 74 28 73 33 64 246 32 244 199 130 174 113 60 30 124 6 216 88 249 133 140 153 44 15 48 55 152 242 173 82 140 251 234 45 176 235 109 161 134 226 168 111 40 8 28 45 9 55 10 32 142 72 228 88 142 47 135 70 86 164 249 48 13 121 180 186 243 8 10 77 150 148 144 133 112 146 45 107 0 2 141 201 239 111 108 107 211 104 191 17 2 28 177 83 156 229 83 203 14 48 178 144 182 82 238 255 0 250 65 119 225 36 0 1 29 211 137 27 79 117 14 86 87 213 249 142 213 96 63 46 132 248 98 60 226 219 106 113 47 41 214 248 184 89 37 70 226 215 28 27 122 227 198 19 80 81 176 171 225 233 227 229 239 214 12 195 7 4 73 235 195 246 162 229 108 151 166 226 68 247 94 141 240 232 126 83 143 110 254 72 75 99 117 183 30 229 34 193 60 142 158 184 3 245 127 87 115 6 178 106 108 234 173 78 65 97 153 197 183 83 13 4 165 184 236 142 26 110 195 252 40 228 158 234 81 56 43 53 211 78 98 210 242 75 117 60 183 12 74 202 21 166 183 165 214 84 191 238 206 169 73 187 106 3 142 130 192 240 122 140 8 249 106 3 18 243 221 81 181 133 6 20 227 113 227 15 47 113 221 184 51 185 35 191 210 171 98 247 216 149 236 173 155 175 15 183 57 45 72 115 180 248 66 231 193 229 37 140 129 165 144 231 73 179 115 170 42 91 202 220 46 81 117 27 11 117 224 14 152 32 242 193 83 117 153 149 207 130 82 101 201 105 184 232 43 60 183 29 27 138 83 110 196 169 106 81 252 189 48 60 229 205 96 210 221 38 137 10 14 97 206 16 149 50 27 126 82 41 241 55 75 117 177 207 213 229 133 0 162 73 36 19 124 73 121 115 198 206 138 58 128 13 122 107 91 69 183 61 77 120 39 246 78 27 21 177 216 226 89 193 174 170 134 120 201 43 55 82 230 103 136 11 164 169 245 197 129 45 59 37 4 11 41 108 255 0 91 97 93 183 15 148 159 66 123 227 55 242 153 110 9 102 50 66 152 219 229 236 95 13 237 181 182 219 210 220 91 211 17 204 255 0 27 26 119 2 35 175 208 88 169 102 73 32 91 203 106 18 163 178 155 144 1 83 142 1 107 251 5 31 108 11 58 205 227 99 82 235 147 164 179 78 152 50 132 13 199 107 116 230 193 122 222 238 44 19 250 1 246 198 223 78 66 239 176 153 213 55 155 91 187 161 68 41 42 25 126 101 34 147 248 100 200 78 73 132 209 41 98 64 79 155 177 187 220 33 86 31 211 210 254 128 96 113 207 153 34 153 83 114 178 199 148 169 50 62 25 105 130 161 98 26 33 91 192 36 245 234 111 237 108 9 149 253 97 206 53 41 42 144 246 116 204 142 58 163 111 52 213 31 28 254 74 182 59 250 91 174 89 151 248 142 13 59 48 84 87 88 167 42 83 91 30 127 153 45 147 113 109 227 235 73 78 224 66 175 201 4 30 184 231 76 227 126 213 63 121 173 125 12 181 111 32 123 28 193 203 85 41 42 166 231 73 204 75 93 148 225 14 162 64 79 80 123 40 14 182 32 139 245 227 155 225 141 179 106 149 114 14 223 67 112 112 78 248 208 211 213 82 43 116 218 244 84 44 197 150 21 29 209 229 129 229 186 143 82 63 196 44 126 247 192 200 91 41 54 195 99 194 86 249 204 10 1 62 159 108 44 124 182 22 53 137 146 193 244 39 84 50 229 30 92 100 230 39 157 10 138 218 208 148 182 200 113 185 36 217 72 223 220 16 160 44 161 123 30 109 201 196 169 7 63 71 77 70 168 242 169 32 210 166 207 67 127 14 203 171 67 105 74 155 220 157 171 38 247 4 113 214 247 35 140 10 249 52 210 97 173 209 46 43 242 153 14 4 45 91 130 66 127 229 186 245 196 235 9 236 179 35 37 72 17 153 152 220 168 151 144 204 133 73 82 131 238 15 164 41 6 224 4 167 119 61 78 236 121 54 162 138 141 159 50 152 86 228 39 109 139 10 237 40 171 179 168 26 63 152 50 150 97 97 202 149 102 135 29 196 183 28 60 83 177 165 32 150 221 54 32 21 39 175 60 142 49 88 218 181 87 157 71 175 42 145 79 223 6 12 52 49 29 247 89 89 74 223 43 108 174 215 234 18 70 238 157 121 193 161 224 87 51 9 121 138 187 83 168 207 8 102 60 117 153 210 28 89 22 96 124 163 142 182 228 219 210 216 20 117 95 36 74 212 92 252 219 217 93 104 112 60 210 99 6 36 175 102 245 52 226 195 118 61 142 194 158 190 248 183 118 70 224 150 86 71 17 48 46 203 87 60 164 115 72 169 34 158 210 131 12 2 132 11 169 40 0 12 63 114 163 145 165 173 153 51 74 131 106 59 188 182 210 55 38 223 126 216 239 208 252 40 234 195 79 88 228 58 147 219 172 60 214 22 202 219 63 101 5 219 19 166 156 248 40 205 14 67 145 87 206 62 93 18 153 13 37 197 67 109 208 244 151 194 65 81 77 211 242 161 32 14 77 201 244 24 237 43 110 243 56 247 151 195 122 138 176 91 195 130 226 74 186 9 167 116 138 182 133 186 194 41 136 47 249 142 188 167 28 31 56 33 101 72 69 199 96 45 198 33 15 19 210 153 172 230 50 166 178 220 122 10 84 194 80 168 237 164 128 78 222 84 15 123 158 65 30 184 61 180 27 39 189 19 73 233 1 13 50 202 102 51 241 43 34 223 215 243 91 244 32 126 88 206 155 167 148 12 196 101 81 171 20 152 53 150 27 113 75 97 51 25 75 169 218 121 41 77 254 146 57 54 227 14 133 246 16 200 220 155 151 73 95 68 166 166 222 131 138 12 30 190 178 154 170 89 119 103 242 219 74 172 226 174 1 55 36 251 98 96 211 143 13 21 218 109 41 89 179 51 211 30 166 193 121 1 186 115 18 210 80 243 138 184 87 156 80 121 64 176 178 73 177 55 38 214 181 236 234 141 164 185 51 79 166 135 232 217 70 147 77 149 127 150 67 80 208 92 79 217 100 18 63 92 48 117 221 143 196 242 212 228 41 54 90 71 152 55 30 150 235 133 164 26 88 28 228 152 197 236 26 170 202 133 194 129 2 31 21 9 102 191 166 213 32 182 182 45 18 20 234 55 216 144 54 36 128 7 177 24 175 137 22 223 199 24 177 111 29 116 22 34 233 13 34 177 76 121 64 184 235 6 89 9 249 85 230 32 252 169 183 64 8 28 253 241 93 79 34 206 1 223 223 15 85 247 241 50 161 125 61 195 5 30 89 154 189 9 184 194 198 101 177 223 147 133 142 242 32 240 134 166 200 91 47 172 37 107 91 114 134 228 41 104 186 66 248 54 221 216 254 248 159 180 174 186 185 153 102 189 70 92 95 57 201 44 23 27 86 226 151 25 113 176 121 79 60 113 235 129 62 159 93 146 166 190 24 200 82 34 149 21 51 123 236 10 61 200 237 199 113 137 215 65 37 85 215 230 79 122 42 156 105 150 214 227 201 75 193 181 188 57 23 73 60 168 223 157 163 147 108 81 53 154 91 49 149 25 147 150 28 243 31 154 25 70 110 118 121 86 91 98 180 34 196 174 184 33 57 52 173 65 43 10 32 221 86 228 133 114 44 123 253 176 228 214 253 44 107 68 245 38 5 82 4 149 189 151 215 61 41 107 110 235 54 175 148 128 171 245 189 156 23 29 109 142 134 138 120 86 207 249 203 56 200 125 136 177 232 212 157 224 189 82 159 45 9 46 165 196 133 15 45 40 37 68 132 170 252 0 46 109 112 70 9 79 29 26 73 20 232 242 235 81 220 91 191 134 162 50 100 175 113 88 79 148 180 6 214 5 254 64 6 240 109 254 33 127 92 51 209 37 196 238 31 76 150 171 16 191 205 229 251 248 71 134 157 102 49 34 142 202 91 82 75 107 0 243 239 137 74 36 56 211 114 204 227 53 196 178 211 145 220 102 246 250 119 36 139 254 248 24 244 66 170 226 225 180 202 205 252 182 146 84 1 177 6 221 127 48 65 252 240 66 61 84 105 248 108 53 206 193 109 201 4 129 200 234 125 125 48 93 3 107 148 50 207 170 117 122 149 199 76 206 126 77 131 54 4 164 193 129 81 149 18 144 150 2 93 136 180 37 109 54 224 255 0 194 191 168 36 142 169 87 79 108 57 104 177 154 162 84 22 24 109 46 37 110 151 139 165 92 168 148 218 199 237 207 235 142 18 51 29 54 152 181 178 169 72 47 164 91 100 84 121 133 6 220 19 254 216 195 248 198 158 195 45 4 124 106 214 207 30 112 100 89 94 191 41 55 235 131 192 24 200 131 154 53 22 130 85 56 24 254 169 37 51 227 155 164 238 41 186 111 223 16 150 160 199 18 233 51 27 88 187 134 233 0 139 223 142 152 127 82 179 130 101 73 105 130 29 66 95 54 97 114 145 176 169 93 199 173 250 99 87 56 80 86 169 74 90 81 194 199 152 157 167 144 123 142 112 53 213 247 172 165 100 52 88 116 161 145 196 172 111 28 58 150 152 122 125 68 211 183 82 149 212 80 240 152 225 0 143 37 148 21 37 9 247 220 121 30 128 125 176 11 173 189 203 38 194 248 39 60 122 87 97 212 181 222 100 56 161 59 169 177 26 140 242 146 0 5 195 117 159 211 120 255 0 131 3 35 139 9 81 56 102 23 111 8 130 219 13 141 147 233 53 138 82 13 137 28 122 225 99 208 148 168 220 164 223 219 11 27 144 199 74 191 10 18 146 37 213 66 99 130 55 53 14 238 42 221 192 226 223 190 31 249 91 86 104 25 61 228 42 13 53 218 142 245 163 106 37 77 116 37 5 60 39 229 0 114 123 237 56 107 209 116 97 233 37 42 168 87 160 67 73 224 165 165 249 138 255 0 65 137 67 41 105 198 72 203 110 54 250 165 59 83 156 130 20 151 92 87 9 35 184 72 24 231 108 129 153 125 97 81 225 191 87 229 177 150 39 9 141 212 41 200 146 60 198 219 143 53 41 111 121 54 60 47 113 182 208 61 49 63 228 157 84 203 110 174 91 89 149 248 190 90 197 148 137 112 215 41 149 160 142 82 16 130 5 250 245 22 192 95 3 60 83 105 209 210 219 1 210 132 142 18 220 117 255 0 182 61 228 106 74 75 123 83 22 105 191 55 12 145 254 103 24 42 30 50 14 240 231 132 45 180 254 161 74 151 153 235 45 210 230 25 81 88 37 12 173 72 45 23 27 63 65 216 121 28 88 127 235 137 215 224 211 152 233 241 161 199 117 180 54 69 214 226 58 174 192 0 142 58 119 39 21 205 149 181 177 204 167 93 98 75 177 164 199 134 255 0 247 71 150 187 88 5 3 181 86 4 158 8 253 206 11 255 0 15 90 177 77 159 13 154 107 147 89 118 98 55 171 119 152 147 100 238 189 207 175 22 191 185 199 13 90 22 234 99 138 53 15 221 140 242 6 77 217 51 79 35 210 153 85 227 52 148 220 240 18 47 124 58 149 150 218 116 37 40 179 92 146 175 144 2 71 167 76 121 38 168 144 195 78 49 202 29 177 227 173 189 113 210 122 66 67 59 144 237 190 91 238 189 177 176 170 6 216 115 95 125 132 49 105 205 254 26 137 25 208 167 82 151 2 58 110 236 125 177 21 234 182 120 57 114 172 35 160 149 161 214 138 147 112 110 77 192 182 238 223 253 196 159 152 115 27 52 234 82 228 188 232 8 75 69 192 173 195 183 174 4 74 229 90 118 117 204 85 26 211 174 31 194 99 220 68 100 255 0 220 34 255 0 205 191 91 17 200 31 159 124 70 229 105 66 210 52 15 125 129 15 51 42 139 86 170 210 171 90 137 154 42 19 9 50 164 212 228 56 178 123 146 226 191 211 12 151 21 186 224 14 163 18 158 171 82 17 252 79 86 243 18 80 182 106 15 54 163 223 105 86 225 127 201 67 12 99 151 119 165 75 75 253 7 1 73 183 61 198 10 218 79 31 56 173 176 172 87 202 112 119 218 195 165 176 177 190 237 6 73 113 91 66 74 111 96 119 90 255 0 174 22 53 131 229 53 145 8 214 103 180 159 165 182 211 126 137 74 64 39 29 38 43 34 48 184 219 230 31 110 152 97 49 53 65 96 238 231 160 24 75 173 152 237 147 37 72 11 236 134 205 241 128 19 202 5 137 32 187 152 213 183 220 31 223 28 234 142 110 110 154 193 117 231 20 163 253 45 167 170 143 166 35 217 121 182 75 105 220 220 100 173 180 245 27 201 80 30 182 195 255 0 66 52 154 169 226 59 59 49 64 162 169 17 143 148 94 151 62 89 42 106 43 64 128 84 64 23 38 228 0 145 212 158 194 231 27 177 211 79 89 182 230 218 163 137 51 165 172 177 0 8 238 209 60 155 95 213 54 228 102 226 86 197 50 151 41 182 26 138 147 116 249 138 77 247 171 212 139 164 254 120 46 50 150 148 67 205 244 184 149 58 51 166 155 53 178 165 61 21 163 229 236 115 161 40 80 229 6 253 185 30 216 125 248 121 240 210 246 136 228 188 223 149 42 18 218 171 66 122 107 114 160 212 82 223 150 94 109 81 194 20 20 139 157 170 74 146 71 83 212 27 243 141 108 160 94 202 121 197 246 20 118 183 37 101 64 142 44 224 54 87 235 214 216 174 91 170 91 200 186 147 149 60 189 37 187 69 74 26 123 179 192 255 0 49 249 145 115 93 115 47 180 41 181 198 146 167 219 59 91 121 106 216 84 144 45 200 181 175 212 220 113 127 75 225 254 214 96 98 161 17 59 39 69 67 118 182 208 189 214 54 224 27 119 198 204 88 16 243 21 61 23 8 120 166 196 110 22 87 229 141 154 100 22 41 136 176 97 181 17 209 75 104 21 126 189 240 202 171 206 209 152 29 149 96 224 72 207 61 192 169 102 72 169 104 60 182 160 148 242 130 157 133 126 231 219 166 25 149 92 188 33 229 55 16 210 13 144 130 110 161 107 216 119 247 56 156 43 208 93 168 133 41 100 132 17 107 14 254 223 108 55 243 253 49 166 178 242 26 108 11 184 2 0 72 224 3 198 1 212 187 88 122 8 203 68 169 81 4 243 50 168 60 75 233 125 66 151 90 70 96 76 98 154 69 78 204 58 245 190 84 72 9 85 129 244 186 64 35 215 105 196 141 164 254 2 33 234 77 14 129 152 91 205 43 139 65 175 81 23 37 166 130 65 145 18 120 64 74 146 229 197 148 214 244 175 144 82 171 91 238 74 127 17 249 10 142 175 11 89 238 61 74 92 106 122 203 77 63 9 233 74 9 188 166 215 189 164 167 185 82 172 82 0 228 238 61 175 134 63 128 109 249 251 75 234 240 231 173 76 174 53 73 200 4 37 1 96 52 184 254 96 31 53 238 66 148 161 126 45 198 43 253 169 218 154 202 180 140 218 118 218 107 96 164 243 200 96 8 247 201 255 0 179 1 122 40 107 219 121 231 199 243 43 102 173 77 149 69 168 200 128 250 82 137 17 150 166 93 74 133 136 90 84 82 174 188 245 24 88 187 70 180 31 38 52 15 196 208 233 117 9 10 55 92 153 180 184 206 186 179 208 110 82 155 36 240 0 252 176 176 48 248 226 188 113 160 253 255 0 212 13 180 36 19 181 184 74 87 145 41 207 157 41 59 69 237 199 124 121 197 86 242 1 29 78 22 22 61 77 70 34 143 9 245 182 194 102 20 142 59 224 239 254 205 26 68 104 77 230 218 131 41 40 145 34 108 70 23 99 193 72 66 149 254 106 56 88 88 168 124 90 113 217 22 122 175 249 8 78 155 245 68 176 218 195 33 116 105 4 18 133 165 42 41 82 122 140 64 249 142 11 109 190 211 164 149 188 28 77 220 85 174 73 22 36 216 97 97 98 183 216 188 116 204 58 255 0 18 201 167 228 100 131 146 102 60 148 180 216 89 176 79 94 253 176 248 92 181 160 4 89 42 72 176 27 133 240 176 177 100 211 19 137 38 167 234 156 138 244 231 27 140 132 35 106 83 186 220 12 113 51 90 138 224 71 191 63 39 250 225 97 99 171 62 163 237 50 175 211 95 121 26 234 246 93 166 230 156 251 164 52 138 196 38 106 116 169 181 215 90 145 14 82 3 141 56 159 130 113 86 41 60 117 72 231 175 95 83 137 87 40 233 102 83 210 152 141 211 50 141 14 53 6 3 178 149 37 200 241 119 109 83 138 65 5 71 113 38 246 0 126 88 88 88 160 118 235 54 214 92 240 221 248 130 48 29 232 61 63 51 165 36 159 57 92 225 97 97 99 206 137 227 37 159 255 217]`)),
}

var l lg.Logger
log := l.New()
log.SetLogLevel(lg.AllLevel)

	type fields struct {
		ClientID     string
		ClientSecret string
		AuthURL      string
		TokenURL     string
		UserInfoURL  string
		RedirectURI  string
		proxy        px.Proxy
		Log          lg.Log
	}
	type args struct {
		url string
	}
	tests := []struct {
		name   string
		fields fields
		args   args
		want   []byte
	}{
		// TODO: Add test cases.
		{
			name: "test 1",
			fields: fields{
				proxy:        &p,
				Log:          log,
			},
			args: args{
				url : "https://media.licdn.com/dms/image/C5603AQGRApW88KjOCA/profile-displayphoto-shrink_100_100/0/1516940037267?e=1691625600&v=beta&t=Ibi46xLe0v7RvwvFcBmhhWWWdr19bQtOJR3ebyrIt-k",
			},
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			s := &LinkedInSignin{
				ClientID:     tt.fields.ClientID,
				ClientSecret: tt.fields.ClientSecret,
				AuthURL:      tt.fields.AuthURL,
				TokenURL:     tt.fields.TokenURL,
				UserInfoURL:  tt.fields.UserInfoURL,
				RedirectURI:  tt.fields.RedirectURI,
				proxy:        tt.fields.proxy,
				Log:          tt.fields.Log,
			}
			if got := s.GetUserPicture(tt.args.url); len(got) ==0 {
				t.Errorf("LinkedInSignin.GetUserPicture() = %v, want %v", got, tt.want)
			}
		})
	}
}
